Pigeon发布流程

来源:互联网 发布:淘宝开零食店赚钱吗 编辑:程序博客网 时间:2024/05/23 02:03
Pigeon是什么我在这里就不介绍了 详细参见 dianping/pigeon: RPC framework of DIANPING

一.发布入口

bean id="" class="com.dianping.dpsf.spring.ServiceRegistry" init-method="init" lazy-init="false">        <property name="port" value="4000"/>        <property name="services">            <map>                <entry key="" value-ref=""/>            <entry key="" value-ref=""/>            </map>        </property>

如果需要发布pigeon服务,那么通过上面的配置文件你可以完成这样一件事情

这里简单介绍下配置参数

bean id  是服务发布之后,容器通过id调用服务class    是服务注册的主类map      则是暴露的服务列表

二.服务配置

ServiceRegistry 初始化方法

两个关键的对象ServerConfig , ProviderConfig

ServerConfig主要是配置服务,例如 端口号,工作线程数等与具体服务无关的信息

ProviderConfig则是提供具体的服务信息,一个ProviderConfig对象对应着上面的bean id ,并持有ServerConfig对象

注意点:ProviderConfig中会持有一个serviceInterface对象,也就是说服务暴露只允许单接口,如果你的服务实现了两个接口,那么最终暴露出去的也只能是一个接口。

配置完成后就到了服务发布的流程

三.服务发布

Pigeon的服务发布是通过PublishPolicy这一对象完成

发布主流程


3.1ServiceMethodFactory 本地方法缓存

通过ServiceMethodFactory完成服务方法和方法需要的参数列表的缓存

上面注意到ingoreMethods,因为Java中所有对象都是继承Object对象的,所以存在一些toString等无用方法,通过ignoreMethods方法过滤掉

3.2服务提供

ProviderBootStrap.startup()

通过启动一个Netty服务器,每一个服务通过对应一个Server ,每个Server对应一个ProviderConfig。

ProviderBootStrap 变量

因为pigeon是基于http的所以这里是httpServer ; serversMap则是name,server的缓存

3.3服务发布


主要通过curatorClient来实现服务的注册 (CuratorClient是zk的一个辅助库),通过zk集群中注册节点来完成服务的注册

0 0
原创粉丝点击