2016-04-04 21 views
9

Để thực hiện một bot slack, tôi cần phải đối phó với 'Real Messaging Messaging API' của slack. Nó là một API dựa trên WebSocket cho phép bạn nhận các sự kiện từ Slack trong thời gian thực và gửi các tin nhắn với tư cách người dùng. biết thêm: https://api.slack.com/rtmLàm thế nào để quy mô một bot slack để 1000 của đội

Để tạo một bot chỉ một đội, tôi cần phải mở một kết nối WebSocket và lắng nghe nó cho các sự kiện.

Để cung cấp bot chậm chạp cho một nhóm khác. Tôi cần mở một kết nối websocket mới . Vì vậy,

  • 1 nhóm kết nối => 1 WebSocket kết nối
  • 2 đội => 2 WebSocket
  • kết nối
  • N đội => N WebSocket

những gì tôi nên làm gì để mở rộng quy mô WebSocket của tôi kết nối cho các đội vô tận?

Loại kiến ​​trúc nào có thể xử lý tự động tính toán 1000 kết nối ổ cắm web?

Trả lời

7

Với ổ cắm chùng, bạn có rất nhiều điều để quy mô:

  • Số ổ cắm. Điều này là dễ dàng bởi vì ngay cả các máy chủ giá rẻ cũng có thể xử lý hàng nghìn ổ cắm, như hơn 50k. Nhưng mỗi socket đại diện cho một vài loại tải khác, được liệt kê tiếp theo.
  • Lượng bộ nhớ được sử dụng cho mỗi nhóm, phụ thuộc vào việc triển khai máy chủ của riêng bạn. Nếu bạn đang cố gắng giữ một lượng lớn lịch sử tin nhắn trong bộ nhớ, bạn sẽ đạt đến giới hạn của máy chủ của bạn nhanh hơn nếu mã xử lý tin nhắn của bạn có phần không trạng thái.
  • Số lượng I/O, điều này có thể khiến bạn muốn giảm tải bất kỳ hình ảnh nào được phân phối cho một cân bằng tải riêng biệt.

Điều khác cần xem xét là khả năng chịu lỗi. Giả sử bạn đã cân bằng tải dính và một trong các máy chủ của bạn đang xử lý 50 nhóm. Máy chủ đó là người duy nhất xử lý 50 đội đó nên nếu nó hạ xuống thì tất cả 50 chương trình đều chuyển sang chế độ ngoại tuyến. Ngoài ra, bạn có thể mở nhiều ổ cắm trên mỗi nhóm trên các máy chủ riêng biệt và sử dụng hàng đợi xử lý tin nhắn để mỗi thư chỉ được trả lời một lần.

Vì vậy, kiến ​​trúc tôi đề xuất là bộ cân bằng tải mỏng, dư thừa cho ổ cắm RTM làm lớp đầu tiên và hàng đợi tin nhắn đáng tin cậy bên dưới.

+0

Đúng là Node có thể quản lý nhiều ổ cắm đồng thời nhưng độ trễ trở nên khó lường hơn ở quy mô lớn. Nếu bạn có mã có hiệu suất nhạy cảm, nó đáng giá bằng cách sử dụng một số loại hệ thống phân cụm để thậm chí tải ra trên nhiều quy trình để một blip ngắn hạn trong một không làm nhiễu toàn bộ điều đó. – tadman

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