12

Chúc mừng,ZooKeeper và RabbitMQ/Qpid cùng nhau - quá mức cần thiết hoặc kết hợp tốt?

Tôi đang đánh giá một số thành phần cho hệ thống phân phối nhiều trung tâm dữ liệu. Chúng ta sẽ sử dụng hàng đợi tin nhắn (thông qua RabbitMQ hoặc Qpid) để đại lý có thể thực hiện các yêu cầu không đồng bộ tới các tác nhân khác mà không phải lo lắng về việc định địa chỉ, định tuyến, cân bằng tải hoặc truyền lại.

Trong nhiều trường hợp, các đại lý sẽ tương tác với các thành phần không được thiết kế để truy cập đồng thời cao, vì vậy cần phải phối hợp khóa và đại lý chéo để tránh điều kiện chủng tộc. Ngoài ra, chúng tôi muốn hệ thống tự động phản hồi lại tác nhân hoặc trung tâm dữ liệu bị lỗi.

Với các trường hợp sử dụng nêu trên, ZooKeeper có vẻ như nó có thể phù hợp. Nhưng tôi tự hỏi nếu cố gắng sử dụng cả ZK và hàng đợi tin nhắn là quá mức cần thiết. Có vẻ như những gì Zookeeper làm có thể được thực hiện bởi người quản lý cụm của riêng tôi bằng cách sử dụng nhắn tin AMQP, nhưng điều đó sẽ khó có thể thực sự đúng. Mặt khác, tôi đã thấy một số ví dụ trong đó ZooKeeper được sử dụng để thực hiện xếp hàng đợi tin nhắn, nhưng tôi nghĩ rằng RabbitMQ/Qpid phù hợp hơn với điều đó.

Có ai ngoài đó sử dụng kết hợp như thế này không?

Cảm ơn trước,

-Chris

+0

Xin chào Chris, bạn đã tìm ra câu trả lời cho câu hỏi này chưa? Những gì bạn đã kết thúc với? Cảm ơn, Ilya – Ilya

+0

Đây có thể là một số ví dụ bạn đang đề cập đến, thêm liên kết vào đây cho những người dùng khác: http: //www.cloudera.com/blog/2009/05/xây dựng-một-phân phối-đồng thời-xếp hàng-với-apache-zookeeper/và http://zookeeper-user.578899.n2.nabble.com/Task-Job-distribution-using-ZooKeeper -td6096815.html – dgorissen

+0

Chúng tôi đã kết thúc với Qpid để nhắn tin và đã ngừng triển khai dịch vụ phối hợp phân tán như ZooKeeper. Tôi vẫn là một fan hâm mộ lớn của ZK, nhưng thông lượng của chúng tôi không đủ cao để biện minh cho sự phức tạp thêm. Chúng tôi đang xem xét một số cơ chế khóa phân phối trung tâm dữ liệu nội bộ đơn giản, có thể được hỗ trợ bởi MySQL hoặc Redis. Xuống đường, chúng ta có thể tốt nghiệp với ZooKeeper. –

Trả lời

4

Đến muộn, nhưng có thể nó sẽ được sử dụng. Việc xem xét chính nên là các đặc tính hiệu suất của hệ thống của bạn. ZooKeeper, giống như bạn đã nói, không chỉ có khả năng triển khai hệ thống phân phối tác vụ bằng hàng đợi phân tán, nhưng hiện tại zk còn được tối ưu hóa cho các lần đọc hơn là viết (điều này chỉ xuất hiện trong 1000 lần sử dụng mỗi giây) . Nếu nhu cầu thông lượng của bạn nhỏ hơn, thì chỉ cần sử dụng zk để triển khai hệ thống của bạn sẽ làm giảm số thành phần thời gian chạy và làm cho nó trở nên đơn giản hơn. Tất nhiên, bạn nên luôn luôn chạy thử nghiệm hiệu suất của bạn trước khi quyết định.

Phối hợp phân tán thực sự khó khăn để có được quyền, vì vậy tôi chắc chắn sẽ khuyên bạn nên sử dụng zookeeper cho điều đó và không lăn của riêng bạn.

0

Không khá chắc chắn những gì Zookeeper chính xác là, nhưng tôi đoán rằng việc sử dụng một thành phần từ Apache (nếu nó không phù hợp với nhu cầu của bạn tốt) được ưa thích trước khi quản lý những việc như vậy như đồng bộ hóa phân phối và dịch vụ nhóm của riêng bạn. Tất nhiên bạn có thể thuê một nhóm các nhà phát triển đặc biệt cho mục đích đó, nhưng điều đó không đảm bảo cho bạn thực hiện tốt hơn.

Tôi đoán, rằng nó sẽ được anyways thực hiện như một thành phần riêng biệt, cuz cách khác có thể mang lại nhiều phức tạp và giảm tốc độ công việc; do đó, sở thích của ZooKeeper hoặc bất kỳ thứ gì tương tự cũng khá rõ ràng (đối với tôi). Và chắc chắn, trừ khi bạn đang trong giai đoạn tối ưu hóa toàn cầu của dự án của bạn, tôi đoán sẽ tốt hơn nếu sử dụng RabbitMQ hoặc như vậy (tôi thậm chí sẽ nhấn mạnh rằng, triển khai cuz (đặc biệt là thương mại) của AMQP sẽ là đáng tin cậy hơn mọi thứ bạn nghĩ ra).

Vì vậy, tôi sẽ đi cho cả hai, cẩn thận chosing các sản phẩm của bên thứ ba thích hợp, nhưng sử dụng càng nhiều trong số họ vì nó là cần thiết. Và đó chỉ là ý kiến ​​của tôi; cảm ơn bạn đã đọc :)

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