前往小程序,Get更优阅读体验!
立即前往
首页
学习
活动
专区
工具
TVP
发布
社区首页 >专栏 >【Netty】04 - 利用netty搭建类似于dubbo的rpc框架

【Netty】04 - 利用netty搭建类似于dubbo的rpc框架

作者头像
envoke
发布2020-09-17 14:18:27
5870
发布2020-09-17 14:18:27
举报
文章被收录于专栏:我们一无所有,我们巍然矗立

学自蚂蚁课堂项目

项目地址:

dubbo原理图

在这里插入图片描述
在这里插入图片描述

搭建dubbo rpc远程调用框架的思想

搭建dubbo-server
  1. 自定义rpc注解,在需要注册到zk上的类加,标识此类需要注册到zk上
  2. 将本地服务注册到zk上
  3. zk上的节点要支持多个,以备之后的集群情况
  4. 创建netty的服务器端,并添加相应的handler
  5. 通过handler去解析相应,并利用反射执行相应的方法
  6. 获取反射调用的结果,再相应给客户端即可
搭建dubbo-client
  1. 添加服务发现模块
  2. 添加负载均衡器模块(采用策略模式)
  3. 消费端根据依赖的接口获取serviceName,去zk上获取服务列表
  4. 再根据负载均衡策略选出一个节点
  5. 封装rpcRequest类,将serviceName,methodName,parameterTypes,args封装好
  6. 利用NettyClient将封装好的rpcRequest类给NettyServer,等待相应的结果
  7. 获取到结果以后,再将结果返回给调用处即可
项目难点:
  1. 客户端调用的时候只有接口,没有实例,是怎么进行调用的 采用jdk动态代理,或者cglib动态代理生成代理类
  2. netty网络传输对象需要注意什么? 注意对象的序列化与反序列化
  3. 将服务注册到zk上需要注意什么? 需要对注册的路径进行编码,否则,添加节点是会出问题
  4. resful协议格式和json协议格式的区别? rpc采用的是restful风格,一般采用的序列化协议为MessagePack,传递时的数据为:[value1, value2, value3],优点在于更加节省空间,缺点在于不够灵活 http采用序列化协议一般为json,json采用的是key-value的形式来存值。优点:可读性高,灵活性高。缺点:占用空间带宽比较大
本文参与 腾讯云自媒体同步曝光计划,分享自作者个人站点/博客。
原始发表:2020/02/27 ,如有侵权请联系 cloudcommunity@tencent.com 删除

本文分享自 作者个人站点/博客 前往查看

如有侵权,请联系 cloudcommunity@tencent.com 删除。

本文参与 腾讯云自媒体同步曝光计划  ,欢迎热爱写作的你一起参与!

评论
登录后参与评论
0 条评论
热度
最新
推荐阅读
目录
  • 搭建dubbo-server
  • 搭建dubbo-client
  • 项目难点:
相关产品与服务
文件存储
文件存储(Cloud File Storage,CFS)为您提供安全可靠、可扩展的共享文件存储服务。文件存储可与腾讯云服务器、容器服务、批量计算等服务搭配使用,为多个计算节点提供容量和性能可弹性扩展的高性能共享存储。腾讯云文件存储的管理界面简单、易使用,可实现对现有应用的无缝集成;按实际用量付费,为您节约成本,简化 IT 运维工作。
领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档