1分布式架构类型
1.1. SOA(存在中心)
有序、复用、高效
关注系统集成,快速组合出新的业务服务
- 通过ESB进行连接(有序)
- 系统服务化(复用)
- 业务服务化(通过ESB组装系统服务,达成业务服务化)
1.2. 微服务架构 dubbo
关注服务治理,服务分离
- 通过服务实现组件化
- 按业务能力来划分服务和开发团队
- 去中心化
- 基础设施自动化(DevOps、自动化部署)
关心流量控制,熔断,监控
2. 分布式架构理论
2.1 CAP
C
是一致性,所有节点上的数据时刻保持同步,会导致(每台机器的不可用概率会被放大)可用性
A
是可用性,每个请求都能接收一个响应,无论响应成功或失败,会导致不一致
P
是分布式容忍性,系统应该持续提供服务,即使系统内部(某个节点分区)有消息丢失,是必选的
强一致场景:12306卖票
最终一致场景:银行转账
CAP仅适用于原子读写的 NoSQL 场景中,并不适用于数据库系统
分布式(数据库分片或分库存在的多个实例上)前提下,CAP 理论并不适合数据库事务
2.2 BASE
XA 事务虽然保证了数据库在分布式系统下的 ACID (原子性、一致性、隔离性、持久性)特性,但同时也带来了一些性能方面的代价,对于并发和响应时间要求都比较高的电商平台来说,是很难接受的
Basically Available(基本可用)
Soft-state(软状态)
Eventually consistent(数据的最终一致性)
即使无法做到强一致性,但每个应用都可以根据自身业务特点,采用适当的方式来使系统达到最终一致性
3. 分布式架构下高可用
3. 1 避免单点
- 负载均衡(去中心化)(无状态、有状态)
- 热备HA
- 多机房(容灾 同城/异地)
3. 2 应用高可用
- 降级
- 限流
- 缓存
- 故障监控(系统健康(CPU),JVM健康,调用链监控,日志监控)
- 数据拆分(分库分表,读写分离)
3. 3 可伸缩性
- 横向伸缩(业务可以配置 增加、减少)
- 纵向伸缩(应用状态通过第三方服务器保证)
- 增加服务器
- 提升硬件
3.4 加快反馈(预热)
CDN 作用是把用户需要的内容分发到离用户最近的地方进行响应,这样用户能够快速获取所需要的内容。
CDN 本质上就是一种网络缓存技术
最适合的是那些不会经常变化的内容,比如图片,JS 文件,CSS文件
3.5 防止大面积业务故障
使用灰度发布
新应用进行分批发布,逐步扩大新应用在整个及集群中的比例直到最后全部完成
根据自己的配置,来将用户的流量导到新上线的系统上,来快速验证新的功能(A/B Test)
在接入层进行配置信息判断,命中目标的切到新应用的服务器上
网友评论