2012-11-02 26 views
12

Tôi đã lên kế hoạch triển khai Meteor cho các máy chủ Amazon AWS EC2 của mình nhưng tôi cũng muốn chạy nhiều phiên bản của máy chủ cùng một lúc để phục vụ nhiều khách hàng hơn. Có cách nào thích hợp để làm điều này trong Meteor mà không phá vỡ khả năng cho khách hàng cập nhật về các bản cập nhật cho bộ sưu tập của họ không?Chạy sao băng trong một cụm và thay đổi thời gian thực

Trả lời

18

Có hai vấn đề chính cần xem xét khi chạy nhiều quy trình máy chủ Meteor.

  1. Mối quan hệ phiên khách hàng. Khách hàng sử dụng thư viện SockJS để kết nối lại với máy chủ Meteor, thường là bằng cách sử dụng một chiến lược bỏ phiếu dài kết nối lại với máy chủ thường xuyên. Quá trình máy chủ giữ trạng thái được kết hợp với từng máy khách. Vì vậy, điều quan trọng là một kết nối của khách hàng nhất định không bị trả lại giữa các máy chủ, nếu không máy chủ sẽ nghĩ rằng nó đang nói chuyện với một khách hàng mới và gửi lại tất cả trạng thái đăng ký.

  2. Phối hợp vô hiệu hóa cơ sở dữ liệu. Bất cứ lúc nào một khách hàng phát hành một cơ sở dữ liệu viết, quá trình máy chủ chạy một tính toán lại và đẩy cập nhật cho bất kỳ khách hàng bị ảnh hưởng khác. Nhưng các máy khách kết nối với một máy chủ khác sẽ không thấy thay đổi cho đến khi quá trình máy chủ đó chạy vòng lặp vòng lặp Mongo thứ 10. Đối với một số ứng dụng, có thể có hầu hết các ứng dụng bị trễ 10 giây. Nếu ứng dụng của bạn yêu cầu một cái gì đó thời gian thực hơn, thì bạn sẽ phải thực hiện giao tiếp giữa các tiến trình của máy chủ Meteor.

+2

xem câu trả lời của tôi dưới đây cho invalidations cơ sở dữ liệu ** Phối hợp * * với [sao băng-cụm] (https://github.com/arunoda/meteor-cluster) –

+1

Bạn có thể xác nhận rằng (2) không còn là vấn đề đăng bản phát hành 0.7.0 sử dụng taillog oplog? – Doug

Các vấn đề liên quan