首页 > 其他分享 >RPC 框架

RPC 框架

时间:2023-10-18 14:13:08浏览次数:22  
标签:dubbo java 框架 server RPC UserService 序列化 tuling

基本组成:

 

Client (客户端):服务调用方。
Server(服务端):服务提供方。
Client Stub(客户端存根):存放服务端的消息,负责将客户端的请求参数打包成网络消息,然后通过网络发送给服务提供方。
Server Stub(服务端存根):接收客户端发送的消息,再将客户端请求参数打包成网络消息,然后通过网络远程发送给服务方。

其它:

 

  • 序列化协议:
  • 网络协议:TCP, HTTP 等(TCP 更快(Dubbo),因为 HTTP header 内容过多(SpringCloud))
  • 注册中心:Zookeeper CP 保证一致性,Eureka AP 保证可用性

 

Dubbo

zookeeper 作为注册中心:

  • 提供者节点: /GLOBAL_REGISTRY/tuling.dubbo.server.UserService/providers
    • 存放的内容是一个所有注册的提供者的 URL List  [dubbo://127.0.0.1:12345/tuling.dubbo.server.UserService?application=myapp1&dubbo=2.0.2&protocal=dubbo&..., dubbo://..... ]
    • 在提供者中进行负载均衡
  • 消费者节点:/GLOBAL_REGISTRY/tuling.dubbo.server.UserService/consumers
    • 存放的内容是一个所有注册的提供者的 URL List  [consumer://127.0.0.1:12345/tuling.dubbo.server.UserService?application=myapp2&dubbo=2.0.2&protocal=dubbo&..., consumer://..... ]
  • 提供者动态配置节点:/GLOBAL_REGISTRY/tuling.dubbo.server.UserService/configurators
  • 消费者路由策略节点:/GLOBAL_REGISTRY/tuling.dubbo.server.UserService/routers

网络协议是 TCP

序列化协议是 Hessian

Dubbo序列化支持java、compactedjava、nativejava、fastjson、dubbo、fst、hessian2、kryo,其中默认hessian2。其中java、compactedjava、nativejava属于原生java的序列化。

  • dubbo 序列化:阿里尚未开发成熟的高效java序列化实现,阿里不建议在生产环境使用它。
  • hessian2 序列化:hessian是一种跨语言的高效二进制序列化方式。但这里实际不是原生的hessian2序列化,而是阿里修改过的,它是dubbo RPC默认启用的序列化方式。
  • json 序列化:目前有两种实现,一种是采用的阿里的fastjson库,另一种是采用dubbo中自己实现的简单json库,但其实现都不是特别成熟,而且 json这种文本序列化性能一般不如上面两种二进制序列化。
  • java 序列化:主要是采用JDK自带的Java序列化实现,性能很不理想。

JDK Serializable中通过serialVersionUID控制序列化类的版本,如果序列化与反序列化版本不一致,则会抛出java.io.InvalidClassException异常信息,提示序列化与反序列化SUID不一致。

dubbo序列化主要由Serialization(序列化策略)、DataInput(反序列化,二进制->对象)、DataOutput(序列化,对象->二进制流) 来进行数据的序列化与反序列化。

 

标签:dubbo,java,框架,server,RPC,UserService,序列化,tuling
From: https://www.cnblogs.com/suBlog/p/17771934.html

相关文章

  • C#/.NET/.NET Core优秀项目和框架精选(2023年10月更新,项目分类已整理完成欢迎大家踊跃
    https://www.cnblogs.com/Can-daydayup/p/17758479.html思维导航前言开源框架开源项目实用工具&软件实用SDK&类库界面&控件&UI库加入DotNetGuide技术交流群前言帮助开发者发现功能强大、性能优越、创新前沿、简单易用的C#/.NET/.NETCore优秀项目和框架,无论你是寻......
  • pino 一个很不错的node log 框架
    pino是一个很不错的nodejs日志框架,fastify就集成了此框架,而且提供了不少框架的扩展,可以方便集成(express,koa,nest,hapi。。。)参考使用app.jsconstpino=require('pino')constlogger=pino({timestamp:pino.stdTimeFunctions.isoTime,})logger.in......
  • Node.js框架:通过nvm实现多个node版本共存使用
    一、环境部署1、nvm下载下载地址:https://github.com/coreybutler/nvm-windows/releases2、nvm安装打开安装程序后按流程走就行,中间的安装地址可以自定义调整。注:在选择node.js的路径时,默认路径为C盘里的安装路径,如果本地在该路径下已经安装过......
  • Spting框架
    Spring核心:IOCAOPIOC:控制反转:就是对对象控制权的转移,从程序代码本身反转到外部的容器中,通过外部容器对象的创建,属性的赋值,依赖的管理。 IOC的具体实现:依赖注入(DI):1.创建项目,导入架包 2.定义类 3.创建Spring的配置文件,编写bean 4.在......
  • SpringBoot 02 shiro框架查询用户权限与角色
      实体类 @Data@AllArgsConstructor@NoArgsConstructor@TableName("t_user")publicclassRUser{@TableId(value="id",type=IdType.AUTO)privateIntegerusrId;privateStringusrName;privateStringusrAccount;pri......
  • Util应用框架Web Api开发环境搭建
    要使用Util应用框架开发项目,首先需要搭建合适的开发环境.迈出第一步,对于很多.Net新人可能并不简单.如果你对.Net环境并不熟悉,请尽量按照本文档进行操作.操作系统请安装Windows10以上版本操作系统.你也可以使用MAC操作系统,但需要自行解决开发环境问题.安装VisualSt......
  • 在 kubernetes 环境中实现 gRPC 负载均衡
    前言前段时间写过一篇gRPC的入门文章,在最后还留了一个坑没有填:也就是gRPC的负载均衡问题,因为当时的业务请求量不算大,再加上公司没有对Istio这类服务网格比较熟悉的大牛,所以我们也就一直拖着没有解决,依然只是使用了kubernetes的service进行负载,好在也没有出什么问题......
  • c语言模仿kfifo撰写的一个共用代码框架,可根据需要
    ////kfifo简化版本,根据需要进行改装//定义KFIFO结构体typedefstruct{uint8_t*buffer;//缓冲区指针uint32_tsize;//缓冲区大小,如果要求是2^n-1可以将取余操作修改为按位与操作,同时修改其他相关信息volatileuint32_tin;//入队指针......
  • app逆向day03-反编译工具和hook框架
    一反编译工具1.1常见反编译工具常见的反编译工具:jadx(推荐)、jeb、GDA反编译工具依赖于java环境,所以我们按照jdk1.2JDK环境安装#官方地址:(需要注册-最新java21)https://www.oracle.com/java/technologies/downloads/1.2.1win平台安装#1下载jdk-8u371-windows-x64.e......
  • Unittest单元测试框架-知识点总结
    unittest单元测试框架1.导入unittest包========================================================================2.创建类的时候要继承与unittest.TestCase类2.1,setUp方法是在类中测试执行前的初始化工作2.2,tearDown方法是在类中测试执行后的清除工作2.3,测试用例函数以test开头......