- html - 出于某种原因,IE8 对我的 Sass 文件中继承的 html5 CSS 不友好?
- JMeter 在响应断言中使用 span 标签的问题
- html - 在 :hover and :active? 上具有不同效果的 CSS 动画
- html - 相对于居中的 html 内容固定的 CSS 重复背景?
最近有几种服务发现工具变得流行/“主流”,我想知道在哪些主要用例下应该使用它们而不是传统的负载均衡器。
使用 LB,您可以在平衡器后面聚集一堆节点,然后客户端向平衡器发出请求,然后平衡器(通常)将这些请求轮询到集群中的所有节点。
通过服务发现(Consul、ZK 等),您可以让集中的“共识”服务确定特定服务的哪些节点是健康的,并且您的应用程序会连接到该服务认为是健康的节点。 因此,虽然服务发现和负载平衡是两个独立的概念,但服务发现为您提供了负载平衡作为一种方便的副作用。
但是,如果负载均衡器(例如 HAProxy 或 nginx )内置了监控和健康检查,那么您几乎可以将服务发现作为负载均衡的副作用!这意味着,如果我的 LB 知道不将请求转发到其集群中的不健康节点,那么这在功能上等同于共识服务器告诉我的应用程序不要连接到不健康的节点。
所以对我来说,服务发现工具感觉就像是负载均衡器的“六合一,六合一”。我在这里错过了什么吗?如果有人有一个完全基于负载平衡微服务的应用程序架构,那么切换到基于服务发现的模型有什么好处(或没有好处)?
最佳答案
负载平衡器通常需要它平衡流量负载的资源端点。随着微服务和基于容器的应用程序的增长,运行时创建的动态容器(docker 容器)是短暂的并且没有静态端点。这些容器端点是短暂的,它们会随着缩放或其他原因被驱逐和创建而改变。 Consul 等服务发现工具用于存储动态创建的容器(docker 容器)的端点信息。在容器主机上运行的 consul-registrator 等工具在 consul 等服务发现工具中注册容器端点。 Consul-template 之类的工具将在 consul 中监听容器端点的更改,并更新负载均衡器 (nginx) 以将流量发送到。因此,Consul 等服务发现工具和 Nginx 等负载平衡工具共存,分别提供运行时服务发现和负载平衡能力。
跟进:临时节点(来来去去、生死存亡)与传统 VM 等“永久”节点相比有什么好处?
[DDG]:我很快想到的事情:像 docker 容器这样的临时节点适用于 API 等无状态服务。(使用外部卷的持久性容器具有吸引力 - 卷驱动程序等)
关于load-balancing - 服务发现工具和检查节点运行状况的负载均衡器在概念上有什么区别?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/32334161/
@messages = current_user.message_participantions.where(:read => false, :updated_at > 5.days.ago) 5 天
for ($i=1; $i query("UPDATE `jpa` SET `war` = $b WHERE `id` = $a"); $mysqli->query("UPDATE `
我试图根据数据中的 future 日期是否会发生条件来标记每一行。这种情况过去是否发生过并不重要。此外,我正在尝试按组执行此标记。 考虑这个问题的一个直观方法是是否有人会在未来购买裤子。 id
我的数据通过 ajax 返回到 Blade 中的表中,但我需要在返回的数据中使用过滤器。 示例 如果我使用 Blade 环,我可以使用@if ($loop->last)为了对我的最后一条记录进行特殊更
我有一个进程会触发多个请求,这些请求又会触发多个 Webhooks。当我收到所有网络钩子(Hook)时,我知道该过程已完成。我的模型看起来像这样。 { name: 'name', st
到目前为止,我知道 EOF 是一个特殊字符,自动插入到文本文件的末尾以指示其结束。但我现在觉得需要对此进行更多澄清。我在 Google 和 Wikipedia 页面上查看了 EOF,但他们无法回答以下
我在 javascript (React.j) 中编写了以下使用 for 循环的函数: getOpponentTeam: function(playerTeamId){ var matches =
我是 codeigniter 的新手,我想通过传递许多条件来选择用户的详细信息。我通过了一些条件,例如: $this->db->where ( 'userprofile.Disability', $
我是一名优秀的程序员,十分优秀!