为什么要用分布式
当一个系统能够通过nginx去部署集群和负载均衡,并且配合了lvs和keepalived,实现了高可用和高性能的集群负载均衡,非常流行的负载均衡解决方案,当一个架构进阶为集群之后,对于项目来说还是一个个体,如果请求的时间的比较长,就要使用分而治之的手段来拆解系统,引入分布式技术,或者把系统拆分成多个子系统,形成一个分布式系统,分布式的运算能力要远远超过单个计算机节点它所执行的运算能力。
什么是分布式架构
- 不同的业务(功能模块)分散部署在不同的服务器,为单个服务进行了降压,提升了整体的运算能力
- 每个子系统负责一个或者多个不同的业务模块
- 对于子系统来讲,服务之间是可以相互交互与通信
- 分布式系统设计对用户透明
- 每一个子系统可以部署为集群分布式系统架构,这样整个系统就是分布式的集群系统,集群和分布式相互的一个集合,微服务属于分布式系统的一种
分布式架构优点
- 业务解耦
- 系统模块化,可重用化
- 提升系统并发量
- 优化运维部署效率
分布式架构缺点
- 架构复杂
- 部署多个子系统复杂
- 系统之间通信耗时
- 新人融入团队缓慢
- 调试复杂
设计原则
- 异步解耦,分布式把耦合的模块进行了一个解耦,所以相互进行通信的时候,如果说能够使用异步,就使用异步,因为异步的效率要比同步好,异步需要使用消息队列
- 幂等一致性,在使用分布式的时候,用户的一个请求可能会进过多个子系统,这时候就要保证用户查询还是增删改,数据的一致性是需要得到保证的,用户的同一个操作最终的结果是一致的,尤其对于增加和修改操作
- 拆分原则,可以通过业务去拆,
- 融合分布式中间件,一个分布式系统的强大,不仅仅是靠拆,还是需要分布式的一些中间件需要这样的技术来配合,像Redis可以作为缓存,zookeeper作为协调,mq作为消息队列,这些东西都可以融入到项目中去
- 容错高可用