1 Master, 2 Slaves, unter der virtuellen Maschine Ubuntu ist die Konfiguration wie folgt:
master 的 config.json
:
{ "taskdb": "mysql+taskdb://pyspider:pyspider-pass@192.168.209.128:3306/taskdb", "projectdb": "mysql+projectdb://pyspider:pyspider-pass@192.168.209.128:3306/projectdb", "resultdb": "mysql+resultdb://pyspider:pyspider-pass@192.168.209.128:3306/resultdb", "message_queue": "redis://192.168.209.128:6379/db", "phantomjs-proxy": "192.168.209.128:25555", "scheduler":{ "xmlrpc-host":"0.0.0.0", "delete-time":10}, "webui": { "port": 5555, "username": "", "password": "", "need-auth": false} }
Auf Host ausführen
/usr/local/bin/pyspider -c /home/pu/pyspider/conf.json Zeitplan
/usr/local/bin/pyspider -c /home/pu/pyspider/conf.json webui
/usr/local/ bin/pyspider -c /home/pu/pyspider/conf.json phantomjs
slave 的 config.json
:
{ "taskdb": "mysql+taskdb://pyspider:pyspider-pass@192.168.209.128:3306/taskdb", "projectdb": "mysql+projectdb://pyspider:pyspider-pass@192.168.209.128:3306/projectdb", "resultdb": "mysql+resultdb://pyspider:pyspider-pass@192.168.209.128:3306/resultdb", "message_queue": "redis://192.168.209.128:6379/db", "phantomjs-proxy": "192.168.209.128:25555", "fetcher":{"xmlrpc-host":"192.168.209.128"} }
Auf zwei Sklaven laufen
/usr/local/bin/pyspider -c /home/pu/pyspider/conf.json fetcher
/usr/local/bin/pyspider -c /home/pu/pyspider/conf.json Prozessor
/usr/local/ bin/pyspider -c /home/pu/pyspider/conf.json result_worker
Drei Terminals
Ich habe es zuerst über die Befehlszeile ausgeführt. Ich habe Supervisor noch nicht zum Verwalten des Prozesses verwendet. Nachdem das verteilte Debuggen erfolgreich war, werden nur einige weitere Terminals geöffnet. Aber es ist sehr seltsam, dass das Crawler-Programm reibungslos läuft, aber die Zeit, die für die Ausführung auf einer einzelnen Maschine benötigt wird, ist die gleiche wie bei der Ausführung auf drei Maschinen. Können Sie das bitte erklären?
Ich habe mir die vom Terminal ausgegebenen Informationen angesehen. Die von den beiden Slaves extrahierten URLs werden nicht wiederholt, sondern die Zeit wird durch Intervalle getrennt. Beispielsweise läuft Slave1 4 Sekunden lang und Slave2 läuft dann 3 Sekunden lang. Sie sind nicht parallel. Es gibt eine Reihenfolge, so seltsam! Könnte es sein, dass im Zeitplan Aufgaben einzeln erledigt werden und nicht gleichzeitig erledigt werden können?
在控制台里控制速度。不管你是不是分布式,只要速度设置的一样,那么用的时间就一样。只有在硬件资源不够用时(或是说硬件有瓶颈达不到你设置的速度时)分布式才会提现出跑的快。个人这么理解