请问 Java 大佬如何处理这种 rpc 调用问题?

2018-08-18 22:38:06 +08:00
 ngx4ss

如题,公司用的是 motan /dubbo 之类的 rpc 框架

5053 次点击
所在节点    Java
28 条回复
jiangjz
2018-08-18 22:40:03 +08:00
for 循环?
ngx4ss
2018-08-18 22:42:00 +08:00
@jiangjz #1 不行的 ,一次性调用处理数据太多 就会 timeout 报错了
gejun123456
2018-08-18 22:42:23 +08:00
多线程同步调用呗
boywang004
2018-08-18 22:43:25 +08:00
让「别的同事」努努力?
notreami
2018-08-18 22:50:10 +08:00
丢数据库里,让 别的同事,自己取数据,自己处理。
wdlth
2018-08-18 22:55:31 +08:00
可以试试生产者消费者模式
jason19659
2018-08-18 22:56:32 +08:00
分组多次请求
livepps
2018-08-18 23:03:59 +08:00
要处理的数据,放到任务队列中,每次执行 300 个。
可以定时检查当前在执行的数量,不足 300 个,就执行新的任务;也可以做回调,就这样每次执行 300 个,直到任务队列为空
ngx4ss
2018-08-18 23:05:58 +08:00
@livepps #8 请问大佬 任务队列是 blockqueue ?
billlee
2018-08-18 23:06:18 +08:00
异步请求限制 on-the-fly 的数量?简单做的话用信号量就可以了吧
BBCCBB
2018-08-18 23:31:36 +08:00
你甩在 mq 里,他慢慢消费?
veightz
2018-08-18 23:35:39 +08:00
换我我选 mq
dengtongcai
2018-08-19 01:04:53 +08:00
消息 mq 吧,消费整个多线程,速度很快
metrxqin
2018-08-19 01:08:38 +08:00
能不能详细说明每次只能处理 300 个什么意思? RPC 调用次数单位时间内不超过 300 次? 如果是这样瓶颈在哪里?

还有就是 RPC 提供了什么功能?
night98
2018-08-19 04:42:28 +08:00
线程池就行了
bobuick
2018-08-19 08:04:43 +08:00
300w 数据,你场景应该不是 c 端用户的请求吧。
更像是 OTAP 场景了。你们可能应该要改改这架构设计了。
lihongjie0209
2018-08-19 09:27:54 +08:00
@ngx4ss #2 多了 timeout 意味着你同事的接口的处理能力可能就是 1000 左右, 你用多线程提交那就是 DDOS 攻击了
mkeith
2018-08-19 10:14:11 +08:00
你是怎么堆积到 300W 条数据的呢
Kyle18Tang
2018-08-19 10:27:31 +08:00
@metrxqin 估计是处理了 300 个以后,时间就差不多超时了
misaka19000
2018-08-19 10:44:04 +08:00
一次能处理 300 个,假如说你每一个请求需要 1 秒钟,我算了一下,把 300 万个处理完,只不过是用两个小时而已,这种时候你使用并发是没有用的,因为这个瓶颈在提供方那边,你没有办法进行处理

这是一个专为移动设备优化的页面(即为了让你能够在 Google 搜索结果里秒开这个页面),如果你希望参与 V2EX 社区的讨论,你可以继续到 V2EX 上打开本讨论主题的完整版本。

https://www.v2ex.com/t/481064

V2EX 是创意工作者们的社区,是一个分享自己正在做的有趣事物、交流想法,可以遇见新朋友甚至新机会的地方。

V2EX is a community of developers, designers and creative people.

© 2021 V2EX