XXL-RPC v1.8.0 | 分布式服务框架 - V2EX
V2EX = way to explore
V2EX 是一个关于分享和探索的地方
现在注册
已注册用户请  登录
请不要在回答技术问题时复制粘贴 AI 生成的内容
xuxueli
V2EX    程序员

XXL-RPC v1.8.0 | 分布式服务框架

  •  
  •   xuxueli 315 天前 1672 次点击
    这是一个创建于 315 天前的主题,其中的信息可能已经有所发展或是发生改变。

    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 

    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 远程服务调用功能。拥有"高性能、分布式、注册中心、负载均衡、服务治理"等特性。现已开放源代码,开箱即用。

    img_DNq6.png

    特性

    • 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 ;
    2 条回复    2024-12-30 10:40:21 +08:00
    EarthChild
        1
    EarthChild  
       315 天前
    牛!顺便想问问 xxl-job 如果每 5 分钟执行一次,100 次中可能偶发一两次会输出 XxlJobHelper.log 日志,如何筛选这一部分呢?现在日志太多,想看有输出内容的不好筛选~
    qq135449773
        2
    qq135449773  
       315 天前
    诚心的希望您能抽空学习一下如何使用 vuepress 排版文档...

    感觉您的作品的文档没有一个方便阅读的...
    关于     帮助文档     自助推广系统     博客     API     FAQ     Solana     5411 人在线   最高记录 6679       Select Language
    创意工作者们的社区
    World is powered by solitude
    VERSION: 3.9.8.5 26ms UTC 08:34 PVG 16:34 LAX 00:34 JFK 03:34
    Do have faith in what you're doing.
    ubao msn snddm index pchome yahoo rakuten mypaper meadowduck bidyahoo youbao zxmzxm asda bnvcg cvbfg dfscv mmhjk xxddc yybgb zznbn ccubao uaitu acv GXCV ET GDG YH FG BCVB FJFH CBRE CBC GDG ET54 WRWR RWER WREW WRWER RWER SDG EW SF DSFSF fbbs ubao fhd dfg ewr dg df ewwr ewwr et ruyut utut dfg fgd gdfgt etg dfgt dfgd ert4 gd fgg wr 235 wer3 we vsdf sdf gdf ert xcv sdf rwer hfd dfg cvb rwf afb dfh jgh bmn lgh rty gfds cxv xcv xcs vdas fdf fgd cv sdf tert sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf shasha9178 shasha9178 shasha9178 shasha9178 shasha9178 liflif2 liflif2 liflif2 liflif2 liflif2 liblib3 liblib3 liblib3 liblib3 liblib3 zhazha444 zhazha444 zhazha444 zhazha444 zhazha444 dende5 dende denden denden2 denden21 fenfen9 fenf619 fen619 fenfe9 fe619 sdf sdf sdf sdf sdf zhazh90 zhazh0 zhaa50 zha90 zh590 zho zhoz zhozh zhozho zhozho2 lislis lls95 lili95 lils5 liss9 sdf0ty987 sdft876 sdft9876 sdf09876 sd0t9876 sdf0ty98 sdf0976 sdf0ty986 sdf0ty96 sdf0t76 sdf0876 df0ty98 sf0t876 sd0ty76 sdy76 sdf76 sdf0t76 sdf0ty9 sdf0ty98 sdf0ty987 sdf0ty98 sdf6676 sdf876 sd876 sd876 sdf6 sdf6 sdf9876 sdf0t sdf06 sdf0ty9776 sdf0ty9776 sdf0ty76 sdf8876 sdf0t sd6 sdf06 s688876 sd688 sdf86