edge-based 和 level-based 是什么意思?
What does edge-based and level-based mean?
"level-based"和"edge-based"一般是什么意思?
我从 kubernetes 文档中读到 "In other words, the system's behavior is level-based rather than edge-based":
https://github.com/GoogleCloudPlatform/kubernetes/blob/master/docs/api-conventions.md
和Google,我只发现:
http://www.keil.com/forum/9423/edge-based-vs-level-based-interrupt/
谢谢。
我想说他们在网站上解释得很好:
When a new version of an object is POSTed or PUT, the "spec" is updated and available immediately. Over time the system will work to bring the "status" into line with the "spec". The system will drive toward the most recent "spec" regardless of previous versions of that stanza. In other words, if a value is changed from 2 to 5 in one PUT and then back down to 3 in another PUT the system is not required to 'touch base' at 5 before changing the "status" to 3.
因此从该语句中,我们知道“level base”意味着如果主要目标不需要,则不需要满足 PUT 请求; 可以随意跳过 PUT 请求。
这让我假设“基于边缘的”系统需要满足每个 PUT 请求,即使可以跳过某些请求而不改变最终结果,因为那将是跳过请求的替代方法。
我不是 RESTful 开发者(您可以通过我的帐户 activity 查看)。我在其他任何地方都找不到这些东西的任何信息来源,所以我将根据他们给出的解释进行,这看起来很简单。
它还有一个更通用的定义(至少我们倾向于在文档中使用它的方式)。一段逻辑如果只依赖于当前状态就是"level based"。一段逻辑是 "edge-based" 如果它除了当前状态之外还依赖 history/transitions。
"Level based" 组件更具弹性,因为如果它们崩溃,它们可以恢复并只查看当前状态。 "Edge-based" 组件必须存储它们所依赖的历史记录(或依赖于存储它的其他组件),以便当它们恢复时可以查看当前状态和历史记录。此外,如果存在某种临时网络分区并且基于边缘的组件错过了一些更新,那么它将计算错误的输出。
但是,"level based" 组件通常效率较低,因为它们可能需要扫描大量状态才能计算输出,而不仅仅是读取增量。
许多成分是两者的混合物。
简单示例:您想构建一个组件,报告处于 READY 状态的 pods 的数量。基于级别的实现将从 etcd(或 API 服务器)获取所有 pods 并计数。基于边缘的实现会在启动时执行一次,然后只观察 pods 进入和退出 READY 状态。
"level-based"和"edge-based"一般是什么意思?
我从 kubernetes 文档中读到 "In other words, the system's behavior is level-based rather than edge-based": https://github.com/GoogleCloudPlatform/kubernetes/blob/master/docs/api-conventions.md
和Google,我只发现: http://www.keil.com/forum/9423/edge-based-vs-level-based-interrupt/
谢谢。
我想说他们在网站上解释得很好:
When a new version of an object is POSTed or PUT, the "spec" is updated and available immediately. Over time the system will work to bring the "status" into line with the "spec". The system will drive toward the most recent "spec" regardless of previous versions of that stanza. In other words, if a value is changed from 2 to 5 in one PUT and then back down to 3 in another PUT the system is not required to 'touch base' at 5 before changing the "status" to 3.
因此从该语句中,我们知道“level base”意味着如果主要目标不需要,则不需要满足 PUT 请求; 可以随意跳过 PUT 请求。
这让我假设“基于边缘的”系统需要满足每个 PUT 请求,即使可以跳过某些请求而不改变最终结果,因为那将是跳过请求的替代方法。
我不是 RESTful 开发者(您可以通过我的帐户 activity 查看)。我在其他任何地方都找不到这些东西的任何信息来源,所以我将根据他们给出的解释进行,这看起来很简单。
它还有一个更通用的定义(至少我们倾向于在文档中使用它的方式)。一段逻辑如果只依赖于当前状态就是"level based"。一段逻辑是 "edge-based" 如果它除了当前状态之外还依赖 history/transitions。
"Level based" 组件更具弹性,因为如果它们崩溃,它们可以恢复并只查看当前状态。 "Edge-based" 组件必须存储它们所依赖的历史记录(或依赖于存储它的其他组件),以便当它们恢复时可以查看当前状态和历史记录。此外,如果存在某种临时网络分区并且基于边缘的组件错过了一些更新,那么它将计算错误的输出。
但是,"level based" 组件通常效率较低,因为它们可能需要扫描大量状态才能计算输出,而不仅仅是读取增量。
许多成分是两者的混合物。
简单示例:您想构建一个组件,报告处于 READY 状态的 pods 的数量。基于级别的实现将从 etcd(或 API 服务器)获取所有 pods 并计数。基于边缘的实现会在启动时执行一次,然后只观察 pods 进入和退出 READY 状态。