一、Release Notes
1、【重构】针对 “Core/核心模块” 进行架构模块化重构,拆分 Provider、Invoker、Serializer、Remoting、Registry 和 Boot 等六个核心模块:
- Provider:定位为服务提供者,提供RPC服务端能力,包括RCP/HTTP Server、业务Service扫描维护、服务执行等能力。
- Invoker:定位为服务调用者,提供RPC客户端能力,包括RCP/HTTP Client、业务请求代理、负载均衡、多方式请求调用能力。
- Serializer:定位为序列化组件,提供通讯数据序列化能力,提供包括JSONB、Hessian、KRYO、PROTOSTUFF…等多种可扩展方案。
- Remoting:定位为通讯组件,提供底层网络通讯能力,提供包括Netty/TCP、Netty/HTTP、Jetty、Mina…等多种可扩展方案。
- Register:定位为注册中心,提供服务注册、发现能力,提供包括 XxlRpcRegister(官方内置/xxl-rpc-admin)、Zookeeper、Nacos、Consul、ETCD…等多种可扩展方案。
- Boot:定位为启动引导模块,提供SpringBoot、无框架等技术栈快速集成能力,如SpringBoot可全程配置化接入、注解式开发等。
2、【重构】针对 “Admin/服务管理模块” 进行模型以及UI重构,提供 环境/命名空间、应用、鉴权、服务注册节点 等在线运营管控能力。
3、【优化】服务注册从接口维度调整为应用维度,降低服务注册压力,提升稳定性及系统负载。
4、【优化】XxlRpcReferenceBean 移除冗余属性,注册信息收敛至Register,降低认知成本、提升可维护性。
5、【安全】默认序列化方案调整为 JSONB,并进行兜底安全过滤,提升序列化性能、以及安全性;
二、XXL- RPC 快速接入示例
XXL-RPC 定位一站式分布式RPC服务框架,如下演示如何快速接入(完整示例,可参考GitHub示例代码):
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
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 {@Overridepublic 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仓库:https://github.com/xuxueli/xxl-rpc
项目文档:http://www.xuxueli.com/xxl-rpc/
四、简介
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;
原创 许雪里