HSF 实现原理
HSF 实现原理
提供服务的流程
- server启动时候向ConfigServer注册
- client启动时候向ConfigServer请求list
- client缓存list,发现不可用的server,从缓存中remove
- ConfigServer通过心跳包维护可用server的list
- list有更新的时候,ConfigServer通过带version的报文通知client更新
- 需要远程调用的时候,则client通过缓存的list,根据当前的调用规则,选择适当的server服务器进行调用
HSF的实现方式可以理解为是C/S的架构,但是和传统的C/S架构相比还是有很大的不同,HSF没有真正的服务器,每个应用都可以成为服务的调用方和提供方。具体工作方式如下:
ConfigServer:远程调用对端的地址就是由ConfigServer 来推送的,这样用户只需要配置自己的服务端或者消费端,不需要对自己的地址进行管理。
Diamond:持久化的配置中心,用于配置服务调用的规则。
服务:服务是调用方和提供方交流的依凭,一般是一个接口,表示一个业务行为以及相关的数据含义。通过使用HSFApiProviderBean能够暴露一个服务,将机器的地址注册到configserver,并且能够通过12200端口进行服务提供,通过HSFApiConsumerBean能够包装出一个客户端,它是服务接口的一个代理,并且它从ConfigServer上订阅了服务的地址列表,能够在这个列表上完成随机调用,做到负载均衡与HA((High Available,高可用性群集)。
网络通信:HSF的底层网络通信是使用netty框架实现的,是基于epoll的NIO的网络通讯框架,HSF在此使用的是长连接,通过合理的服务部署及负债均衡,基本不存在I/O方面的限制。
Proxy:主要负责接口的代理。基本上所有的RPC框架都会用到代理模式,需要注意的是HSF的代理层还进行了软负载和单元化的处理。
Remoting:是HSF的应用层协议,定义了报文格式,各个字段的含义等信息。
Processor:主要是处理HSF自身的业务逻辑,包括埋点、限流、鉴权等。