• 什么是软件的架构设计?
  • 发布于 2个月前
  • 241 热度
    0 评论
一、架构本质思考
1.1、什么是架构?

1.2、架构就在生活中


假如你是食堂大妈,如何低成本解决高峰回收的阻塞?
假如你是车站保安,如何低成本解决春运进站的并发?
假如你是电工师傅,如何低成本解决异常电流的危害?

举例子如下:


二、业务架构方法论
2.1、战略驱动的顶层架构

2.2、战略设计(子域划分)
为什么要分子域?
1、拆解难题: 通过领域的细分,逐步缩小问题域,降低业务理解和实现的复杂度。
2、区别对待: 区分不同子域功能的属性和重要性,投入不同的资源建设。

2.3、战术设计(领域建模)

2.4、案例:仓储子域建模过程

三、系统架构方法论
3.1、系统拆分过程

3.2、系统演进过程
3.2.1、单体架构-应用服务器和数据库一个服务器

3.2.2、单体架构-应用服务器和数据库进行分离

3.2.3、引入本地和分布式缓存

3.2.4、Nginx 负载均衡

3.2.5、数据库读写分离

3.2.6、数据库按业务分库

3.2.7、大表拆分小表

3.2.8、多个 Nginx 负载均衡

3.2.9、DNS 机房负载均衡

3.2.10、NOSQL 和搜索引擎

3.2.11、拆分微服务

3.2.12、容器化技术

四、技术架构方法论
4.1、良好的技术架构应该是什么样子?

4.2、可靠性策略
4.2.1、分仓隔离---管控危机
解释: 让损失处于局部
举例: MQ 多个 topic,数据库防雪崩等,病毒的隔离区
原则: 减少故障的蔓延范围

4.2.2、冗余---狡兔三窟
解释: 冗余指的是多重保险,浪费是为了可靠
举例: 主备数据库,集群,异地多活等……
原则: 凡事和数据相关的应该保持双份


4.2.3、降级---断尾求生
解释: 丢车保帅,牺牲边缘功能,保全核心功能。
举例: 日志降级,风控降级,弱依赖降级……
原则: 在核心业务收到威胁的时候,如果非核心业务有拖累的情况,果断抛弃非核心业务。 !

4.2.4、兜底---最后屏障
解释: 最后的防护手段。
举例: 商场电梯防坠落网,走兜底逻辑,技术上也有很多类似的场景设计

4.2.5、回滚---原路撤退
解释: 善于用兵者给自己留下退路
举例: 发布应用,一定要留下可用版本,一旦线上有问题,可以回滚
原则: 好的架构师,任何时候都会留下退路


4.3、拓展性策略
4.3.1、解藕---井河无犯
解释: 由于性质有较大差异,不同的性质需要分开对待。同一个事物的两个或者
 多个方面矛盾激化,以至于不可调和,通过分离来消除矛盾
举例: 前后端分离
原则: 业务 VS 数据、核心&非核心

4.3.2、异步---事件驱动
解释: 异步通过应答方主动提醒,释放了请求方的时间
举例: AIO,MQ
原则: 核心流程和非核心流程之间多用异步,降低了核心流程的风险

4.3.3、插件---随意组合
解释: 插件化的是为了更灵活的组合,适用变化
举例: 流程引擎
原则: 接口标准化
流程引擎: 业务流程的拓展,快速响应
规则引擎: 代替 IF- ELSE,可配置化


4.4、高性能策略
4.4.1、集群分进合击
解释: 集群就是众人拾柴火焰高,集群里面每个点都是微不足道,组合在一起就非常强大。
举例: 服务器集群


4.4.2、缓存未雨绸缪
解释: 把获取代价较大的资源提前准备好。
举例: 线程池、redis
原则: 遇到需要频繁实时用较大代价获取资源的情况,优先考虑缓存


4.4.3、并行多管齐下
解释: 并行的本质就是利用多块资源同时满足多件事情
举例: 一个功能里面多个查询逻辑,为了提高性能,可以并行查询
原则: 尽量将不必要的串行优化为并行


4.4.4、并发统筹方法
解释: 并发与并行的本质区别在于,并发存在资源竞争,本质上仍然是串行,只不过将资源利用效率提高
举例: 多线程
原则: 由于存在资源竞争,所以并发不是越多越好,每个系统根据自己的并发能力去设计

4.5、可维护性策略
4.5.1、监控及时感知
解释: 及早监控到已经发生的风险,并能预警
举例: 运维监控系统
原则: 1、核心服务要有操作记录和监控

 2、监控到的风险及时预警

4.5.2、修复自我痊愈
解释: 在感知的基础上,系统能够自我恢复正常。
举例: 人体的免疫系统,能够自我修复。Dubbo 注册中心,断开重连,业务上失败重试(幂等)
原则: 自愈的前提是能够感知

4.6、安全性策略
4.6.1、脱敏/加密秘不示人
解释: 增加非相关人获取私密信息成本
举例: 项目采购招投标文件要转机需要密码解密操作,其他人不能看到

4.6.2、认证报上名来
解释: 你得让我相信你就是你,可是你凭什么说你就是你?
举例: Token,验证码,人脸识别。
原则: 认证前的唯一标识。

4.7、降成本策略
4.7.1、复用他山之石
解释: 整合一切资源,可以快速满足业务目标。
举例: 基础能力平台,组件库。
原则: 不要重复造轮子。

五、架构的表达方式
5.1、4+1 视图

5.2、架构设计原则


用户评论