分布式系统的意义
- 升级单机处理能力的性价比越来越低。
单机的处理能力主要依靠CPU,内存,磁盘。通过更换硬件做垂直扩展的方式来提升性能,成本会越来越高。 - 单机处理能力存在瓶颈。
CPU,内存都会有自己的性能瓶颈,硬件的发展速度和性能是有限制的。 - 稳定性和可用性这两个指标很难达到。
单机系统存在可用性和稳定性的问题,这两个指标又是我们必须解决的。
重要概念
分布式: 三个厨师做一道菜,洗菜,切菜,炒菜分工合作着来;这三个厨师的关系是分布式。
集群: 炒菜的厨师一个不够人手,多找几个厨师都炒菜,这多个炒菜厨师的关系是集群。
节点: 节点是指一个可以独立按照分布式协议完成一组逻辑的程序个体。在具体的项目中,一个节点表示的是一个操作系统上的进程)
比如 洗菜,切菜,可作为单独的节点独立部署;
副本机制: 在不同节点上持久化同一份数据,当出现一个节点的数据丢失时,可以从副本上读取到数据。数据副本是分布式系统中解决数据丢失问题的唯一手段。直白的说就是备份的,替身。
中间件: 在应用层和操作系统之间提供服务 ,能让我们的系统开发人员更方便的处理通信和输入输出,开发人员更关注自己所需要处理的领域。
单表数据量大:
垂直分库:单独部署(商品,用户,支付等单独部署,各个db独立)
水平拆分:大表拆小表,分片;
好处:减少IO操作,提高性能;
分布式架构的难点:
- 三态 (超时状态)
- 分布式事务 (多个存储节点下的数据库一致性问题)
- 负载均衡 (领域服务层的负载,服务发现)
- 一致性 (数据被分散或复制到不同的机器上,如何保证各台主机之间的数据一致性将成为一个难点)
- 故障的独立性 (某个节点故障–需要考虑故障隔离)