读gRPC Microservices in Go第五章

读gRPC Microservices in Go第五章

分布式微服务架构中,一个服务可能有多个相同的后端来处理一定的消费者负载。这些后端具有离散的容量,并且客户端的负载通过负载均衡器分配

这种连接被称为服务器端负载均衡:客户端连接到单个端点,该端点将请求代理到后端实例

在服务器端负载均衡中,客户端向负载均衡器(或代理)发起RPC调用。负载均衡器将RPC调用分配给可用的应用实例之一(例如,支付服务)

客户端负载均衡有不同种类的负载均衡算法(http://mng.bz/rWVB),客户端可以最小配置忽略负载报告,并使用轮询算法,其中流量以轮转方式分配给后端实例。在客户端负载均衡中,客户端知道应用的多个后端实例的地址,并选择一个可用实例进行RPC调用。客户端从后端实例收集见解,以决定调用哪个后端服务以公平分配。在理想情况下,客户端向后端实例发起RPC调用,实例返回其负载报告,以便客户端决定实例选择(见图5.3)。

服务器端LB:

  • 优点:易于配置、客户端不需要知道后端
  • 缺点:更高的延迟、有限的吞吐量可能影响可扩展性 客户端LB:
  • 优点:性能更好,因为没有额外的跳转、没有单点故障
  • 缺点:配置困难、跟踪实例健康和负载、特定语言的实现

可以有多种实现支付端口的适配器。如果你的适配器实现适用于支付端口合约并包含与端口接口相同的函数签名,你可以轻松地将该适配器插入支付端口。这是通过依赖注入完成的:你拥有支付端口的实际实现,并且在应用程序初始化期间简单地初始化并将其添加到订单领域模型中,以便在支付步骤中调用它。