服务计算最后一次作业——异步 HttpClient 原理实验
课程地址:
https://jersey.github.io/documentation/latest/rx-client.html#d0e5556
练习要求:
1.依据文档图6-1,用中文描述 Reactive 动机
图6-1:
简单描述为:一个用户同时申请多个服务,直观上可以为每一个服务都发送一次申请,但是这样不利于效率工作。使用无扩展的客户服务之后,用户只需要为所有的服务申请一次即可得到所有的响应,提高了效率。
2.使用 go HTTPClient 实现图 6-2 的 Naive Approach
图6-2:
3.为每个 HTTP 请求设计一个 goroutine ,利用 Channel 搭建基于消息的异步机制,实现图 6-3
图6-3:
4.对比两种实现,用数据说明 go 异步 REST 服务协作的优势
通过2和3的实现,运行代码的结果如下:
使用第一种方法:
使用第二种方法:
对比:
第一种方法比第二种方法明显处理时间要长许多,在运行过程可以观察到第一种方法得出结果之前需要几秒的延迟,而第二种方法几乎没有延迟。