一、介绍
主要用于有多个服务器的情况下,服务器启动后回向注册中心注册。当有客户端上线时,客户端通过服务编号,从注册中心得到此服务的所有服务器列表,然后选择性能最优的服务器连接。
二、服务发现需求分析
2.1服务发现的主要目的:
- 帮助客户端发现性能良好的服务器。
- 支持多个服务器在线。
- 客户都进行服务请求,并在多个在线服务器中进行选择。
- 客户端对服务器的选择可以实现:“负载均衡”。
- 服务发现支持服务器的“热插拔”。
2.2服务发现的核心是:注册中心
2.3注册中心的功能
1.服务器注册。
2.服务器下线。
3.向客户端提供服务列表。
2.4服务器的功能
1.向注册中心注册
2.下线。
3.响应客户端的服务性能检测。
2.5客户端的功能
1.向注册中心请求服务器列表。
2.定时刷新服务器列表。
3.和服务器建立连接,检测服务器性能(心跳检测)。
4.服务器选择。
三、详细过程描述
3.1图描述
3.2过程描述
1.当有服务器启动是时候,服务器通过自己编写的C-S框架和注册中心通信,并向注册中心注册。
2.注册中心把连接到的服务器放到Map里保存起来。
3.当有客户端请求服务连接时,客户端根据服务编号向注册中心发出请求。
4.注册中心返回该服务编号对应的所有服务器。
5.客户端接收到服务器列表后,把这个列表交给另一个线程负责维护。
6.这个线程负责定时连接注册中心,不断刷新服务器列表。
7.同时这个线程负责服务器性能的检测,判断最优服务器。
8.然后客户端和最优建立服务器连接。
9.如果连接失败,在和列表里的下一个服务器建立连接。
注:这里服务器和注册中心是长连接,其余连接都是短连接。
四、源代码
内有详细注释
[GitHub] https://github.com/AiunCode/ServiceDiscovery