0. 好多游戏都给我一种在打工的感觉…
好久没有写文章了,hhh
1. 分布式CAP原理
Consistency 数据一致性(数据原子性)
所有节点访问同一份最新的数据副本
Availablity 服务可用性
每一个操作总能在一定时间范围内返回结果
Partition-torlerance 分区容错性
数据被分布储存到不同的服务器上,无论什么情况,服务器都能被正常访问
任何分布式系统均无法兼顾三者,只能同时满足两点
CA
由于需要兼顾CA,那么事务相关的数据将被放在一台机器上
故无法兼顾P
CP
由于兼顾CP,因此事务相关的数据被分不到不同的机器上
因此如果某一个分区故障了,则其相关服务将收到影响,故无法兼顾A
AP
并非完全放弃C,只是放弃了数据的强一致性
因为数据分布到不同机器上,并且要兼顾A,那么此时还要兼顾C的话,就无法保证服务的可用性
故无法兼顾C
对比项 | Zookeeper | Eureka |
---|---|---|
CAP | CP | AP |
支持集成 | Dubbo、sc | sc |
key-value存储 | Y | N |
接口支持 | 客户端 | http等多语言 |
watch实现方法 | 订阅 | 轮询 |
集群监控 | N | 基于metrics |
2.AKF系统拆分
afk服务拆分X轴扩展:
afk服务拆分Y轴扩展:
afk服务拆分Z轴扩展:
X轴:
水平复制完整的服务
通过增加机器数量解决问题
Y轴:
基于功能模块划分
服务数量多的时候,调用关系容易复杂,这时候会将服务全部注册到网关来治理
SOA
Z轴:
按照数据分区
划分出来的子系统相互隔离,但又各自都是完整的
3. 更多架构设计
前后端分离
略
无状态服务
将有状态的服务(数据缓存、session等)设计为无状态的计算类服务(分布式存储)
此时,业务服务将成为一个个的无状态的计算节点
按需伸缩、动态增删节点
无需考虑缓存数据的同步问题