系统设计中的可扩展性、可用性与容错性
1. 可扩展性
1.1 无状态和有状态服务
HTTP 是无状态协议,使用它的后端服务易于横向扩展。无状态的 HTTP 后端与可横向扩展的数据库读取操作相结合,是讨论可扩展系统设计的良好起点。不过,对共享存储的写入操作是最难扩展的。
1.2 基本负载均衡器概念
每个横向扩展的服务都使用负载均衡器,常见的负载均衡器类型如下:
- 硬件负载均衡器:一种专用物理设备,用于在多个主机之间分配流量,价格昂贵,从几千美元到几十万美元不等。
- 共享负载均衡器服务(LBaaS):即负载均衡即服务。
- 安装了负载均衡软件的服务器:常见的有 HAProxy 和 NGINX。
在系统设计中,通常不需要在系统图中明确画出负载均衡器,因为它是隐含的,画出并讨论它可能会分散对其他组件和服务的注意力。
1.3 四层和七层负载均衡器
- 四层负载均衡器:在传输层(TCP)运行,根据 TCP 流中前几个数据包提取的地址信息做出路由决策,不检查其他数据包的内容,仅能转发数据包。
- 七层负载均衡器:在应用层(HTTP)运行,具备以下能力:
- 负载均衡/路由决策:基于数据包的内容。
- 身份验证:如果缺少指定的身份验证头,可返回 401。
- TLS 终止:数据中心内的流量安全要求可能低于互联网流量,进行 TLS 终止(HTTPS 转 HTTP)可消除数据中心主机之间的加密/解密开销。但如果应用要求数据中心内的流量加密,则不进行 TLS 终止。
超级会员免费看
订阅专栏 解锁全文

被折叠的 条评论
为什么被折叠?



