

本文属于机器翻译版本。若本译文内容与英语原文存在差异，则一律以英文原文为准。

# 同步通信
<a name="synchronous"></a>

在同步通信中，客户端会向服务发起请求，如下图所示。示例包括获取信息的请求（例如 `HTTP GET` 请求）或更改数据的请求（例如 `HTTP PUT` 请求）。无论哪种情况，客户端都需要等待服务器做出响应后再继续。同步调用对大多数开发人员而言并不陌生，其实施和故障排查都较为简单，在许多情况下更是被广泛接受的通信标准。

![客户端与微服务或者微服务与微服务之间的同步通信。](http://docs.aws.amazon.com/zh_cn/prescriptive-guidance/latest/modernization-integrating-microservices/images/synchronous-communication.png)


同步通信的优势包括：
+ **流量控制可预测** – 确定性执行和清晰的请求-响应循环，相比异步通信更易于理解。
+ **强一致性** – 即时确认数据更改和状态更新。
+ **错误处理简单** – 直接传播错误和异常。
+ **易于调试** – 直接跟踪和监控请求。
+ **协议支持** – 诸如 HTTP、REST 等成熟协议，使得实施过程变得简单明了。

同步通信存在一些缺点：
+ **紧密耦合** – 服务之间对彼此可用性的直接依赖关系。
+ **网络影响** – 因持续保持连接而导致网络负载增加。
+ **资源利用率** – 因维持连接状态而导致内存使用量增加。
+ **级联故障** – 某项服务中的问题能够在系统中迅速蔓延。