我在读 Sam Newman 的书《Creating Microservices》,有这样一句话:
通过同步阻塞调用,微服务将某种类型的调用发送到下游进程(可能是另一个微服务)并阻塞,直到调用完成,并且可能直到收到响应。
俄语翻译:
在同步阻塞调用中,微服务调用下游进程(可能是另一个微服务)并阻塞,直到调用完成并且可能收到响应。
我想澄清一下 - 整个微服务(毫秒)是否被阻止,或者只是进行调用的线程?
我想象这样的工作:假设我们有 2 毫秒,A 和 B,在 Spring Web 或任何其他 Web 框架上完成。每个女士一份。
- 用户单击某些内容。
- 请求发送至 A。
- 在 A 中创建一个新线程(或从池中取出 - 这并不重要)来服务传入的请求。
- A 给 B 打电话并等待他的回复。
- 在这种情况下,并不是整个 A 被阻塞,而是只有服务请求的线程被阻塞。
因此,如果另一个用户也点击了某些内容,那么他的请求也将由单独的线程提供服务,因此 MS A 本身不会被阻塞并继续正常工作。那么为什么书上会说微服务被屏蔽呢?