RCP的负载均衡(笔记二)

一般情况下,负载均衡的策略有下面两种:

一、代理服务

在这种情况下,客户端不知道服务端的存在,客户端所有的请求全都发送至代理服务,代理服务将接收到的请求分发给服务端,并且实现公平的负载算法。

缺点:客户端不知道服务端的存在,且客户端不可信,代理服务会影响到服务本身的吞吐量。

优点:在中间件中做监控等拦截操作十分方便。

分类:L3/L4(传输级别),L7(应用程序级别)

1、L3/L4:服务器终止TCP连接并打开另一个连接到所选的后端,L3/L4级别的负载均衡按设计只做很少的处理,与L7级别的负载均衡相比的延迟会更少,而且更便宜,因为它消耗更少的资源。

2、L7:在客户端连接到服务端端连接之间搞一个应用来做中间人,在L7负载平衡中,负载均衡服务终止并解析协议。负载均衡服务可以检查每个请求每个请求并根据请求内容分配后端。

选择:

1、这些连接之间的RPC负载变化很大,建议使用L7。

2、存储或计算相关性很重要:建议使用L7,并使用cookie或类似的路由请求来纠正服务端。

3、设备资源少:建议使用L3/L4。

4、对延迟要求很严格:建议使用L3/L4。

二、客户端负载均衡

在这种情况下,客户端知道服务端的存在,由客户端选择对应的服务端,并且客户端可以从后端服务器中自己总结出一份负载的信息,实现负载均衡算法。

优点:高性能,消除了第三方的交互。

缺点:客户端会很复杂,因为客户端要跟踪服务器负载和健康状态,客户端实现均衡负载算法。多语言的实现和维护负担也很麻烦,并且客户端需要被信任。

三、使用选择

1、客户端和服务器之间非常高的流量,且客户端是可信的,建议使用‘笨重’的客户端 或者 Lookaside 负载均衡。

2、传统设置——许多客户端连接到代理背后的大量服务,需要服务端和客户端之间有一个桥梁,建议使用代理式的负载均衡。

3、微服务- N个客户端,数据中心有M个服务端,非常高的性能要求(低延迟,高流量),客户端可以不受信任,建议使用 Lookaside 负载均衡。

原文地址:https://www.cnblogs.com/libinhyq/p/15065042.html