我正在开展一个项目,该项目将在美国不同地点的机器上安装多个芹菜工人,并通过互联网进行通信。
我最好将我的Django项目分发到每台机器并使用数据库凭据配置它们到我的数据库主机,或者我应该有一个“主”Django /数据库主机,它为远程芹菜任务和工作者提供REST API点击数据库访问?
主要寻找利弊以及我没有想到的任何因素。
我可以提供单个简单的API端点,它提供我的任务查询所需的所有数据,以及可以创建我的任务需要创建的所有数据库条目的简单POST API端点。
我只能说10名远程工作人员每分钟可能会完成1次请求。
我认为这可能意味着我的担忧不是关于请求/响应开销,而是关于可维护性,架构,安全性......
答案 0 :(得分:2)
答案取决于过多的变量,关注点,力量和其他因素而不是"它取决于......"。
我认为您已经考虑过以下优点和缺点,但无论如何:
使用API可以实现更长的请求/响应周期(显然),并对Django项目(前端服务器,应用服务器等)施加相当大的负担。此外,它意味着您的任务无法使用所有数据库功能(复杂查询,聚合等)。
OTHO添加API层将使工作者与内部数据库模式隔离开来,这可以使迁移(在Django端)和部署更容易,因为您不必停止所有工作人员,部署到每个人并重新启动工人。好吧,它甚至可以在不影响工作人员的情况下改变API方面的技术(不是我认为有很多理由这样做,但无论如何......)。但这也意味着您需要维护一个完整的API,并且模型更改的可能性 - 或者最后一部分 - 将会影响您的API和/或任务代码(如果更改是关于添加工作者应该使用的功能)等)。
呃,这真的取决于(是的,我已经说过了,不是吗?)你的项目的需求和限制,只有你/你的团队知道哪个解决方案最符合你的项目。