如何设计一个高并发的分布式系统架构

何为分布式:分布式就是将系统根据业务拆分成不同的子系统,部署在不同的机器上,因此要做成分布式的系统首先要经历下面几个步骤

  1. 系统拆分;将系统根据业务场景拆分为多个子系统,子系统之间的通信可以使用成熟的RPC框架,例如 Dubbo 来搞定
  2. 系统拆分之后,可以另每一个系统使用一个数据库,这样多个数据库的情况下也能接受更多的并发的请求
  3. 引入缓存;使用数据库硬抗流量访问显然是不符合实际的,因此就需要引入缓存,另大量的读操作走缓存,写操作去走数据库,这样可以抗住更多的请求
  4. 引入缓存之后就要考虑缓存使用不当而带来的问题,例如缓存穿透,缓存雪崩,双写一致等问题
  5. 使用MQ;当业务量进一步扩大,这时候缓存虽然能够命中绝大多数的请求,但是当有大量的写请求直接落到数据库上,也是会给数据库造成很大的压力,这个时候就可以在数据库前搞一个MQ,使所有的直接落入数据库的请求来走MQ,使用MQ做一个异步削峰,来慢慢的处理请求。提升并发性能
  6. 当数据库中的数据量过于庞大之后,这时候尽管是没有并发的操作,也会使查询写入的速率变慢,这时候就需要考虑将数据库轻量化,做分库分表操作,这样不仅能够抗住更多的并发请求,也能加快SQL的执行效率
  7. 引入分库分表之后就要考虑数据迁移,数据分发等问题,如何做到不停机完成数据迁移或者停机迁移
  8. 引入分库分表之后在想提升性能,那么就需要做读写分离,将写库作为数据库的主数据,读库做为从库,是请求数据进一步分流
  9. 读写分离需要考虑的问题就是数据同步,数据的主从一致性等
  10. 引入elasticSerach搜索
    如何设计一个高并发的分布式系统架构

参考:石杉架构笔记