对于基于云的应用和微服务来说,服务发现至关重要。它为应用团队提供了一种快速对在运行环境中的服务数量进行水平伸缩的能力;其次,它有助于提高应用程序的弹性,减少个别服务不可用时对整个应用造成的损失。
- 对比传统服务发现
传统的服务发现通常由DNS和网络负载均衡器的组合来实现服务的发现。这种模型适用于在企业数据中心内部运行的应用程序,以及在一组静态服务器上运行少量的服务情况,但对于基于云的微服务应用程序来说,传统的服务发现存在一下几个弊端:
1.1、单点故障
虽然负载均衡器可以实现高可用,但是存在整个基础设施中的单点故障。如负载均衡器出现故障,那么依赖他的每个应用程序都会出现故障。虽然可以使用负载均衡器高度可用,但负载均衡器往往成为应用程序的集中式阻塞点。
1.2、有限的水平伸缩性
大部分商业负载均衡器收到两件事的限制:一是使用热插拔模型实现冗余,因此只能使用单个服务来处理负载,而辅助负载均衡器仅在主负载均衡器中断的情况下,才能进行故障切换。这种架构本质上受到硬件的限制。第二,商业负载均衡器具有有限数量的许可证,它面向固定容量模型而不是可变的模型。
1.3