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 { @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地址
特性
- 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;