1 maître, 2 esclaves, sous la machine virtuelle ubuntu, la configuration est la suivante :
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} }
Exécuter sur l'hôte
/usr/local/bin/pyspider -c /home/pu/pyspider/conf.json planning
/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"} }
Courir sur deux esclaves
/usr/local/bin/pyspider -c /home/pu/pyspider/conf.json fetcher
/usr/local/bin/pyspider -c /home/pu/pyspider/conf.json processeur
/usr/local/ bin/pyspider -c /home/pu/pyspider/conf.json result_worker
Trois bornes
Je l'ai d'abord exécuté à partir de la ligne de commande. Je n'ai pas encore utilisé Supervisor pour gérer le processus. Je souhaite l'utiliser pour gérer le processus une fois le débogage distribué réussi. La ligne de commande ouvre simplement quelques terminaux supplémentaires. Mais c'est étrange. Le programme d'exploration peut fonctionner correctement, mais le temps nécessaire pour l'exécuter sur une seule machine est le même que lors de l'exécution de trois machines ensemble, c'est juste quelques secondes de différence.
J'ai regardé les informations sorties par le terminal. C'est que les URL extraites par les deux esclaves ne sont pas répétées, mais le temps est séparé par des intervalles. Par exemple, slave1 s'exécute pendant 4 secondes, puis slave2 s'exécute pendant 3 secondes. Ils ne sont pas parallèles. Il y a un ordre, tellement étrange ! Se pourrait-il que dans le planning, les tâches soient prises une par une et ne puissent pas être prises en même temps ?
Contrôlez la vitesse dans la console. Que vous soyez distribué ou non, tant que la vitesse est réglée sur la même, cela prendra le même temps. Ce n'est que lorsque les ressources matérielles sont insuffisantes (ou lorsque le matériel présente un goulot d'étranglement et ne peut pas atteindre la vitesse que vous avez définie) que le système distribué fonctionnera plus rapidement ? Je comprends cela personnellement