主要观点:
- 在 Elixir 中设置集群后,在集群的其他节点上运行代码很容易,介绍了一种类似 FLAME 但无自动缩放的 API。
- 实现了一个分布式池(DistributedPool),通过 DynamicSupervisor 和 pg 来管理节点和进程,包括加入池、查找可用监督者、在监督者下放置子进程等操作。
- 与 FLAME 相比,此系统在处理进程超时和链接父进程与子进程方面有所不同。
关键信息:
- 可通过
Node.spawn在集群节点上运行代码,还希望有更好的 API,如 FLAME。 - FLAME 可通过指定池名运行函数,无需硬编码节点名。
- 实现的分布式池 API,包括
call和place_child等函数。 - 分布式池的实现细节,如节点启动 DynamicSupervisor 加入进程组等。
- 查找可用监督者的方法,通过查询每个监督者的子进程数量来选择。
- 放置子进程时设置进程组领导等操作。
重要细节:
- 示例代码展示了如何在分布式池中运行函数和放置子进程。
- 提到当前设置只有少量节点,暂用当前查询每个监督者的方式。
- 与 FLAME 的差异,如有无 Terminator 进程和是否链接父进程与子进程。
- 作者正在寻找下一份工作,欢迎推荐合适机会。
**粗体** _斜体_ [链接](http://example.com) `代码` - 列表 > 引用。你还可以使用@来通知其他用户。