基于netty+Spring+Zookeeper的分布式RPC框架

本文详细介绍了如何基于Netty、Spring和Zookeeper搭建一个分布式RPC框架。从启动流程到实现细节,包括服务提供者(provider)和服务消费者(consumer)的角色、Zookeeper在服务注册与发现中的作用,以及Netty的连接管理和负载均衡策略。还讨论了在服务状态未同步到消费者时的处理方法,涉及到连接的重试和优化策略。同时,文中还涉及了Netty的监听器、同步方法和await()方法的应用。
摘要由CSDN通过智能技术生成

开发笔记

参考文章

启动示意图

在这里插入图片描述

对示意图中出现的单词意义解释

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的服务暴露

    1. provider启动netty的ServerBootstrap,进入nio的select监听状态
    2. provider扫描指定包,基于Spring的BeanPostProcessor找到标注了@Remote注解的Bean
    3. 根据这些Bean实现的接口的名字——ServiceName——去zk路径/nicerpc/serviceName/providers下注册自己为临时带序列号的节点,如果没有这些节点需要进行初始化建立这些节点;
    4. 同时将这些服务名与其具体实现的映射记录在concurrentHashMap里
  • step2,provider

  • 1
    点赞
  • 3
    收藏
    觉得还不错? 一键收藏
  • 1
    评论
评论 1
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值