2013-12-10 16 views
5

SolrCloud, nhờ tích hợp ZooKeeper, có một số tiện ích đẹp cho cấu hình lõi/cấu hình managingreloading.SolrCloud và các bản cập nhật yêu cầu xây dựng lại chỉ mục và/hoặc sửa đổi mã

Tuy nhiên, điều này chỉ bao gồm đầy đủ các trường hợp cập nhật tầm thường - nhưng cũng có nontrivial cập nhật. Nontrivial trong trường hợp này có nghĩa là dẫn đến một số thay đổi làm cho nút được cập nhật và/hoặc lõi của nó không tương thích với một số trạng thái trước đó.

Đặc biệt, những subcases tôi suy nghĩ:

  1. Một cập nhật Mã đòi hỏi phải khởi động lại một thể hiện Solr tiềm ẩn.
  2. Thay đổi lược đồ yêu cầu xây dựng lại toàn bộ lõi.

Câu hỏi của tôi là: SolrCloud và các dịch vụ Zookeeper liên quan được sử dụng để cập nhật như thế nào dễ dàng hơn, đáng tin cậy hơn và/hoặc đảm bảo tính khả dụng cao hơn?

Lưu ý: Tôi hy vọng một số API/chức năng "hiểu" các cập nhật đó. Cho đến nay điều đáng chú ý nhất tôi đã tìm thấy là việc thu thập bí danh trong CoreAdmin, điều này sẽ cho phép chuyển tiếp mượt mà hơn giữa các phiên bản "cũ" và "mới" - một chút thất vọng với những hy vọng nói trên.

Trả lời

-1

Tôi không chắc chắn những gì bạn có ý nghĩa bởi

A code update necessitating a restart of an underlying Solr instance. 

Bạn có nghĩa là mã Solr thay đổi? (ví dụ: một phiên bản mới hơn) Hoặc ứng dụng đang truy cập cá thể Solr đã thay đổi? (ví dụ: codebase của bạn)

Trong trường hợp đầu tiên, chỉ cần đưa lên một phiên bản mới và thêm nó vào ZooKeeper, ngay cả khi phiên bản khác, nên là kết thúc của nó.

Trong trường hợp thứ hai, nó thực sự không quan trọng những gì xảy ra với ứng dụng truy cập dữ liệu, phải không?

Sau đó, bạn đề cập đến những gì tôi tin là nhất "chung" kịch bản

Một sự thay đổi schema mà đòi hỏi xây dựng lại một đầy đủ của một lõi.

Nếu bạn thay đổi giản đồ và điều này ngụ ý bạn đang thay đổi một số chỉ mục, trường và/hoặc siêu dữ liệu của mình, bạn thực sự không thể mong đợi Solr bất khả tri thay đổi này và tiếp tục chạy, và trả về kết quả, vì hàm băm của chúng không còn tương ứng với cùng cấu trúc.

Tôi nghĩ cách tiếp cận tốt nhất ở đây là cố gắng xác định độ sâu của các thay đổi và tải lại chỉ mục mới cấu trúc được cập nhật, sau đó thực hiện các thay đổi mã cần thiết cho ứng dụng của bạn, cấu trúc, hoặc nếu một cửa sổ thời gian chết được cho phép, chỉ cần xóa và xây dựng lại toàn bộ điều (loại tấn công của bạn "đảm bảo yêu cầu cao hơn" mặc dù)

Tôi nghĩ rằng nó sẽ giống như một bản cập nhật nóng cho một bảng DB trong SQL và có hai phiên bản của ứng dụng sử dụng cả hai, cấu trúc cũ và mới, nó có thể được thực hiện với một loại chăm sóc cực ... Điện thoại

Bạn không chắc chắn nếu điều này có ích, hãy che giấu,

Mike.

+0

* Cập nhật mã: * 1. Tôi có nghĩa là thay đổi mã dịch vụ tùy chỉnh cụ thể trong trường hợp Solr, nhưng bản cập nhật phiên bản là một chữ cái hợp lệ. 2. "Nên"? Bạn có biết điều này cho một ** thực tế **, hoặc là phỏng đoán của bạn? * Tái xây dựng lại trường hợp: * Tôi đánh giá cao sự giúp đỡ sẵn sàng của bạn, nhưng bạn nhận ra ** Tôi đã bao gồm một giải pháp "thủ công" trong câu hỏi của tôi đã **, trong đoạn cuối cùng? Câu hỏi này không phải là giải pháp chung cho những vấn đề này, nhưng ** liệu SolrCloud/Zookeeper có thêm cơ sở giúp giải quyết chúng hay không, và nếu có, làm thế nào. ** Tôi xin lỗi, nhưng vì nó là viết tắt, tôi phải downvote câu trả lời. –

+0

Xin lỗi vì đã nghe tôi không hữu ích ... Tuy nhiên, đừng nghĩ rằng nó được gọi là một câu trả lời, vì nó có thể hữu ích trừ khi ai đó tìm cách cụ thể để làm những gì bạn yêu cầu: ( Câu hỏi của bạn, yêu cầu Solr/ZK "hiểu" một bản cập nhật không tầm thường đến chỉ mục cốt lõi, điều này tôi sợ nó không thể làm. Về một phiên bản mới của Solr chạy trên cùng một ZK, vâng tôi biết rằng đối với một ** Thực tế ** Giải pháp "thủ công" của bạn là tốt như bạn đã làm, trừ khi bạn sẵn sàng viết mã gì đó để ngăn chặn điều này (thêm trường mãVersion và truy vấn trường đó hoặc tương tự) – migueldiab

+0

Không, nó không * gọi * cho một downvote, bởi vì những người không phải là một hình phạt hoặc đàn áp, và như một người hỏi, tôi tin rằng tôi có quyền * một số * ý kiến ​​về việc câu trả lời có hữu ích hay không (đặc biệt là vì có một bounty vào thời điểm đó);). Cuối cùng, nếu câu trả lời của bạn bắt nguồn từ sự kiện, vui lòng chỉnh sửa câu trả lời để giải thích/tham khảo chúng. –

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