1.询价介绍(包含背景,以及初始问题)
1)背景
做一个询价应用,这个应用需要从三个电商询价,然后保存在自己的数据库里。
2)代码以及出现问题
这种方案可靠安全,但是性能比较低下,因为是串行
2.方案改良
1) 方案1--》Future--》简单并行
1.实现:
2.问题:如果获取电商S1报价的耗时很长,那么即便获取电商S2报价的耗时很短,也无法让保存S2报价的操作先执行,因为这个主线程都阻塞在了 f1.get() 操作上
2) 方案2--》CompletionService---》批量并行
1.实现:
这样就可以保证先执行结束的先入队,并保存到数据库中
2.适用场景:Dubbo中有一种叫做Forking的集群模式,这种集群模式下,支持并行地调用多个查询服务,只要有一个成功返回结果,整个服务就可以返回了!例如你需要提供一个地址转坐标的服务,为了保证该服务的高可用和性能,你可以并行地调用3个地图服务商的API,然后只要有1个正确返回了结果r,那么地址转坐标这个服务就可以直接返回r了。
3)询价扩展:计算最低价
1.实现: