V2EX = way to explore
V2EX 是一个关于分享和探索的地方
现在注册
已注册用户请  登录
ixiaohei
V2EX  ›  程序员

分布式系统怎么控制调用并发,我们为入口系统,总是流量一大就把对接系统搞死了,对接系统并发都不是很大。

  •  
  •   ixiaohei ·
    ixiaohei · 2016-10-19 22:42:47 +08:00 · 3515 次点击
    这是一个创建于 2960 天前的主题,其中的信息可能已经有所发展或是发生改变。
    分布式系统怎么控制调用并发,我们为入口系统,总是流量一大就把对接系统搞死了,对接系统并发都不是很大。系统用的 java 语言,现在是用信号量控制的,但是只能单 jvm ,怎么做到分布式控制?用 zookeeper ?或者别的工具框架,或者思路。暂时系统有 50 个实例,只有 20 个实际再跑?后面可能越来越多。每个实例应该内存都是 256g 这样样子, cpu 不记得是 32 核还是 64 核。
    14 条回复    2016-10-20 23:38:14 +08:00
    clino
        1
    clino  
       2016-10-19 22:58:07 +08:00
    好奇对接系统的瓶颈是什么? 数据库还是 cpu?
    enenaaa
        2
    enenaaa  
       2016-10-19 23:01:06 +08:00
    什么意思, 你是说对接系统吞吐量不能满足你们的需求吗。 那就算好吞吐量, 各程序间按量分配呀, 有额度的才能发送请求, 没有就排队等着。
    ixiaohei
        3
    ixiaohei  
    OP
       2016-10-19 23:01:49 +08:00
    @clino 一般都是数据库,金融系统数据大多数落地数据库。比如其中最差的一个金证卖基金的系统。
    ixiaohei
        4
    ixiaohei  
    OP
       2016-10-19 23:02:43 +08:00
    @enenaaa 怎么控制排队?消息队列?如果这样改造大的要死不显示,最好就是想分布式信号量那个控制最好了
    enenaaa
        5
    enenaaa  
       2016-10-19 23:13:26 +08:00
    @ixiaohei 这种应该要求不很精细, 搞个控制服务端,监控对接系统状态, 每隔一点时间向任务程序分发额度就好了。
    billlee
        6
    billlee  
       2016-10-19 23:22:51 +08:00
    redis 就可以做分布式的信号量
    ryd994
        7
    ryd994  
       2016-10-20 08:54:25 +08:00 via Android
    楼上的办法是一种,或者你可以根据用到的接口,写一个代理
    如果用的是 TCP 或者 HTTP 协议的话,用 Nginx 就能很好的处理了
    如果是直接调用的库或者对象,那就做一个全局共享的代理对象,由代理进行控制
    ryd994
        8
    ryd994  
       2016-10-20 08:56:29 +08:00 via Android
    其实 TCP 流控和你这个是类似的,而你还有个优势是可以请对方做个负载监控的接口
    jeffersonpig
        9
    jeffersonpig  
       2016-10-20 09:21:00 +08:00
    @ixiaohei 换成恒生的吧哈哈哈哈哈哈
    GeekGao
        10
    GeekGao  
       2016-10-20 13:52:51 +08:00
    可以在 API 网关上搞个 Token Bucket 算法的过滤器做限流
    aboutyang
        11
    aboutyang  
       2016-10-20 14:25:32 +08:00
    基于分布式缓存扩展 Semaphore
    ixiaohei
        12
    ixiaohei  
    OP
       2016-10-20 20:06:48 +08:00
    @billlee 怎么做?
    billlee
        13
    billlee  
       2016-10-20 21:32:25 +08:00
    ixiaohei
        14
    ixiaohei  
    OP
       2016-10-20 23:38:14 +08:00
    @enenaaa 这个估计改造很大,我们一般都是同步的,异步一般 都是处理任务什么的干。做个活动绝对还好多系统遭殃
    关于   ·   帮助文档   ·   博客   ·   API   ·   FAQ   ·   实用小工具   ·   3139 人在线   最高记录 6679   ·     Select Language
    创意工作者们的社区
    World is powered by solitude
    VERSION: 3.9.8.5 · 23ms · UTC 13:42 · PVG 21:42 · LAX 05:42 · JFK 08:42
    Developed with CodeLauncher
    ♥ Do have faith in what you're doing.