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-admindocker 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地址
特性
- 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加密機制;