Architecture 基于Elixir OTP的应用程序体系结构

Architecture 基于Elixir OTP的应用程序体系结构,architecture,elixir,otp,Architecture,Elixir,Otp,例如,我研究长生不老药,决定申请ping代理列表。其实质是,您需要定期从列表下载带有代理的链接,并且在许多线程中ping此列表,只留下一个活动代理。在我看来: 有一名pinger流程主管。每个pinger都知道自己的配置(ping等超时)。一旦启动,pinger将向导入程序进程发送一条消息“为ping提供代理”,并等待响应 有一个进口商主管。导入者接受一条请求为ping提供代理的消息,如果他的代理列表为空,他会回答pinger“只要没有代理”,并下载一个新代理列表。之后,等待pinger的消息。

例如,我研究长生不老药,决定申请ping代理列表。其实质是,您需要定期从列表下载带有代理的链接,并且在许多线程中ping此列表,只留下一个活动代理。在我看来:

有一名pinger流程主管。每个pinger都知道自己的配置(ping等超时)。一旦启动,pinger将向导入程序进程发送一条消息“为ping提供代理”,并等待响应

有一个进口商主管。导入者接受一条请求为ping提供代理的消息,如果他的代理列表为空,他会回答pinger“只要没有代理”,并下载一个新代理列表。之后,等待pinger的消息。收到消息后,他发送有关代理pinger的信息。Pinger完成了他的工作,将ping结果发送给进口商。导入程序存储代理


这个方案是最优的吗?计划Pinger不超过1000个,但不少于500个。为ping构建代理并通过进程之间的消息返回结果是否合适?进口商是否能够对pinger的消息做出响应?或者让导入者下载代理列表(例如,在redis中)更好吗?pinger自己从那里获取ping代理并自己处理结果?

以什么方式优化?使用最少的内存?在最短的时间内执行?你是否尝试过你提出的解决方案,看看它是否有任何明显的问题?我已经读了三遍这个问题,但仍然不清楚你试图实现什么。ping的频率是多少?如何处理ping结果?“留下一个活的代理”是什么意思?我不相信有一个“最佳”的方式来完成你正在做的事情。这就是我的意思--试试你的方法,看看会发生什么。如果你有问题,那么就发布关于具体问题的问题。我也想建议GenStage。它非常适合批量作业。通过使用它,并将您的工作分为各个阶段,您正在做正确的事情,无论是在OTP方面还是在性能方面。好的,这是非常需要的信息。问题是关于利率限制,我同意,这可能是一条出路。请查看
GenStage
,如果您在架构方面需要更多帮助,请与我们联系。