宝石流云|SpringCloud微服务架构开发实战:微服务的消费模式( 二 )


DNS域名解析可以提供最简单方式的服务端发现功能 。 它作为域名和地址相互映射的一个分布式数据库 , 能够使人更方便地访问互联网 。 人们在通过浏览器访问网站时只需要记住网站的域名即可 , 而不需要记住那些不太容易理解的IP地址 。 每个DNS域名可以映射多个服务实例 。 但DNS也有限制 , 例如 , 它无法及时感知服务实例是否有效 , 不能够按服务器的处理能力来分配负载等 。 所以一个常用的解决方法是在DNS服务器与服务实例之间搭建一个负载均衡器 。
在商业产品领域 , Amazon公司的ElasticLoadBalancing(https:/laws.amazon.com/cn/elasticload-balancing/)提供了服务端发现路由的功能 , 可以在多个AmazonEC2实例之间自动分配应用程序的传入流量 。 它可以实现应用程序容错能力 , 从而无缝提供路由应用程序流量所需的负载均衡容量 。
ElasticLoadBalancing提供两种类型的负载均衡器 , 一种是Classic负载均衡器 , 可基于应用程序或网络级信息路由流量;另一种是应用程序负载均衡器 , 可基于包括请求内容的高级应用程序级信息路由流量 。 Classic负载均衡器适用于在多个EC2实例之间进行简单的流量负载均衡 , 而应用程序负载均衡器则适用于需要高级路由功能、微服务和基于容器的架构的应用程序 。 应用程序负载均衡器可将流量路由至多个服务 , 也可在同一EC2实例的多个端口之间进行负载均衡 。 这两种类型均具备高可用性、自动扩展功能和可靠的安全性 。
在开源领域 , Kubernetes(https:/kubernetes.io)及NGINX(http:/nginx.org/)也能用作服务端发现的负载均衡器 。 NGINX是一个高性能的HTTP和反向代理服务器 , 在连接高并发的情况下 , 可以作为Apache服务器不错的替代品 , 在分布式系统中 , 经常被作为负载均衡服务器使用 。
Kubernetes作为Docker生态圈中的重要一员 , 是Google多年大规模容器管理技术的开源版本 。
其中 , Kubernetes的Proxy(代理)组件实现了负载均衡功能 。 Proxy会根据LoadBalancer将请求透明地转发到集群中可用的服务实例 。
使用服务端发现模式的好处是 , 它通常会简化客户端的开发工作 , 因为客户端并不需要关心负载均衡的细节工作 , 其所要做的工作就是将请求发到负载均衡器即可 。 市面上也提供了很多商业或开源的负载均衡器的实现 , 开箱即用 , 方案也比较成熟 。
实施服务端发现模式也有难点 , 一个比较大的问题是需要考虑如何来配置和管理负载均衡器成为高可用的系统组件 。
本篇文章内容给大家讲解的是微服务的消费模式下篇文章给大家讲解常见微服务的消费者;觉得文章不错的朋友可以转发此文关注小编;感谢大家的支持!


推荐阅读