Việc sử dụng bộ nhớ thực tế của một ổ cắm không nhiều.
Điều làm ngốn bộ nhớ là trạng thái liên quan đến việc máy khách nào quan tâm đến bản cập nhật nào và máy khách nào đã nhận được một bản cập nhật cụ thể.
Trong cách triển khai nguyên thủy (tức là sử dụng ngăn xếp mạng OS), trạng thái thứ hai được giữ ở dạng bộ đệm gửi đi -- vì vậy nếu một bản cập nhật được gửi tới 10.000 máy khách, dữ liệu sẽ được sao chép 10.000 lần, mỗi bản sao được thêm vào một hàng đợi gửi đi, trong đó nó được bổ sung thêm các tiêu đề cần thiết (có chứa trạng thái trên mỗi kết nối), sau đó, một bộ mô tả được xây dựng cho phần cứng hướng dẫn nó gửi một gói là sự kết hợp của các tiêu đề và tải trọng.
Bản sao tải trọng cho mỗi máy khách được lưu trong bộ nhớ cho đến khi nó được máy khách thừa nhận và đó là nơi bắt nguồn các yêu cầu về bộ nhớ. Bộ nhớ này không thể được phân trang, do đó, nó tạo ra áp lực bộ nhớ và bộ đệm cho các ứng dụng khác.
Có những triển khai triển khai các phần của ngăn xếp mạng bên trong chính chương trình máy chủ và những triển khai này có thể tránh các bản sao bằng cách đếm tham chiếu hoặc tạo lại tải trọng theo yêu cầu, cho phép bạn thoát khỏi việc sử dụng bộ nhớ ít hơn rất nhiều nhưng liên quan đến rất nhiều mã hóa phức tạp để thực sự có thể mở rộng, đặc biệt là các máy chủ nhiều ổ cắm đặt ra một số vấn đề thú vị mà ngăn xếp mạng hệ điều hành đã biết cách giải quyết.
Các tùy chọn bạn có
- chạy dịch vụ quán rượu/phụ trên cùng một máy chủ với ứng dụng
- chạy dịch vụ pub/sub trên một máy chủ chuyên dụng với hệ điều hành mạng
- chạy dịch vụ quán rượu/phụ trên một máy chủ chuyên dụng với mạng tùy chỉnh
- chạy dịch vụ pub/sub trên nhiều máy chủ chuyên dụng
là chiến lược leo thang của bạn khi dịch vụ phát triển. Chuyển từ dùng chung sang dùng riêng không yêu cầu lập kế hoạch nhiều và có thể được thực hiện khi cần thiết; một khi điều đó đã xảy ra, đã đến lúc chuẩn bị các giai đoạn tiếp theo.
Mở rộng quy mô lên nhiều máy chủ sẽ đưa tính không xác định vào hệ thống của bạn, vì khách hàng có thể nhận được các bản cập nhật theo thứ tự khác nhau, vì vậy, để bước mở rộng quy mô này thành công, khách hàng của bạn cần biết điều này và có thể đưa ra quan điểm nhất quán -- cho dù đó là tầm thường hay khó khăn phụ thuộc vào ứng dụng thực tế của bạn.
tl;dr: không cần phải tối ưu hóa sớm. Tách dịch vụ ra để bước thay đổi quy mô đầu tiên là thay đổi cấu hình đơn giản và bắt đầu tối ưu hóa ngay khi điều đó xảy ra.