架构分为三种:
每一层架构都在flow上一层架构,为上一层架构提供支持,并为下一层的架构提供指导。
举个例子,应用架构的服务拆分,一定flow业务架构。由业务架构的职责领域,划分子域(常说的二级域等),从而进行服务拆分。
另外,越接近底层,则越具有通用性,也越常见,掌握的难度也越低。毕竟通用,就意味着很容易进行知识传播。
我们日常见到的技术公众号,推送的内容大部分都是应用架构的东东。因为这些东东才是多数人需要掌握的,并且也是具有普适意义的。
而在应用架构中,质量治理还是非常重要的一块儿。无论是日常工作,还是面试,亦或者是同行沟通,应用架构的质量治理都是常客。举个例子,日常开发中,我们经常需要评估程序的性能,并为性能优化做出努力。面试中,性能优化是常客,系统可用性也是常常被提及。同行沟通,往往都是在一起diss接手项目的性能多么糟糕,扩展性是多么差。囧
原本想好好打磨打磨,但是由于最近组织关系调整,暂时无心整理这个。所以,先放出来啦。对部分细节感兴趣的小伙伴,可以私聊或者艾特我。
系统质量属性,代表着架构的核心维度,各个维度的取舍体现了架构师的tradeoff能力。
系统质量属性有很多,划分&组织方式也有很多(如运行时&编译时),这里只是谈一谈日常较为常见的内容。
优化注意:首先得确定性能瓶颈在哪里
但仍然需要思考,这些方法的定位。需要涵盖服务端问题排查与系统优化涉及的性能优化手段
高性能编码,可以借鉴:高性能编程论述
- 集群架构(CA):应用集群、中间件集群、数据集群(包括RAID)
- 分布式架构(AP):分布式应用、分布式中间件、分布式数据库。引申出一致性(Base理论)、脑裂(Lease机制->合理的time设置)等问题业务逻辑保护:- 预防:数据备份(热冷备份、全增量备份)、严谨的应用与架构设计、N与N-1版本共存、变更审核
- 发现:监控工具、自动化脚本、应用与系统的正常行为描述、应用与系统的异常行为侦测(告警)
- 修复:应用与系统回滚、一键恢复(回复初始状态)、自动恢复、快速数据恢复异地容灾:- 容灾级别:应用、数据、SAN网络、存储
- DRP规划:流程、演练、BCP
- 容灾方案:成本随数据中心的数量增加而降低。企业Set单元化逻辑保护技术:备份、快照、CDP连续数据保护、事件溯源(架构)
架构设计方案:限流、降级、熔断、超时&重试、限制(限流、超时等)&隔离(线程池隔离、信号量隔离)
PS:
美团CAT应用监控:

可伸缩性的刻画在与伸缩速率(多久达到目标伸缩数)、伸缩成本(ROI曲线)、伸缩限制(伸缩上限)三个方面。
PS:
由于存储本身自带状态,所以伸缩性较弱。如分布式数据库,往往都需要有计划的,进行扩缩容(扩缩容、切换计划、精卫同步等)。
但由于Redis有一致性哈希空间的分片方案,所以Redis是具备伸缩性的。不过,需要进行合理的槽点分配(避免请求不均->热点。注意,槽点变动带来的事件风暴,控制风暴大小(保留安全量,确定IO阈值等))
PS:
PS:
扩展!=伸缩。伸缩是运行时质量属性
场景:秒杀&抢购->热点业务、热点数据
思路:微服务伸缩->网络引流、系统资源、基础设施
安全基本原则CIA:
安全评估方法:
PS:
安全框架:
网络韧性,在数学的简单定义是,要使一个网络分崩离析、丧失原有功能,需要被除掉的节点数占节点总数的比例。
PS:
AiR-ViBeR: Exfiltrating Data from Air-Gapped Computers via Covert Surface ViBrAtIoNs
Mordechai Guri教授提出了许多诸如此类的物理安全漏洞问题。
ATT&CK向安全白银时代进军:统一语言,重装上阵【open-ata】
自身对黑客行为的了解:渗透-提权-后门...
ATT&CK
方法论:
架构扩展立方体:X轴:水平复制(无脑复制;可用性);Y轴:功能拆分(分割责任、功能、数据;隔离;与领域划分相关);Z轴:特征分割(对业务透明;提供诸如优先级、就近等服务)
组织扩展性:沟通链路计算、六个披萨理论、
个人理解,组织扩展性提高了沟通效率,进而提高了内聚主题(团队目标等)下,团队思考的有效连接,从而迸发出许多创意。可能这也是spotify为什么会成功。
流程扩展性:CMMI软件成熟度模型
个人理解,CMMI软件成熟度模型,实质一种精细化的过程。这也是我们业务的发展过程。
百度百科: CMMI共有5个级别,代表软件团队能力成熟度的5个等级,数字越大,成熟度越高,高成熟度等级表示有比较强的软件综合开发能力。 CMMI一级,执行级。在执行级水平上,软件组织对项目的目标与要做的努力很清晰,项目的目标可以实现。但是由于任务的完成带有很大的偶然性,软件组织无法保证在实施同类项目时仍然能够完成任务。项目实施能否成功主要取决于实施人员。 CMMI二级,管理级。在管理级水平上,所有第一级的要求都已经达到,另外,软件组织在项目实施上能够遵守既定的计划与流程,有资源准备,权责到人,对项目相关的实施人员进行了相应的培训,对整个流程进行监测与控制,并联合上级单位对项目与流程进行审查。二级水平的软件组织对项目有一系列管理程序,避免了软件组织完成任务的随机性,保证了软件组织实施项目的成功率。 CMMl三级,明确级。在明确级水平上,所有第二级的要求都已经达到,另外,软件组织能够根据自身的特殊情况及自己的标准流程,将这套管理体系与流程予以制度化。这样,软件组织不仅能够在同类项目上成功,也可以在其他项目上成功。科学管理成为软件组织的一种文化,成为软件组织的财富。 CMMI四级,量化级。在量化管理级水平上,所有第三级的要求都已经达到,另外,软件组织的项目管理实现了数字化。通过数字化技术来实现流程的稳定性,实现管理的精度,降低项目实施在质量上的波动。 CMMI五级,优化级。在优化级水平上,所有第四级的要求都已经达到,另外,软件组织能够充分利用信息资料,对软件组织在项目实施的过程中可能出现的次品予以预防。能够主动地改善流程,运用新技术,实现流程的优化。
解决方案:
架构扩展立方体:
思考 Q:除了状态剥离外,有状态应用如何进行扩展 A:功能拆分,以及特征分割(貌似Session的剥离也可以按照这个思路) Q:除了状态剥离外,有状态应用如何进行水平复制?
质量治理涉及的流程,可以参照集团的安全生产(如《安全生产指南》)。
质量流程
流程:
安全生产:
核心:可监控、可灰度、可回滚
容量预估、【核心】、复盘、快速止血、
PS:不站在架构角度,而是站在编码角度,可读性是很重要的。