XXL-RPC v1.3.1,分布式服务框架,扩展多种负载策略 - V2EX
V2EX = way to explore
V2EX 是一个关于分享和探索的地方
现在注册
已注册用户请  登录
xuxueli
V2EX    Java

XXL-RPC v1.3.1,分布式服务框架,扩展多种负载策略

  •  
  •   xuxueli 2018-12-21 12:26:11 +08:00 1879 次点击
    这是一个创建于 2485 天前的主题,其中的信息可能已经有所发展或是发生改变。

    Release Notes

    • 1、负载均衡 /软负载:提供丰富的负载均衡策略,包括:轮询、随机、LRU、LFU、一致性 HASH 等;
    • 2、服务发现注册逻辑优化:支持批量注册、摘除,升级 xxl-registry 至 v1.0.1 ;
    • 3、新增 jfinal 类型示例项目 "xxl-rpc-sample-jfinal" 支持 jfinal 项目快速接入分布式 RC 服务功能;高兼容性,原则上支持任务框架,甚至 main 方法直接运行;
    • 4、TCP 通讯方案 Server 端 Channel 线程优化(线程参数=60/300/1000 ),避免 IO 线程阻塞于业务;
    • 5、TCP 通讯方案 Client 端 Channel 线程优化(线程参数=10/100/1000 ),避免 IO 线程阻塞于 callback 业务;
    • 6、TCP 通讯方案 Client 初始化逻辑优化;
    • 7、TCP 长连销毁逻辑优化;
    • 8、底层 Log 整理,RPC 报错时打印完整 Log,包括请求地址,请求参数等;
    • 9、Server 端销毁逻辑优化;
    • 10、static 代码块优化,进行组件无状态优化:response factory 等;迁移到 invoke factory 上来;
    • 11、升级多项 pom 依赖至较新稳定版本;

    简介

    XXL-RPC 是一个分布式服务框架,提供稳定高性能的 RPC 远程服务调用功能。拥有"高性能、分布式、注册中心、负载均衡、服务治理"等特性。现已开放源代码,开箱即用。

    输入图片说明

    特性

    • 1、快速接入:接入步骤非常简洁,两分钟即可上手;
    • 2、服务透明:系统完整的封装了底层通信细节,开发时调用远程服务就像调用本地服务,在提供远程调用能力时不损失本地调用的语义简洁性;
    • 3、多调用方案:支持 SYNC、ONEWAY、FUTURE、CALLBACK 等方案;
    • 4、多通讯方案:支持 TCP 和 HTTP 两种通讯方式进行服务调用;其中 TCP 提供可选方案 NETTY 或 MINA,HTTP 提供可选方案 Jetty ;
    • 5、多序列化方案:支持 HESSIAN、HESSIAN1、PROTOSTUFF、JSON 等方案;
    • 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 方法直接启动运行;

    文档地址

    技术交流

    4 条回复    2018-12-21 15:21:07 +08:00
    ppdudu
        1
    ppdudu  
       2018-12-21 14:19:58 +08:00
    最近在用 job,
    请教一个问题:同一个执行器上有多个 online 机器地址,如何不通过轮询 /失败重试的方式来执行某一个机器上的 handler.
    谢谢
    loveCoding
        2
    loveCoding  
       2018-12-21 14:26:32 +08:00
    作者开源了好多项目 , 牛逼了
    分布式 job , rpc,mq,注册中心 , 能写文章说说是怎样做到的吗? 个人经历如何分配
    Variazioni
        3
    Variazioni  
       2018-12-21 15:11:32 +08:00
    @ppdudu 一致性 HASH 可以保证任务分配到同一个地址。。但是没法指定某一台机器。。话说。为什么会有这种奇怪的需求。。
    xuxueli
        4
    xuxueli  
    OP
       2018-12-21 15:21:07 +08:00
    @loveCoding 你好,这些项目主要要社区一期来迭代维护的,后面有机会会考虑在社区内分享讨论的。

    @ppdudu @Variazioni 是的,一致性 HASH 策略可行的,应该可以满足你的需求。
    也可以结合执行器来做,可以为这个任务单独配置一个执行器,执行器选择手动注册,指定希望运行任务机器地址即可。
    关于     帮助文档     自助推广系统     博客     API     FAQ     Solana     3630 人在线   最高记录 6679       Select Language
    创意工作者们的社区
    World is powered by solitude
    VERSION: 3.9.8.5 30ms UTC 00:47 PVG 08:47 LAX 17:47 JFK 20:47
    Do have faith in what you're doing.
    ubao 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