软件架构:从方法论的角度。
在项目中遇到问题时再具体解决,属于实用主义思维的做法。
高并发、高可用和由此带来的数据一致性问题:“显性问题”
第一,利用分布式系统的特性不断地分拆,把大系统拆小,各个击破,降低风险;
第二,小步快跑,快速迭代。
隐性问题
系统的可重用性、可扩展性、可维护性等。
一个系统由于设计问题导致研发人力的投入和时间成本的增加,往往无法显性地衡量。
“隐性问题”比“显性问题”的影响更大,因为它会让技术拖累业务,当有新需求的时候,系统无法跟随业务快速变化。
对于一个系统来说,可能既面临高并发、高可用的技术问题,又面临复杂的业务问题,所以如何处理两者的关系,打通技术和业务的任督二脉。
架构是一种综合能力,而不是某一方面的技能。
一个全面的解决方案、方法论、成体系的设计思维。
什么是架构
架构是针对所有重要问题做出的重要决策。
五花八门的架构师职业
架构师职业分类
借业务架构和技术架构的融合,来建立一种系统化的思维方式和学习方法。
这种系统化的思维方法既可以帮助开发人员形成系统化的方法论。
架构的分类
把软件系统自底往上分层。
第一层:基础架构
基础架构指云平台、操作系统、网络、存储、数据库和编译器等。
第二层:中间件与大数据平台
(1)中间件架构。例如分布式服务中间件、消息中间件、数据库中间件、缓存中间件、监控系统、工作流引擎和规则引擎等。
(2)大数据架构。例如开源的Hadoop生态体系,Hive、Spark、Storm、Flink等。
第三层:业务系统架构
(1)通用软件系统。例如最常用的办公软件、浏览器、播放器等。
(2)离线业务系统。例如各种基于大数据的BI分析、数据挖掘、报表与可视化等。
(3)大型在线业务系统。例如搜索、推荐、即时通信、电商、游戏、广告、企业ERP 或CRM等。
· 对于第三层的划分并不是绝对的,通用性软件和业务软件的界限不是泾渭分明的。
一个业务系统随着技术的进步,很多功能将被通用化、标准化,最终变成了一个通用系统。通用化的过程是一个技术不断进步的过程,也是一个使用门槛不断被降低的过程。
还没有评论,来说两句吧...