
72
|
第
4
章
请求主题
用于发送请求的专用队列。这个主题可以共享给其他请求,但最好在主题的使用与吞吐
量和响应时间之间保持平衡。此外,同一主题中的请求应该被发送到相同的响应系统。
响应系统
一个接收请求并返回响应的系统。理想情况下,这个系统本身没有状态,但可以与有状
态的系统协作。
响应主题
用于响应消息的专用队列。需要注意分配给响应主题的请求系统的数量。其数量越多,
被请求系统丢弃的响应就越多,因为它们不需要那些发给其他请求系统的响应。
响应消费者
监听响应主题的消费者,使用请求
map
将响应链接回发出请求的原始线程。如果该请
求不在请求
map
中,说明响应已经被处理,或者响应针对的是另一个请求系统,只是
使用了相同的响应主题。
这种接口设计的最大优点是可以解耦请求的处理与响应,并在时间限制方面为响应者提供
灵活性,以便将结果返回给请求者。
对于需要花费很长时间(几秒到几小时)才能处理完的请求,这通常是一个很好的解决方
案。但这并不意味着不能将它用在更加实时的解决方案中。假设使用
Kafka
作为队列,并
在返回响应之前做一些基本处理,在这种情况下,可能会有几毫秒到几十毫秒的往返延
迟,具体取决于所查询的系统。
4.4.3
同步请求
–
响应
我们要探讨的最后一种接口是同步请求
–
响应,这种接口对响应时间有严格的
SLA
要求。
在这个模式中,不需要使用队列。相反,只需要老式的
Web
服务器。如图
4-13
所示,有
一个请求系统发送请求,然后等待响应系统返回响应;请求和响应发生在单个事务中,这
在响应保证、减少延迟以及消除重复响应方面具有优势。 ...