dimit 分布式流控系统开源项目

我要开发同款
匿名用户2018年04月13日
43阅读
开发技术Java
所属分类程序开发、网络工具包
授权协议Apache

作品详情

dimit

分布式流控系统QQ:527645454(开发讨论群)

快速开始

maven加pom依赖

                        io.github.dzh            dimit-core                            io.github.dzh            dimit-zk            

初始化StoreSystem

String uri = "dimit-zk://dzh/dimit?host=127.0.0.1:2181&sleep=1000&retry=3";DimitStoreSystem dss = DimitStores.newStoreSystem(URI.create(uri), null);

依次创建流控Conf,配置结构层次:

- DimitConf             定义一个流控器    - ChannelGroupConf  通道组配置        - ChannelConf   通道配置

 

注: 参考单位测试dimit-demo/../TestZkStoreConfDemo

初始化Dimiter,依据流控Conf创建对应的运行时数据

// init dimiter and runtime channelsString uri = "dimit-zk://dzh/dimit?host=127.0.0.1:2181&sleep=1000&retry=3";Dimiter dimiter = Dimiter.newDimiter(URI.create(uri), null, dimitConfId);ChannelGroupWrapper group = demo.initChannelGroup(channelGroupConfId);group.newChannel(ChannelConfId_1, ChannelType.SEND);group.newChannel(ChannelConfId_2, ChannelType.SEND);// selectList selected = group.select(TagA,TagB);V result = null;for(ChannelWrapper channel : selected) {    try{        result = channel.call(new ChannelCallable{            // TODO request            ...        });        // TODO parse result        ...         break;    }catch(RateLimiterException e){        LOG.info(e.getMessage(), e);    }catch(InvalidChannelException e){        LOG.error(e.getMessage(), e);    }catch(Exception e){  // or break        LOG.error(e.getMessage(), e);    }}// program exitdimiter.close();

注: 参考单位测试dimit-demo/../TestDimiterDemo

特性列表

流量控制

ChannelConf定义max-tps,Channel实例的tps=max-tps/Channel总数

Tag筛选

ChannelConf定义通道的tag列表,ChannelGroupWrapper.select(...)时选择满足条件的Channel组

主备切换

ChannelConf定义通道ChannelStatus,select返回的可用通道列表里PRIMARY优先于STANDBY

质量分析

启用Channel的质量分析功能(stat.enable=true 默认开启),在ChannelWrapper.call()时采集stat信息

异常切换

通过stat信息动态计算ChannelWrapper.priority(),影响select结果

Web管理

TODO

环境依赖

JDK1.7orhigher

maven3

protobuf3

servlet-apiv3.1.0TODO使用wep4j

声明:本文仅代表作者观点,不代表本站立场。如果侵犯到您的合法权益,请联系我们删除侵权资源!如果遇到资源链接失效,请您通过评论或工单的方式通知管理员。未经允许,不得转载,本站所有资源文章禁止商业使用运营!
下载安装【程序员客栈】APP
实时对接需求、及时收发消息、丰富的开放项目需求、随时随地查看项目状态

评论