微服务-API网关-负载均衡

外部负载均衡

外部指的是API网关所管辖的微服务,这些微服务如果部署的是单实例,那么如果发生故障了,服务就不可用了。那么如何解决这个问题呢?

做高可用有两种方式:

  • HA:主服务和备用服务,只有在主服务挂了的时候备用服务才能顶上。
  • LoadBalancer: 负载均衡,多个服务实例按照某种策略被轮着访问。

我们在这里采用负载均衡的方式,说到负载均衡,你可能想到了Nginx、Apache、Haproxy,没错,这些都可以作为负载均衡器,但是我给各位的建议是尽量避免惯性思维。

为什么这么说呢?

就负载均衡本身来说,就是一些选择策略的问题,比如轮询、随机、最小连接数等等。各位完全可以自己实现这些功能,如果你懒得写,网上应该可以找到大把的开源方案。所以实在没有必要为了负载均衡就引入Nginx、Apache、Haproxy这些组件,在引入了这些组件后,还需要给它们做高可用集群,这会增加架构设计的复杂度。

有的RPC框架自带负载均衡功能(比如Dubbo),有的就没有(比如gRPC),所以如果你的微服务中全是Dubbo框架的服务,那么你不需要负载均衡,因为Dubbo已经帮你做掉这部分工作了,但是如果你的微服务中有gRPC这种的,你就需要设计自己的负载均衡模块。如下图所示:

你可能感兴趣的:(微服务,API网关,微服务,负载均衡)