Cân bằng tải so với kết nối tổng hợp - có sự khác biệt?


11

Tôi đang làm việc trên một dự án dự kiến ​​sẽ phục vụ hàng triệu người dùng ngay sau khi ra mắt. Cơ sở dữ liệu là postgres, và bây giờ tôi giả sử sẽ cần ít nhất hai máy chủ. Một quản trị viên hệ thống (người rất thành thạo trong các hệ thống có thể mở rộng) đã đề nghị đặt một bộ cân bằng tải ở giữa các máy chủ web và các máy chủ cơ sở dữ liệu.

Câu hỏi của tôi liên quan đến sự khác biệt của cân bằng tải so với tổng hợp kết nối. Để duy trì hiệu suất, tôi nên nhìn vào cái này hay cái kia, hoặc cả hai?


Chúng khá giống nhau. pgbouncer là pooler được đề xuất, pgpool II có nhiều tính năng hơn nhưng phức tạp hơn để thiết lập.
Scott Marlowe

Câu trả lời:


7

Với PostgreSQL, bạn có hai khu vực khác nhau có thể tạo nhóm, ở lớp ứng dụng (ví dụ: jdbc được xây dựng trong nhóm, v.v.) hoặc trong một lớp trung gian nằm giữa ứng dụng và db (s), chẳng hạn như pgbouncer hoặc pgpool.

Nếu bạn thực hiện gộp trong một lớp trung gian, như pgbouncer hoặc pgpool, thì lớp đó C ALNG có thể thực hiện cân bằng tải của các truy vấn chọn. Hơn nữa khi cân bằng tải, bạn có thể viết theo một trong hai cách: bạn có thể có một bản ghi duy nhất sao chép thông qua các phương tiện khác cho các nô lệ đọc của bạn, sử dụng một công cụ như slony hoặc sao chép phát trực tuyến tích hợp xuất hiện trong pg 9.0 và ở trên, hoặc bạn có thể yêu cầu bộ cân bằng tải thực hiện tất cả các văn bản, để các lần đọc đến chỉ đạt một db, nhưng ghi vào mỗi cơ sở dữ liệu để giữ cho tất cả chúng được cập nhật.

Hoặc nếu bạn là người nhiệt tình, bạn có thể di chuyển lớp cân bằng tải xuống một lớp khác vào chính postgresql bằng plproxy. Đây là ngôn ngữ pl cho pssql được thiết kế để cho phép bạn đặt một cơ sở dữ liệu pg ở mặt trước không có dữ liệu thực tế và cơ sở dữ liệu đó có thể chạy trên nhiều dbs có thể dự phòng cho thông lượng đáng kinh ngạc. Plpoxy khá phức tạp để thiết lập và chạy nhưng nó cũng có khả năng mở rộng khá tốt. Lưu ý rằng ứng dụng của bạn phải được viết lại để hỗ trợ ứng dụng để ứng dụng không bị ném dưới bất kỳ ứng dụng cũ nào và chỉ hoạt động.

http://slony.info/ http://wiki.postgresql.org/wiki/PL/Proxy http://pgpool.projects.postgresql.org/


3

Cân bằng tải và tổng hợp kết nối là hai điều rất khác nhau.

Nhóm kết nối (Tôi đến từ phía Microsoft trên thế giới, nhưng tôi cho rằng mọi thứ tương tự) cho phép ứng dụng giữ kết nối với cơ sở dữ liệu mở để có thể sử dụng lại cho truy vấn tiếp theo thay vì phải ngắt kết nối và kết nối lại cho mỗi truy vấn cần được chạy.

Cân bằng tải cho phép bạn có nhiều máy chủ cơ sở dữ liệu phía sau bộ cân bằng tải để bạn có thể trải tải trên nhiều máy chủ thay vì có một máy chủ duy nhất xử lý tất cả công việc.

Bạn có thể sử dụng kết nối tổng hợp với cân bằng tải, tuy nhiên, hãy nhớ rằng vì các kết nối sẽ không bao giờ bị hủy, bạn có thể kết thúc với tải không cân bằng giữa hai máy chủ cơ sở dữ liệu.

Nếu một máy chủ cơ sở dữ liệu không thể xử lý tải của ứng dụng, thì hãy lấy lại 3 máy chủ ở đó. Bằng cách đó bạn có thể khởi động lại một cái khi cần mà không bị lỗi ứng dụng.

Khi sử dụng trang web của chúng tôi, bạn xác nhận rằng bạn đã đọc và hiểu Chính sách cookieChính sách bảo mật của chúng tôi.
Licensed under cc by-sa 3.0 with attribution required.