一 CAP理论:
Consistency 一致性 (顾名思义确保数据一致,不允许出现两台及以上服务上数据不一致)
Availability 可用性 (在集群中一部分节点故障后,是否还能响应客户端的读写请求)
Partition tolerance 容错性 (允许出错率的大小,允许出错率大则程序可以正常执行不会报错)
三角形定理,三者只可以满足2者。不要去浪费时间去解决满足三者 这个是不可能是实现的。从业务的角度上考虑满足两者就好。
二 BASE 理论:
基本可用: 当出现未知问题时 查询由1s变成2s 降级页面 (当前访问量过多)
软状态: (状态机)待支付、交易处理中、交易成功、交易失败
最终数据一致性: 基于MQ生产、消费 。 如果出现数据丢失就需要人工维护
三 领域驱动设计中的概念
领域:专业的业务流程处理
领域建模:DDD (De-bug -DDrivne Development)
1 界限上下文
2 实体、值对象(context)、领域服务、聚合根、资源....
实体:对象的唯一标识
值对象:不需要唯一标识描述 类似上下文传递内容 他是个值对象
领域服务:不同的领域,每个领域提供对应的服务,可供外部调用。
集合根:可以理解为全局中的唯一标识,实体是局部唯一标识,聚合根是全局唯一标识。
资源:提供了基础设施的查询,和聚合化服务,关心领域类的模型,是介于领域和数据库层之间的分层。而不是封装数据库层。
分布式高可用设计:
1 避免单点故障
a) 负载均衡技术(failover/选址/硬件负载)
b)热备(Linux HA)
c)多机房(同城灾备,异地灾备)
2 应用的高可用设计
a) 故障监控(系统监控,CPU、内存),链路监控,日志监控)自动预警
b)应用的容错设计 (服务降级处理、限流处理)自我保护
c)数据量(数据分片、读写分离)
3 分布式架构的可伸缩设计
a)垂直伸缩 单独服务器上硬件扩容 加内存加存储
b) 水平伸缩 增加服务器
#### 多补充一个CDN 解决不同地区的ip 发出的请求得到服务器负载响应的分发内容处理(内容分发)
CDN可以缓存静态数据(html、css、img、js等静态文件)
比如客户端是在广州发出的请求 CND可以解析DNS 进行里负载 判断里用户最近的CDN服务器将内容进行返回给客户端。具体的使用可以多找找资料进行了解