分布式系统怎么控制调用并发,我们为入口系统,总是流量一大就把对接系统搞死了,对接系统并发都不是很大。系统用的 java 语言,现在是用信号量控制的,但是只能单 jvm ,怎么做到分布式控制?用 zookeeper ?或者别的工具框架,或者思路。暂时系统有 50 个实例,只有 20 个实际再跑?后面可能越来越多。每个实例应该内存都是 256g 这样样子, cpu 不记得是 32 核还是 64 核。
1
clino Oct 19, 2016
好奇对接系统的瓶颈是什么? 数据库还是 cpu?
|
2
enenaaa Oct 19, 2016
什么意思, 你是说对接系统吞吐量不能满足你们的需求吗。 那就算好吞吐量, 各程序间按量分配呀, 有额度的才能发送请求, 没有就排队等着。
|
6
billlee Oct 19, 2016
redis 就可以做分布式的信号量
|
7
ryd994 Oct 20, 2016 via Android
楼上的办法是一种,或者你可以根据用到的接口,写一个代理
如果用的是 TCP 或者 HTTP 协议的话,用 Nginx 就能很好的处理了 如果是直接调用的库或者对象,那就做一个全局共享的代理对象,由代理进行控制 |
8
ryd994 Oct 20, 2016 via Android
其实 TCP 流控和你这个是类似的,而你还有个优势是可以请对方做个负载监控的接口
|
9
jeffersonpig Oct 20, 2016
@ixiaohei 换成恒生的吧哈哈哈哈哈哈
|
10
R4rvZ6agNVWr56V0 Oct 20, 2016
可以在 API 网关上搞个 Token Bucket 算法的过滤器做限流
|
11
aboutyang Oct 20, 2016
基于分布式缓存扩展 Semaphore
|
13
billlee Oct 20, 2016
|