Thứ Hai, 14 tháng 2, 2011

Xây dựng ứng dụng php phân tán với gearman

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à :D )

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

11 nhận xét:

  1. Thanks,

    Mình có một câu hỏi là các giải pháp mở rộng thế này mà các job servers (nhận yêu cầu từ clients) bị die hết thì ứng dụng cũng die theo luôn đúng không?

    PS: Mình thấy nếu viết một chuỗi bài về các kỹ năng / technologies để mở rộng quy mô của ứng dụng PHP như thế này sẽ rất là hay. Ví dụ như so sánh giữa các phương pháp sử dụng message queue, memcached và gearman... Hay cơ chế replication của các phương pháp trên khác nhau như thế nào...

    Trả lờiXóa
  2. Nhìn chung đây là những kiến thức này khá chuyên sâu (1 loạt bài viết gần đây của tớ) .
    Cho nên thường thì ít người làm , ít người quan tâm , mình đang làm nên cứ note vào thôi .

    Trả lờiXóa
  3. Xét trên 2 nền tảng Java & PHP thì Gearman có dễ hơn so với ActiveMQ (JMS) không đại ka? Ý em là về số lượng dòng code, thư viện hỗ trợ, dễ cài đặt ...

    Trả lờiXóa
  4. ActiveMQ (hay các jms khác) Nói chung chỉ làm một việc là làm trung gian . Với 2 mô hình chính pà pub-sub và p2p .
    Nhưng Gearman không hẳn là một queue . Nó là một jobs server - manager thì đúng hơn .
    Còn về khía cạnh sử dụng thì đối với lập trình viên php , dùng Gearman tốn rất ít công tìm hiểu , call hàm là call , không quan tâm đến thằng worker nào sẽ làm , chỉ quan tâm đến dữ liệu trả về .

    Trả lờiXóa
  5. Gearman khá hay, nhưng mình tìm hiểu thì ko có PHP Extension cho window, có giải pháp nào khác không nhỉ?

    Trả lờiXóa
  6. Quan điểm của mình thì không chơi với win .
    Nhưng bạn thử chạy grearman trên cygwin xem .

    Trả lờiXóa
  7. Mình cũng đang nghiên cứu cái này, setup rồi nhưng chỉ chạy được cái code example cho worker, còn client thì nó báo lỗi :)

    Mình thấy chỉ chạy được code trên console, còn gõ trên trình duyệt thì nó đơ luôn, vậy rốt cuộc cái này nó hoạt động ra sao vậy

    Trả lờiXóa
  8. Really cool site! Thank you so much for taking your time to post this!

    Trả lờiXóa
  9. The Zune concentrates on being a Portable Media Player. Not a web browser. Not a game machine. Maybe in the future it'll do even better in those areas, but for now it's a fantastic way to organize and listen to your music and videos, and is without peer in that regard. The iPod's strengths are its web browsing and apps. If those sound more compelling, perhaps it is your best choice.

    Trả lờiXóa
  10. Apple now has Rhapsody as an app, which is a great start, but it is currently hampered by the inability to store locally on your iPod, and has a dismal 64kbps bit rate. If this changes, then it will somewhat negate this advantage for the Zune, but the 10 songs per month will still be a big plus in Zune Pass' favor.

    Trả lờiXóa
  11. Llfn3m yvqzbujlexcs, [url=http://vjjobcyxsdgx.com/]vjjobcyxsdgx[/url], [link=http://drkiwqkecraw.com/]drkiwqkecraw[/link], http://noyheougphor.com/

    Trả lờiXóa