XXL-RPC v1.3.2,分布式服务框架

许雪里
 许雪里
发布于 2019年02月22日
收藏 14

Release Notes

  • 1、泛化调用:服务调用方不依赖服务方提供的API;
  • 2、新增通讯方案 "NETTY_HTTP";
  • 3、新增序列化方案 "KRYO";
  • 4、通讯效率优化:TCP连接池取消,改为单一长连接,移除commons-pool2依赖;
  • 5、RPC请求路由时空地址处理优化;
  • 6、通讯连接池address参数优化,出IP:PORT格式外兼容支持常规URL格式地址;
  • 7、线程名称优化,便于适配监控快速进行线程定位;

简介

XXL-RPC 是一个分布式服务框架,提供稳定高性能的RPC远程服务调用功能。拥有"高性能、分布式、注册中心、负载均衡、服务治理"等特性。现已开放源代码,开箱即用。

输入图片说明

特性

  • 1、快速接入:接入步骤非常简洁,两分钟即可上手;
  • 2、服务透明:系统完整的封装了底层通信细节,开发时调用远程服务就像调用本地服务,在提供远程调用能力时不损失本地调用的语义简洁性;
  • 3、多调用方案:支持 SYNC、ONEWAY、FUTURE、CALLBACK 等方案;
  • 4、多通讯方案:支持 TCP 和 HTTP 两种通讯方式进行服务调用;其中 TCP 提供可选方案 NETTY 或 MINA ,HTTP 提供可选方案 NETTY_HTTP 或 Jetty;
  • 5、多序列化方案:支持 HESSIAN、HESSIAN1、PROTOSTUFF、KRYO、JACKSON 等方案;
  • 6、负载均衡/软负载:提供丰富的负载均衡策略,包括:轮询、随机、LRU、LFU、一致性HASH等;
  • 7、注册中心:可选组件,支持服务注册并动态发现;可选择不启用,直接指定服务提供方机器地址通讯;选择启用时,内置可选方案:“XXL-REGISTRY 轻量级注册中心”(推荐)、“ZK注册中心”、“Local注册中心”等;
  • 8、服务治理:提供服务治理中心,可在线管理注册的服务信息,如服务锁定、禁用等;
  • 9、服务监控:可在线监控服务调用统计信息以及服务健康状况等(计划中);
  • 10、容错:服务提供方集群注册时,某个服务节点不可用时将会自动摘除,同时消费方将会移除失效节点将流量分发到其余节点,提高系统容错能力。
  • 11、解决1+1问题:传统分布式通讯一般通过nginx或f5做集群服务的流量负载均衡,每次请求在到达目标服务机器之前都需要经过负载均衡机器,即1+1,这将会把流量放大一倍。而XXL-RPC将会从消费方直达服务提供方,每次请求直达目标机器,从而可以避免上述问题;
  • 12、高兼容性:得益于优良的兼容性与模块化设计,不限制外部框架;除 spring/springboot 环境之外,理论上支持运行在任何Java代码中,甚至main方法直接启动运行;
  • 13、泛化调用:服务调用方不依赖服务方提供的API;

文档地址

技术交流

本站文章除注明转载外,均为本站原创或编译。欢迎任何形式的转载,但请务必注明出处,尊重他人劳动共创开源社区。
转载请注明:文章转载自 开源中国社区 [http://www.oschina.net]
本文标题:XXL-RPC v1.3.2,分布式服务框架
加载中

最新评论(16

许雪里
许雪里

引用来自“强子1985”的评论

我一开始也是用commonpool2做连接池,后来发现用这个做连接复用是错误的,
极少数的连接来做客户端异步处理&同步也是基于异步的基础上实现的思路个人觉得才是正确的方向
多谢建议。
xxl-rpc是基础通讯中间件,是日后XXL社区重点迭代的xxl-apm、xxl-cache等的基础组件,所以优先级比较高。

最近在迭代xxl-apm,存储这块确实比较考验技术,数据结构、空间压缩等等。

有建议欢迎随时反馈啊,官网有交流群。
许雪里
许雪里

引用来自“强子1985”的评论

我一开始也是用commonpool2做连接池,后来发现用这个做连接复用是错误的,
极少数的连接来做客户端异步处理&同步也是基于异步的基础上实现的思路个人觉得才是正确的方向
是的。底层一直是全异步,同步异步策略都是上层的逻辑封装。
强子1985
强子1985
楼主做了很多东西,很棒;个人建议往存储方向多挖,网络这些东西门槛不是特别高;纯属个人建议。。。
强子1985
强子1985
我一开始也是用commonpool2做连接池,后来发现用这个做连接复用是错误的,
极少数的连接来做客户端异步处理&同步也是基于异步的基础上实现的思路个人觉得才是正确的方向
simaxx
simaxx
是不是可以做个集成的插件,分布式服务势必有分布式事务。
许雪里
许雪里

引用来自“simaxx”的评论

分布式事务怎么处理?
tcc,mq,或者阿里的fescar 都可以
simaxx
simaxx
分布式事务怎么处理?
傲娇字符
傲娇字符

引用来自“傲娇字符”的评论

看到泛化调用,笑了,不知道destroy会不会像dubbo一样,存在严重的内存泄漏问题😅

引用来自“许雪里”的评论

哈哈,它的泛化调用服务方没有做丝毫调整,仅仅在调用方做泛化兼容。
测试阶段多线程压测了一段时间,内存波动不大。可以体验下啊。
dubbo泛化的客户端对象,官方说的通过destroy可以释放资源。实测下来,因为dubbo多处使用static map缓存URL等,存在严重内存泄漏。。。。所以官方加了句:建议创建的泛化对象缓存下来服用。。。。

所以这个影响的是客户端。。
许雪里
许雪里

引用来自“傲娇字符”的评论

看到泛化调用,笑了,不知道destroy会不会像dubbo一样,存在严重的内存泄漏问题😅
哈哈,它的泛化调用服务方没有做丝毫调整,仅仅在调用方做泛化兼容。
测试阶段多线程压测了一段时间,内存波动不大。可以体验下啊。
许雪里
许雪里

引用来自“prelove88”的评论

👍
多谢!
返回顶部
顶部