2012-05-25 32 views
5

Tôi đang xem xét việc xây dựng một trang web bằng cách sử dụng php, nhưng có một số khía cạnh của nó sẽ hoạt động tốt hơn rất nhiều nếu được thực hiện trong node.js. Đồng thời, các phần lớn của trang web cần phải duy trì trong PHP. Điều này là do rất nhiều chức năng đã được phát triển trong PHP, và việc tái phát triển, kiểm thử, và vân vân sẽ quá lớn so với một cam kết, và thẳng thắn, những phần đó của trang web chạy hoàn toàn tốt trong PHP.Sử dụng php + gearman + node.js

Tôi đang xem xét việc xây dựng lại các phần trong node.js có thể hưởng lợi từ việc chạy nhiều nhất trong node.js, sau đó có PHP chuyển yêu cầu đến node.js bằng Gearman. Bằng cách này, tôi quét quy mô ra bằng cách tung ra nhiều công nhân hơn và có bộ phận xử lý phân phối tải.

Trang web của chúng tôi nhận được rất nhiều lưu lượng truy cập và tôi lo ngại liệu thiết bị có thể xử lý tải này không. Tôi wan't để giữ câu hỏi này hiệu quả, vì vậy hãy tập trung chủ yếu vào các điểm địa chỉ sau:

  • thể gearman xử lý tất cả các phụ tải dự kiến ​​của chúng tôi giả sử chúng ta có bộ nhớ (có khả năng xung quanh 3000+ xếp hàng đợi công việc tại lúc, với vài nghìn được xử lý mỗi giây)? Điều này sẽ chạy tốt hơn nếu tôi vừa chuyển yêu cầu tới node.js bằng cách sử dụng CURL, và nếu vậy, node.js có cung cấp bất kỳ cách nào để phân phối tải trên nhiều phiên bản của một tập lệnh cụ thể không? Không.
  • Thiết bị có thể được cấu hình theo cách không có điểm hỏng hóc nào không?
  • Một số vấn đề mà các bạn có thể thấy phát sinh cả về mặt phát triển và mở rộng quy mô là gì?

Tôi đang giải quyết các điểm rộng này để mọi người xem bài đăng này có thể thu thập nhiều thông tin ở một nơi liên quan đến những vấn đề ảnh hưởng mạnh mẽ đến nhau.

Tất nhiên tôi sẽ kiểm tra tất cả điều này, nhưng tôi muốn thu thập càng nhiều thông tin càng tốt trước khi có khả năng thực hiện điều gì đó như thế này.

Chỉnh sửa: Lý do lớn mà tôi đang sử dụng thiết bị không phải do cấu trúc không chặn, mà vì tốc độ tuyệt đối của nó.

+0

_Có thể xử lý tất cả tải trọng dự kiến ​​của chúng tôi? _ Đó là câu hỏi về chuỗi dài và tùy thuộc vào số lượng máy chủ công nhân bạn có, hàng đợi của bạn nhanh chóng như thế nào và cách nhiều nỗ lực mỗi mục cần xử lý. Nếu bạn có thể làm vài nghìn mỗi giây trên một máy chủ, và bạn không xếp hàng chúng với tốc độ không đổi cao hơn, tôi nghĩ bạn sẽ ổn thôi. Gearman có thể được sử dụng trong chế độ chặn và không chặn btw, và chắc chắn là giá trị một đi. – halfer

Trả lời

4

Tôi chỉ có thể nói chuyện với câu hỏi của mình gearman:

thể gearman xử lý tất cả các phụ tải dự kiến ​​của chúng tôi giả sử chúng ta có bộ nhớ (có khả năng xung quanh 3000+ xếp hàng đợi công việc tại lúc, với vài ngàn được xử lý mỗi thứ hai)?

ngắn: Có

dài: Mọi thứ đều có giới hạn của nó. Nếu trọng tải công việc của bạn là lớn bất thường bạn có thể gặp vấn đề. Gearman lưu trữ hàng đợi của nó trong bộ nhớ .. vì vậy nếu tải trọng của bạn vượt quá số lượng bộ nhớ có sẵn cho Gearman bạn sẽ gặp phải vấn đề.

Thiết bị có thể được định cấu hình theo cách không có điểm lỗi nào không?

Gearman có plugin/tiện ích/thành phần có sẵn để sử dụng MySQL làm cửa hàng lưu giữ lâu dài. Bằng cách đó, nếu Gearman hoặc bản thân máy bị hỏng, bạn có thể mang nó trở lại ngay nơi nó đã tắt. Nhiều nhân viên-máy chủ có thể giúp giữ cho mọi thứ diễn ra nếu các công nhân khác đi xuống.

+0

Cảm ơn. Điều này trả lời một số điểm chính tôi có về gearman. Tôi sẽ kiểm tra những điều này ra để xem nó hoạt động đúng cho việc thực hiện của chúng tôi. – user396404

1

Nút có cluster module có thể thực hiện cân bằng tải cơ bản đối với các quy trình n. Bạn có thể thấy nó hữu ích.

Kiến trúc chung ở đây trong nút nút đất là để các nút của bạn nói chuyện http và sau đó sử dụng một số cách cân bằng tải như là http proxy hoặc service registry. Tôi chắc chắn nó ít nhiều giống nhau ở nơi khác. Tôi không biết đủ về gearman để nói nếu nó sẽ là "đủ tốt", nhưng nếu đây là ý tưởng chung thì tôi sẽ tưởng tượng nó sẽ ổn thôi. Ít nhất, những người khác sẽ quan tâm đến việc nghe như thế nào nó đi tôi chắc chắn!

Chỉnh sửa: Hãy nhớ, số-crunching sẽ chặn vòng lặp sự kiện của nút! Điều này là hơi rõ ràng nếu bạn nghĩ về nó, nhưng chắc chắn một cái gì đó để ghi nhớ.

+0

Cảm ơn. Điều này có vẻ như một tùy chọn cân bằng tải khả thi cho node.js. Tôi sẽ phải xem xét nó phân phối tải như thế nào, và những loại dự phòng và sự kiên trì nào có sẵn. – user396404

+0

Ngoài ra, tôi phải làm rõ trong bài đăng của tôi rằng sự kiện chặn không phải là mối quan tâm chính của tôi vì tôi đang sử dụng node.js chủ yếu cho tốc độ của nó. Tôi đã cập nhật bài đăng gốc của mình để làm cho bài viết này rõ ràng hơn. – user396404

+0

Mặc dù đây có thể là giai đoạn quá sớm đối với trang web của bạn, nhưng bạn có thể quan tâm đến cổng Node này bằng PHP: http://nodephp.org –