Python系统设计。主从?还是多个大师?

时间:2016-02-27 22:48:18

标签: python mysql system-design

最初这是一个小项目,只有150个帐户,我在python中编写了一个selenium程序,用它们完成一项小任务。它使用一台计算机,大约需要5个小时。但是,现在我希望扩展到1000个帐户。出于显而易见的原因,我不想在一台计算机上执行此操作,此任务需要每天执行一次,并且在一台计算机上完成此任务显然需要大约30-35小时。我想使用多台机器,但也希望能够轻松扩展到三个,四个或更多。

我已将所有帐户的数据移动到亚马逊云数据库中,并可以通过我的python程序轻松连接到它。但是,正如我之前提到的,我希望这个项目可以轻松扩展。我不想硬编码值,也就是说有一台计算机做帐户1-500而另一台做501-1000(如果我增加500个帐户和2台机器怎么办?我希望每台机器做1500/4)。我想到了一个主奴方法。在每台机器上我有一个程序,可以使用一些帐户作为数组调用。并且在我的机器上运行的主程序每24小时可以发送一个命令,其中包含每台机器应该使用的帐户。

然后我希望程序将数据返回给我,当每个从站完成时,主程序将组合每个从站发回的数据并相应地更新表。或者每个奴隶独立更新表,但我不确定这是否可能由于表锁(如果有人可能对此进行评论,那么它也会有帮助)

感谢阅读!

编辑:如果您认为这太宽泛,我不会找到确切的答案。只是试图找到之前做过这样的事情的人。只列出我可以研究的技术或方法可以帮助我很多

1 个答案:

答案 0 :(得分:0)

之前我做过类似的事情并最终使用了主从设计。

我有一个拥有“工作”数据库的大师,而奴隶则要求他们完成任务。

在我的情况下,这个过程是这样的:

  1. 作业的从属查询主文件
  2. 主服务器发送50个作业并在带有从属名称的数据库中更改状态
  3. 奴隶完成工作并告诉大师
  4. 在DB中更改状态以完成并发送新任务
  5. 重复直到队列全部完成
  6. 这样我可以添加更多的奴隶,因为作业队列变大了,他们可以有不同的性能。我的一些奴隶比最慢的奴隶多做了3倍,这取决于互联网连接和页面加载时间。