当前位置: 首页 > article >正文

XXL-RPC v1.8.1 | RPC服务框架

Release Notes

  • 1、【安全】序列化安全性增强,默认开启package安全空间机制;
  • 2、【扩展】序列化扩展性增强,支持自定义序列化package白名单;
  • 3、【优化】序列化类型主动检测,提升问题定位效率;
  • 4、【能力】服务注册发现实效性提升,优化long-polling逻辑;
  • 5、【扩展】模块 xxl-rpc-netty-shade 独立拆分,与Core模块解耦;
  • 6、【优化】通讯组件选择HttpServer时,HttpObjectAggregator限制调大至20M,支持大消息传输;
  • 7、【升级】多个项目依赖升级至较新稳定版本,涉及 xxl-rpc-netty-shade、netty、slf4j 等;

XXL- RPC 快速接入示例

代码参考github仓库 /test 目录:https://github.com/xuxueli/xxl-rpc/tree/master/xxl-rpc-samples

1、服务注册中心搭建:一行命令启动注册中心,一站式提供服务动态注册发现能力。

docker pull xuxueli/xxl-rpc-admin

docker run -p 8080:8080 -v /tmp:/data/applogs --name xxl-rpc-admin  -d xuxueli/xxl-rpc-admin

image.png

2、XXL-PRC接入配置:与Spring无缝集成,也支持无框架接入。

XxlRpcSpringFactory factory = new XxlRpcSpringFactory();
factory.setBaseConfig(new BaseConfig(env, appname));
factory.setRegister(new XxlRpcRegister(address, accesstoken));
factory.setInvokerConfig(new InvokerConfig(invokerOpen));
factory.setProviderConfig(providerOpen ?
        new ProviderConfig(
                NettyServer.class,
                JsonbSerializer.class,
                port,
                corePoolSize,
                maxPoolSize,
                null) : new ProviderConfig(providerOpen));

经过上述2步,已完成全部配置工作,可以直接展开业务编码工作。

3、业务代码开发:

  • 3.1、接口定义代码:
public interface DemoService {

  public UserDTO load(String name);
  
}
  • 3.2、服务端代码:
    注解式,一行代码将现有接口转换成 XXL-RPC 服务。
@XxlRpcService
@Service
public class DemoServiceImpl implements DemoService {

  @Override
  public UserDTO load(String name) {
    return new UserDTO("jack", "hello world");
  }

}
  • 3.3、调用端代码:
    注解式,一行代码引入 XXL- RPC 服务。

@XxlRpcReference(appname = "app01")
private DemoService demoService;

... 
UserDTO userDTO = demoService.sayHi(name);

简介

XXL-RPC 是一个RPC服务框架,提供一站式服务通信及运营能力。拥有“轻量级、高性能、负载均衡、故障容错、安全性、注册发现、服务治理”等分布式特性。现已开放源代码,开箱即用。

  • 中文文档
  • Github地址

img_DNq6.png

特性

  • 1、易学易用:无缝集成SpringBoot,三分钟即可上手;
  • 2、服务透明:系统完整的封装了底层通信细节,开发时调用远程服务就像调用本地服务,在提供远程调用能力时不损失本地调用的语义简洁性;
  • 3、多调用类型:支持多种调用类型,包括:SYNC、ONEWAY、FUTURE、CALLBACK 等;
  • 4、多通讯协议:支持多种通讯协议,支持TCP、HTTP;
  • 5、多序列化方案:支持多种序列化协议,包括:HESSIAN/2、HESSIAN1、Gson、PROTOSTUFF、KRYO 等序列化方案;
  • 6、注册中心:内置服务注册中心支持服务动态发现,提供轻量级、一站式解决方案。也支持扩展集成其他注册中心,或者不使用注册中心、直接指定服务提供方机器地址调用;
  • 7、负载均衡:支持多种负载均衡策略,包括:轮询、随机、LRU、LFU、一致性HASH等;
  • 8、服务治理:提供服务治理能力,支持在线管理注册的服务信息,如服务锁定、IP禁用……等;
  • 9、服务监控:支持在线监控服务调用统计信息以及服务健康状况等(计划中);
  • 10、故障容错:支持自动巡检线上服务并摘除故障节点,消费方实时感知并移除失效节点将流量分发到其余节点,提高系统容错能力。
  • 11、高兼容性:得益于优良的兼容性与模块化设计,不限制技术栈;除 spring/springboot 技术栈之外,理论上支持运行在任何Java代码中,甚至main方法直接启动运行;
  • 12、泛化调用:支持服务调用方直接发起服务调用,不依赖服务方提供的API;
  • 13、服务安全:支持序列化安全空间机制,以及通讯token加密机制;

http://www.kler.cn/a/470840.html

相关文章:

  • 7_TypeScript Number --[深入浅出 TypeScript 测试]
  • Mysql--基础篇--数据类型(整数,浮点数,日期,枚举,二进制,空间类型等)
  • asio中strand用于串行执行task
  • vue 什么时候使用v-if 什么时候使用v-show
  • 第30天:Web开发-PHP应用组件框架前端模版渲染三方插件富文本编辑器CVE审计
  • 【前端知识】手搓微信小程序
  • 去耦电容理解:“耦”了什么?非要“去”了?
  • Bash语言的软件工程
  • 模电面试——设计题及综合分析题0x03(含答案)
  • Android:文件管理:打开文件意图
  • 七次课掌握 Photoshop
  • 【vue指令】
  • Django外键模型未保存引用
  • JAVA上门洗车家政上门服务小程序H5源码上门洗车APP
  • Ubuntu下的小bug
  • 微信小程序获取图片使用session(下篇)
  • leetcode155.最小栈
  • python学opencv|读取图像(二十七)使用time()绘制弹球动画
  • 企业二要素如何用C#实现
  • Scala语言的数据库交互
  • STM32-笔记30-串口间的通信
  • python常见绘图及代码
  • 技术文档撰写之道:构建清晰准确的知识传递桥梁
  • 【Java设计模式-1】单例模式,Java世界的“独苗”
  • C++中decltype遇到引用类型时的隐藏陷阱
  • 算法解析-经典150(矩阵、哈希表)