Norbert là một ví dụ điển hình từ hệ thống sản xuất có khả năng mở rộng. Tôi nói chung, nó tích hợp Netty, Bộ đệm giao thức và Zookeeper vào một khung công tác nhẹ để chạy các dịch vụ theo nhóm. Bộ đệm giao thức được sử dụng để chỉ định API dịch vụ của bạn, Netty triển khai các trừu tượng hóa lớp truyền tải và Zookeeper về cơ bản là một dịch vụ khám phá có khả năng chịu lỗi.
Mỗi khi một cá thể dịch vụ được khởi động, Norbert sẽ đăng ký nó như một thể hiện có sẵn của một loại dịch vụ cụ thể. Từ góc độ triển khai, nó tạo ra hai cây Zookeeper:
- "/ ServiceName / thành viên" liệt kê tất cả các phiên bản đã biết của dịch vụ
- "/ ServiceName / available" liệt kê các phiên bản hiện có của dịch vụ
Thuộc tính quan trọng nhất cho mỗi nút là url sử dụng để kết nối với phiên bản dịch vụ tương ứng. Nó cho phép cân bằng tải phía máy khách - một máy khách Norbert tìm thấy danh sách các url cho một tên dịch vụ nhất định và cố gắng kết nối với một trong số chúng theo thứ tự nào đó (ví dụ: round-robin hoặc random).