我正在与Elixir合作,但我相信这个问题也适用于Erlang。
我正在研究一个可能会创建数十万个相同类型的群组流程的系统。每个小组将有2名工人和一名本地监督员。问题是谁将监督当地的监管人员?
我可以想象两种策略
要么有意义还是有其他方法?欢迎任何建议
答案 0 :(得分:3)
"它取决于"。
"巨大的清单"和#"数千"真的是在不同的领域。现代机器上的简单迭代 fast 。高达五个,低六个项目我不会有任何疑虑,系统经常必须遍历这个大小的列表,并且可能超过我不太关心的那个:
li
(列表遍历为25毫秒,有些算术 - 如果崩溃的进程以如此小的延迟重新启动,我通常会很高兴)
当然 - 在一天结束时,您预计会进行自己的性能测试,将结果与预期的本地主管崩溃率进行比较,查看系统的要求,并比较所有这些数字得出答案。
与此同时,使用最简单的方法:监控平面层次结构的单个全局主管。
答案 1 :(得分:0)
方法之一非常有效。只要任何子组拥有自己的本地主管,全局主管就不需要遍历任何内容,后者它不打算崩溃。 / p>
当叶子工作人员发生某些事情时,这个本地主管会注意重新启动它,全局主管甚至不会知道那里发生了错误在树下。
如果,OTOH,您希望您的本地主管有时会故意崩溃,那么每个本地主管都应该用它自己的监督,比如说,中级主管,负责重启。在这种情况下,全局主管将管理这些中间主管,一切都会再次变得很酷。
答案 2 :(得分:0)
在ETS模式下使用director
并且不用担心孩子的数量。
在ETS模式下,您也可以直接从Table中阅读有关儿童的一些信息。