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

XXL-RPC v1.8.1 | RPC 服务框架

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

    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-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 、易学易用:无缝集成 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 加密机制;
    2 条回复    2025-01-05 21:23:58 +08:00
    weihuilee
        1
    weihuilee  
       2 天前
    用过这个框架,好用~ 点个赞
    love2075904
        2
    love2075904  
       1 天前
    大佬什么时候给 xxljob 补 namespace 特性。
    关于   ·   帮助文档   ·   博客   ·   API   ·   FAQ   ·   实用小工具   ·   3587 人在线   最高记录 6679   ·     Select Language
    创意工作者们的社区
    World is powered by solitude
    VERSION: 3.9.8.5 · 23ms · UTC 04:43 · PVG 12:43 · LAX 20:43 · JFK 23:43
    Developed with CodeLauncher
    ♥ Do have faith in what you're doing.