V2EX = way to explore
V2EX 是一个关于分享和探索的地方
现在注册
已注册用户请  登录
• 请不要在回答技术问题时复制粘贴 AI 生成的内容
xuxueli
V2EX  ›  程序员

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

  •  
  •   xuxueli · 2 天前 · 828 次点击

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

    感觉您的作品的文档没有一个方便阅读的...
    关于   ·   帮助文档   ·   博客   ·   API   ·   FAQ   ·   实用小工具   ·   2666 人在线   最高记录 6679   ·     Select Language
    创意工作者们的社区
    World is powered by solitude
    VERSION: 3.9.8.5 · 19ms · UTC 10:53 · PVG 18:53 · LAX 02:53 · JFK 05:53
    Developed with CodeLauncher
    ♥ Do have faith in what you're doing.