【成为架构师2-7】TCP负载均衡,长连接的负载均衡策略

系列文章是博主对沈剑的《架构师训练营》分享内容的个人笔记总结,原内容公众号“成为架构师”。

1 单体架构TCP连接与HTTP的负载均衡

单机架构
在这里插入图片描述
使用简单的TCP直连

http负载均衡

http负载均衡通常使用反向代理来实现,这在前面的文章中已经进行了阐述

2 客户端负载均衡(内置集群)

客户端负载均衡就是在客户端维护一个域名列表,当要发起TCP连接的时候,使用选定的策略选择其中一个域名,通过dns-server的域名解析得到tcp服务器的ip
在这里插入图片描述
高可用如何保持

客户端需要自己制定重连机制,当发现选择域名的tcp-server

问题

  1. 多了一次dns解析,速度下降(手机端尤为明显)
  2. dns劫持的安全风险

上述问题可以通过ip直连来解决,也就是客户端保存的不是域名列表,而直接是tcp-server的外网ip

但这一方案的核心问题是:无法进行扩展,如果新增加了tcp-server需要修改客户端

所以将负载均衡策略会有诸多的问题

3 服务单负载均衡(静态IP列表)

每一次访问tcp-server之前先访问一个新增的http服务器来获取tcp-server的ip
在这里插入图片描述
这一web-server将向客户端返回一个可用的tcp-server的ip

高可用方案

如何保证高可用呢?对于客户端负载均衡策略来说,客户端能够知道tcp-server不可用了而选择新的tcp-server,这里同理客户端也可以重新请求一次web-server来获取tcp-server,但是它还有可能返回不可用的tcp-server,严重浪费资源,所以必须要有机制来保证tcp-server的状态对web-server来说是可知的

服务状态上报

在这里插入图片描述
这有一个明显的缺点就是出现了反向依赖,tcp-server不应该依赖一个只是作为获取其ip的简单服务器,它应该只关心自己的业务,对于它的状态是否可用应该由属于这一范畴的事物来维护

服务状态拉取

在这里插入图片描述
由web-server去主动的获取各个tcp-server的状态,监听它们的可用状态,以及是否过载,完全地承担负载均衡的职责


上一篇回顾:【成为架构师2-6】CDN:就近访问,缓解网络拥塞
下一篇更精彩:持续更新中…

發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章