题目举例,假设请求参数 a=1 b=2 , 微服务返回 a + b 的计算结果
需求
- 单次请求后,在可容忍的时间内返回结果(比如1000毫秒内)
- 单次并发量很大(比如3w甚至更多)
- 假设机器数量有限,用尽量少的机器来实现。(需要借助缓存或消息中间件;只答扩充集群机器是不想要的答案)
- 用上redis或其他mq
提问者的理解:
这个还不是抢购系统那种高并发。抢购那种高并发,可以将商品数量预先写到redis中,然后再递减,这样直接请求redis进行list的pop操作或者单个值的decryby操作,就可以减少库存,数据库操作可以后续来做。但问题中这种需要实时计算,不能使用直接操作redis拿结果的方法。怎么才能在有限的机器内,借助redis或者其他mq,搭出一个能超出“单台裸机”处理并发能力的架构。
按照你的提问内容,你这个是属于计算密集型应用服务,不是IO密集型服务,通过redis或者MQ可能不会有太大的帮助,
计算密集型的应用提高处理速度对代码质量和算法有更高的实现要求。或者转而使用其他编译型语言实现。
如果你的问题是要处理类
A+B
计算结果,或者对某些固定的请求做计算,那你需要的是缓存。如果你要处理计算量很大,并发数很高的请求,请求的客户端不要求立即返回处理结果,那你可以使用MQ,将计算任务通过消息队列分发至其他服务器处理或本机自身延时处理。