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