Lập trình PHP thì có mấy cái khó .
- Phân tán
Làm thế nào để có 1 công việc A , có thể chia nhỏ và chạy phân tán trên các máy tính khác nhau ?
- Bất đồng bộ
Làm thế nào thực hiện một công việc A , nhưng không cần ngay kết quả trả về , công việc có thể tiến hành xong mới thông báo với lời gọi hàm ?
- Xử lý dữ liệu lớn
Làm thể nào để update vài triệu record ?
Tất nhiên mọi bài toán không thể chỉ dùng php là giải quyết được .
Ví dụ khi xây dựng một site kiểu này http://whois.cx/ . http://2name.com
Có khoảng 20 triệu domain cần cập nhật các thông số như : whois content .
Các site cần cập nhật định kỳ hoặc ngay lập tức (theo yêu cầu của người dùng) .
Mô hình hóa bài toàn với gearman như sau .
Cài đặt một gearman server . (Server sẽ đóng vài trò trung gian , phân phối thụ động các công việc)
Cài đặt các Worker (Công nhân ấy mà )
Các Worker cài đặt các hàm , ví dụ ở đây là hàm whois
Clone và chạy 1 loạt các worker giống nhau , trên các server , (mỗi server 20-30 worker) .
Mội khi cần update 1 domain (whois) thì client sẽ connect vào server và gửi yêu cầu whois .
Giống như chợ lao động , khi có một công việc , các công nhân anh nào nhanh tay nhận được công việc thì tiến hành làm ngay , rồi trả lại cho chủ (server – đốc công) rồi server trả lại cho client .
Dạo này khá bận nên không viết kỹ được .
Nhưng có thể tóm lược như sau :
- Gearman dùng hiệu quả hơn là dùng các giải pháp message queue thông thường , nếu dùng trên lamp .
- Nó đặc biệt hữu dụng khi dội dev chỉ thạo đúng php .
- Khi cần lập trình phân tán , job server , message queue … hãy nghĩ đến Gearman .
Gearman là là giải pháp bao gồm Server , client , và worker .
Client yêu cầu công việc , các worker làm và server làm trung gian (Má mỳ).
Xem thêm tài liệu :
http://gearman.org/
http://www.slideshare.net/datacharmer/gearman-for-beginners
http://www.slideshare.net/felixdv/high-gear-php-with-gearman
http://highscalability.com/product-gearman-open-source-message-queuing-system
http://vi.wikipedia.org/wiki/Gearman
(i-php.net)