知识卡片
任务分配器是逻辑角色,未必要独立存在
内容
计算高可用架构里”任务分配器”不要求系统必须有独立模块承担——它可隐藏在已有组件里,比如Nginx做反向代理时顺带承担任务分配职责,或ZooKeeper的Follower节点转发写请求给Leader、自己处理读请求,本身就在扮演该角色。发散:这是”职责”和”模块”要区分开的例子——先想清楚需要哪些逻辑职责,再决定独立承担还是复用已有组件,不必为理论模型里的角色单独造服务,避免过度设计。
参考来源
- 位置:《从0开始学架构》第31章《27|如何设计计算高可用架构?》(源文件:_epub-src/OEBPS/Text/part0030_split_000.html)
- 结论依据:原文举例"Nginx将页面请求发送给Web服务器……这里的Nginx角色是反向代理系统,但是承担了任务分配器的职责,而不需要Nginx做反向代理,后面再来一个任务分配器",以及"ZooKeeper中的Follower节点,当接收到写请求时会将请求转发给Leader节点处理……这里的Follower就相当于一个逻辑上的任务分配器"。
- 原始内容:Nginx将页面请求发送给Web服务器……这里的Nginx角色是反向代理系统,但是承担了任务分配器的职责……ZooKeeper中的Follower节点,当接收到写请求时会将请求转发给Leader节点处理,当接收到读请求时就自己处理,这里的Follower就相当于一个逻辑上的任务分配器。