基于RMI和C-S的服务发现

一、介绍

主要用于有多个服务器的情况下,服务器启动后回向注册中心注册。当有客户端上线时,客户端通过服务编号,向注册中心得到此服务的所有服务器列表,然后选择性能最优的服务器连接。

二、服务发现需求分析

2.1服务发现的主要目的:

  1. 帮助客户端发现性能良好的服务器。
  2. 支持多个服务器在线。
  3. 客户都进行服务请求,并在多个在线服务器中进行选择。
  4. 客户端对服务器的选择可以实现:“负载均衡”。
  5. 服务发现支持服务的“热插拔”。

2.2服务发现的核心是:注册中心

2.3注册中心的功能

1.服务器注册。
2.服务器下线。
3.向客户端提供服务列表。

2.4服务器的功能

1.向注册中心注册
2.下线。
3.响应客户端的服务性能检测。

2.5客户端的功能

1.向注册中心请求服务器列表。
2.定时刷新服务器列表。
3.和服务器建立连接,检测服务器性能(心跳检测)。
4.服务器选择。

三、详细过程描述

3.1图描述

3.2过程描述

1.当有服务器启动是时候,服务器向注册中心注册。
2.注册中心把连接到的服务器放到Map里保存起来。
3.当有客户端请求服务连接时,客户端根据服务编号向注册中心发出请求。
4.注册中心返回该服务编号对应的所有服务器。
5.客户端接收到服务器列表后,把这个列表交给另一个线程负责维护。
6.这个线程负责定时连接注册中心,不断刷新服务器列表。
7.同时这个线程负责服务器性能的检测,判断最优服务器。
8.客户端得到该服务器和注册中心连接。
9.如果连接失败,在和列表里的下一个服务器建立连接。
注:这里服务器和注册中心是长连接,其余连接都是短连接。

四、源代码

内有详细注释
Git https://github.com/AiunCode/ServiceDiscovery

你可能感兴趣的:(Java后台)