Knative:系统挑战、功能特性与控制机制解析
1. 命中计数器系统的问题
在命中计数器系统中,将Web请求/响应和事件流的图表结合起来看,能发现Web流是同步的,而事件流是异步的。这一区别会带来诸多问题:
- 数据更新不及时 :由于事件流是异步的,无法保证在下次访客到来之前 hits.png 已更新。比如,刷新页面时可能多次看到相同的命中计数。
- 计数异常 :不同访客可能看到不同的异常情况,如计数跳跃、倒退。这可能是因为后续渲染覆盖了早期渲染,或者事件到达顺序混乱,甚至部分事件未到达。
- 内存存储问题 :如果命中计数器仅将值保存在内存中,当Knative的自动伸缩器认为系统空闲时,会将命中计数器数量缩减为零,导致计数丢失,下次启动时计数重置为零。若有多个命中计数器,它们各自独立计数,实际的命中计数图像会受流量影响,但并非如预期那样。
解决这些问题的方法是将状态存储在共享位置,与操作逻辑分离。例如,使用Redis来递增一个公共值,或者让每个实例监听命中事件,若传入事件的命中计数高于自身计数,则更新自身计数,但要避免陷入无限事件循环。
2. 系统变更
Knative将“运行事物”和“变更事物”封装在服务中。当服务发生变更时,Knative会使系统与变更同步。其默认的蓝绿部署行为在更新服务时,能确保无流量丢失,且仅在安全时切换负载。具体流程如下:
1. 更新前 :更新前到达的用户看到主页服务器v1提供的现有HTML。
2. <
超级会员免费看
订阅专栏 解锁全文
24

被折叠的 条评论
为什么被折叠?



