文章目录
开发笔记
参考文章
- netty源码分析之-Future、ChannelFuture与ChannelPromise详解(3)
- Netty 案例集锦之多线程篇
- Netty Client重连实现
- ChannelFuture的用法
- netty channel详解
- 浅析Netty的异步事件驱动(二)
启动示意图
对示意图中出现的单词意义解释
provider
服务提供者
consumer
服务消费者
Zookeeper
Zookeeper集群,作为服务的注册中心使用
zk节点结构
模仿dubbo
- 根路径:/nicerpc
- 服务路径在根路径下,根据不同的服务名命名:/nicerpc/serviceName,比如/nicerpc/com.w.service.api.UserService,一个服务下有providers,consumers,routers,configurations节点
- 服务提供者都在服务路径下的providers里:/nicerpc/serviceName/providers/providerHost+"#" +providerPort,比如/nicerpc/com.w.service.api.UserService/192.168.12.12#6666;后期框架优化,需要往节点的数据域附带这些host,port等信息。
- consumer类似provider
- 某一个服务的配置信息在/nicerpc/serviceName/configurations下,暂时并未用到
- 路由信息在/nicerpc/serviceName/routers下,暂时并未用到
step1~6是启动顺序
-
step1,provider的服务暴露
- provider启动netty的ServerBootstrap,进入nio的select监听状态
- provider扫描指定包,基于Spring的BeanPostProcessor找到标注了@Remote注解的Bean
- 根据这些Bean实现的接口的名字——ServiceName——去zk路径/nicerpc/serviceName/providers下注册自己为临时带序列号的节点,如果没有这些节点需要进行初始化建立这些节点;
- 同时将这些服务名与其具体实现的映射记录在concurrentHashMap里
-
step2,provider