1.开发语言java,框架springboot等。
2.业务场景:以电子卡激活为例,服务B接收到用户A(也可能是第三方程序)提交的激活电子卡请求,这一笔订单中需要激活n张卡(1<=n<=200),每次激活一张卡都需要向C发起一次HTTP请求,而且C每次激活都需要一定的时间(时间在几十毫秒到几秒间),而且B给A返回此次订单中所有激活卡的信息(从C获取到卡密或者激活失败);
3.主要问题在从B到C之间的设计,如何并发的发送这n次请求,而且将返回的信息归档在同一个订单号中返回给
A,并且使用较少的时间。
4.之前使用了akka,但是对akka不大熟悉,正在努力。
这么好的问题为什么没有关注度?
上面的回答中的方式是使用同步的 HTTP 请求,这样的好处是简单不容易出错,缺点肯定就是效率会偏低和占用不必要的 CPU 资源。
讲下我的思路:
DefferedResult
,WebAsyncTask
)BlockingQueue
);另一个线程不停的(或者每隔一小段时间)从队列中取出消息并进行消费:即根据订单号将结果进行归档,通过某个订单号对应的已归档请求的个数来判断是否将结果返回给 A。