分布式系统的知识结构总结

构件分布式系统的目的是增加系统容量,提高系统可用性。转换成技术方面就是完成下面两件事

  • 大流量处理。所谓大流量处理就是利用集群技术将大量的并发请求分发到不同机器上

  • 关键业务保护。提高系统可用性,所以需要将故障隔离起来,防止雪崩效应引起的整体服务无法正常服务。

说白了就是干两件事,一是提高系统架构的吞吐量,服务更多的并发流量;二是为了提高系统的稳定性,让系统的可用性更高;下面从系统的性能系统的稳定性来说一下在分布式下需要完成的事情。

系统性能

系统性能可以从下面五个方面入手来做整体优化,他们分别是:

  • 缓存
  • 负载均衡
  • 异步
  • 数据分区
  • 数据镜像

缓存

从前台到后台再到数据库,都有缓存。缓存是提高服务响应速度的最直接手段,在分布式环境中,可以使用MemCache、redis来构件分布式缓存。目前从市面上看来大家都更喜欢redis,这其中需要一个Proxy来做缓存的分片和路由。

负载均衡

负载均衡是水平拓展的关键技术,它可以是多台机器共同分担一部分流量请求。

异步

异步这块主要是通过异步队列对请求做排队处理,这边有很多业务场景,比如可以把前端并发请求的峰值给“削平”了,让后端通过自己能够处理的速度来处理请求,进而来增加系统的吞吐量,但这通常比较适用于实时性不是很高的场景;引入消息队列后,可能会出现消息丢失的问题,这就被迫我们不得不去做消息的持久化,持久化会造成有“状态”的节点,从而增加服务调度的难度。

数据分区/镜像

数据分区和数据镜像可以放在一起,数据分区就是将数据按照某种固定的方式分成多个区。比如按照地区来分,这样需要一个数据路由的中间件,不同地区来访问不同区域的数据库,来减少数据库的压力。但是这样会造成跨库的join和跨库的事务异常复杂。而数据镜像是将数据复制成多分,这样就不需要数据中间件了,可以在任意节点上进行读写, 内部会进行自动数据同步,但是数据镜像中最大的问题就是数据一致性问题。

对于一般公司来说,在初期会使用读写分离的数据镜像方式,然而后期会采用分库分表的方式。


分布式系统的知识结构总结
http://example.com/2019/05/09/2019-05-09-分布式系统的知识结构总结/
Author
Hoey
Posted on
May 9, 2019
Licensed under