MongoDB
 sql >> Cơ Sở Dữ Liệu >  >> NoSQL >> MongoDB

Tại sao máy chủ cấu hình MongoDB chỉ phải là một hoặc ba?

Cấu hình giao thức máy chủ

MongoDB 3.0 trở về trước chỉ hỗ trợ một loại giao thức triển khai máy chủ cấu hình duy nhất được gọi là SCCC (Cấu hình kết nối cụm đồng bộ) kế thừa của MongoDB 3.2. Triển khai SCCC có 1 máy chủ cấu hình (chỉ dành cho phát triển) hoặc 3 máy chủ cấu hình (sản xuất).

MongoDB 3.2 không dùng giao thức SCCC và hỗ trợ kiểu triển khai mới:Định cấu hình Máy chủ dưới dạng Bộ bản sao (CSRS). Việc triển khai CSRS có các giới hạn giống như bộ bản sao tiêu chuẩn, có thể có 1 máy chủ cấu hình (chỉ dành cho phát triển) hoặc tối đa 50 máy chủ (sản xuất) như ở MongoDB 3.2. Nên sử dụng tối thiểu 3 máy chủ CSRS để có tính khả dụng cao trong quá trình triển khai sản xuất, nhưng các máy chủ bổ sung có thể hữu ích cho việc triển khai phân tán theo địa lý.

SCCC (Cấu hình kết nối cụm đồng bộ)

Với SCCC, các máy chủ cấu hình được cập nhật bằng cách sử dụng cam kết hai giai đoạn giao thức yêu cầu sự đồng thuận từ nhiều máy chủ cho một giao dịch. Bạn có thể sử dụng một máy chủ cấu hình duy nhất cho mục đích thử nghiệm / phát triển, nhưng trong quá trình sử dụng sản xuất, bạn phải luôn có 3. Một câu trả lời thực tế cho lý do tại sao bạn không thể sử dụng chỉ 2 (hoặc nhiều hơn 3) máy chủ trong MongoDB là cơ sở mã MongoDB chỉ hỗ trợ 1 hoặc 3 máy chủ cấu hình cho cấu hình SCCC.

Ba máy chủ cung cấp đảm bảo tính nhất quán mạnh mẽ hơn hai máy chủ và cho phép hoạt động bảo trì (ví dụ:sao lưu) trên một máy chủ cấu hình trong khi vẫn có hai máy chủ khả dụng cho mongos của bạn để truy vấn. Nhiều hơn ba máy chủ sẽ làm tăng thời gian cần thiết để xác nhận dữ liệu trên tất cả các máy chủ.

Siêu dữ liệu cho cụm phân đoạn của bạn cần phải giống nhau trên tất cả các máy chủ cấu hình và được duy trì bởi triển khai Sharding MongoDB. Siêu dữ liệu bao gồm các chi tiết thiết yếu mà các phân đoạn hiện đang lưu giữ các phạm vi tài liệu (còn gọi là chunks ). Trong cấu hình SCCC, máy chủ cấu hình không một tập hợp bản sao, vì vậy nếu một hoặc nhiều máy chủ cấu hình ngoại tuyến thì dữ liệu cấu hình sẽ chỉ được đọc - nếu không, không có phương tiện nào để dữ liệu truyền đến máy chủ cấu hình ngoại tuyến khi chúng trực tuyến trở lại.

Rõ ràng 1 máy chủ cấu hình không cung cấp dự phòng hoặc sao lưu. Với 2 máy chủ cấu hình, một trường hợp lỗi tiềm ẩn là các máy chủ có sẵn nhưng dữ liệu trên các máy chủ không đồng ý (ví dụ:một trong các máy chủ có một số lỗi dữ liệu). Với 3 máy chủ cấu hình, bạn có thể cải thiện tình huống trước đó:2/3 máy chủ có thể nhất quán và bạn có thể xác định được máy chủ lẻ.

CSRS (Định cấu hình Máy chủ làm Bộ bản sao)

MongoDB 3.2 không dùng nữa mongod được sao chép các phiên bản cho máy chủ cấu hình và khởi động trong máy chủ cấu hình 3.2 (theo mặc định) được triển khai dưới dạng một tập hợp bản sao. Máy chủ cấu hình bộ bản sao phải sử dụng công cụ lưu trữ WiredTiger 3.2+ (hoặc công cụ lưu trữ khác hỗ trợ readConcern đọc ngữ nghĩa cách ly). CSRS cũng không cho phép một số tùy chọn cấu hình bộ bản sao không phải mặc định (ví dụ:arbiterOnly , buildIndexesslaveDelay ) không phù hợp với trường hợp sử dụng siêu dữ liệu cụm phân đoạn.

Việc triển khai CSRS cải thiện tính nhất quán và tính khả dụng cho các máy chủ cấu hình, vì MongoDB có thể tận dụng các giao thức đọc và ghi bộ bản sao tiêu chuẩn cho dữ liệu cấu hình sharding. Ngoài ra, điều này cho phép một cụm phân đoạn có nhiều hơn 3 máy chủ cấu hình vì một tập hợp bản sao có thể có tối đa 50 thành viên (như ở MongoDB 3.2).

Với việc triển khai CSRS, tính khả dụng của việc ghi phụ thuộc vào việc duy trì một số đại biểu các thành viên có thể thấy nhóm chính hiện tại cho một tập hợp bản sao. Ví dụ, một tập hợp bản sao 3 nút sẽ yêu cầu 2 thành viên có sẵn để duy trì một nhóm chính. Thành viên bổ sung có thể được thêm vào để cải thiện khả năng chịu lỗi , tuân theo cùng một quy tắc bầu cử như một tập hợp bản sao bình thường. Một readConcern của majority được sử dụng bởi mongos để đảm bảo rằng siêu dữ liệu cụm phân đoạn chỉ có thể được đọc khi nó được cam kết với phần lớn các thành viên nhóm bản sao và readPreference trong số nearest được sử dụng để định tuyến các yêu cầu đến máy chủ cấu hình gần nhất.




  1. Redis
  2.   
  3. MongoDB
  4.   
  5. Memcached
  6.   
  7. HBase
  8.   
  9. CouchDB
  1. Mongodb java api:WriteResult # getN ()

  2. nhóm mongodb chậm ngay cả sau khi thêm chỉ mục

  3. Cách ghi mảng kết hợp trống ({}) sang MongoDB từ PHP

  4. Lỗi:Dấu hai chấm kép trong số nhận dạng máy chủ

  5. Cải thiện Hiệu suất Tìm kiếm Văn bản MongoDB