服务发现vs负载均衡
我想了解在哪种情况下,我应该通过负载平衡器选择服务注册表。服务发现vs负载均衡
从我的理解这两个解决方案覆盖了相同的功能。
举例来说,如果我们考虑consul.io作为一个功能列表,我们有:
- 服务发现
- 健康检查
- 键/值存储
- 多数据中心
如果负载平衡器像Amazon ELB例如有:
- 配置只能从负载平衡器
- 接受流量使用以下协议接受流量:HTTP,HTTPS(安全HTTP),TCP和SSL(安全TCP)
- 分发向多个可用区中的EC2实例发送请求
- 连接数与负载平衡器接收到的并发请求数成比例
- 配置Elastic Load Balancing用于监视EC2实例运行状况的运行状况检查向负载平衡器注册,以便它只能将请求发送到健康实例
- 您可以在使用安全(HTTPS/SSL)连接的网络上使用端到端流量加密
- [EC2-VPC] You可以创建面向Internet的负载均衡器,该平衡器通过Internet从客户端接收请求并将它们路由到您的EC2实例或面向内部的负载均衡器,该负载均衡器从VPC中的客户端获取请求并将它们路由到您的私有EC2实例子网。 EC2-Classic中的负载平衡器始终面向互联网。
- [EC2-Classic] EC2-Classic的负载均衡器支持IPv4和IPv6地址。 VPC的负载平衡器不支持IPv6地址。
- 您可以使用CloudWatch指标,访问日志和AWS CloudTrail监控负载均衡器。
- 您可以将面向Internet的负载平衡器与您的域名相关联。
- 等
因此,在这种情况下,我不理解为什么我会选像consul.io
或netflix eureka
在Amazon ELB
服务发现。
我有一种预感,这可能是由于实施客户端服务发现 VS 服务器端的服务发现,但我不能肯定。
您应该将其视为客户端负载平衡与专用负载平衡。客户端负载均衡器包括贝克街(http://bakerstreet.io);客户端负载均衡器包括Baker Street(http://bakerstreet.io);客户端负载均衡器包括Baker Street(http://bakerstreet.io); Baker Street(http://bakerstreet.io) SmartStack(http://nerds.airbnb.com/smartstack-service-discovery-cloud/);或领事HA代理(https://hashicorp.com/blog/haproxy-with-consul.html)。
客户端LB使用服务发现组件(Baker Street使用无状态发布/订阅服务发现机制; SmartStack使用ZooKeeper; Consul HA代理使用Consul)作为其实现的一部分,但它们提供健康检查/您可能正在寻找的端到端功能。
服务发现组件通常有一个通知组件。这不是一个负载均衡器,尽管有些可能有这样的能力。它可以通知注册客户有关更改,例如负载均衡器正在关闭。
客户端可以查询服务发现/注册表以获取正在运行的负载平衡器。而负载平衡器在客户端关闭时不会拒绝客户端。
你也应该阅读有关EUREKA
亚马逊ELB提供的EC2实例基于负载均衡服务请求和EC2实例的IP地址并不一致,所以你也可以使用EUREKA哪些呢同样的工作,但基于服务注册和客户端负载平衡,其中每个区域的应用程序客户端都有注册表。 你可以阅读更多关于它在这里: https://github.com/Netflix/eureka/wiki/Eureka-at-a-glance
https://stackoverflow.com/questions/46807757/service-discovery-on-aws-ecs-with-application-load-balancer 这个帖子似乎也有同样的关注 –