系统设计1

系统设计1

从少量用户到上百万的用户, 系统设计的变化

单机服务

当一个系统只有少量用户时, 单台服务器就可以支撑这些用户的使用.
一般的结构都是客户端–>后端服务器–>数据库
请添加图片描述

扩展

如果用户数量上来, 单机系统无法在支持用户使用时, 这时候就需要考虑扩展系统
扩展系统的方式有两种:

  1. 纵向扩展
  2. 横向扩展
    纵向扩展: 不改变当前结构, 对系统的硬件进行提升. 比如给服务器添加更好的CPU和内存等.
    横向扩展: 改变单机结构, 添加更多的服务器来处理任务.

负载均衡

在使用的用户变多, 请求数量提升, 超过单台web服务器的加载限制, web服务器就会出现响应变慢或者连接失败的情况.这时候可以需要使用负载均衡来处理这个问题.使用负载均衡技术可以添加多台web服务器,
通过在客户端和服务端中间添加一个负载均衡器来分流用户的请求以减轻服务器的压力.
在这里插入图片描述

数据库复制

单台服务器可以使用负载均衡横向扩展为n台服务器.
但是数据库依然是一台的话, 大量的请求也会对数据库造成负担. 类似web服务器, 数据库也可以进行横向扩展, 由单库变为多库.
数据库一定是有状态的, 所以变为多库后, 就需要一种数据同步机制来保持多个数据库之间数据的一致性问题.
数据库的一致性分为 3 种,严格程度依次递减:

  1. 强一致性(Strong consistency):写完之后,立即就能读到
  2. 最终一致性(Eventual consistency):写完之后,保证最终能读到
  3. 弱一致性(Weak consistency):写完之后,不一定能读到
    多库之间同步机制称为replication(复制), 例如在向数据库实例A中写入数据后

复制方式

  1. 异步复制
  2. 同步复制
  3. 半同步复制

おすすめ

転載: blog.csdn.net/sunday2018/article/details/121582968