上QQ阅读APP看书,第一时间看更新
3.1.2 核心流程介绍
1.服务发布
将服务提供者的实现类(例如ProductServiceImpl)及其配置属性参数包装成ServiceBean代理类,ServiceConfig类拿到代理类及拼接完成的参数URL信息后,再通过ProxyFactory工厂类的getInvoker函数生成ProductServiceImpl的AbstractProxyInvoker实例,以完成服务到Invoker的转化。
协议处理类(例如DubboProtocol)的export函数将Invoker类转换成Exporter类,并创建RPC Server端实例(例如NettyServer)、监听指定端口、接收客户端的请求。
Registry类型的Invoker注册服务的名字和URL参数信息到注册中心。
2.服务消费
ReferenceBean的getObject函数产生服务消费者及其配置信息的代理类,ReferenceConfig在createProxy函数中连接注册中心,发现远程服务并通过Protocol的refer函数把服务提供者实例转化成Invoker。
在Invoker中利用Proxyfactory函数剥离出服务提供者的代理信息、创建RPC客户端实例、连接服务提供端、接收调用返回的结果。