Giới thiệu PGPool

Bài toán đặt ra: Database PostgreSQL của bạn đang gặp vấn đề nghiêm trọng về hiệu năng, do có quá nhiều connection kết nối đến. Trong trường hợp này, 1 giải pháp Connection Pooling như Pgpool II có thể là 1 giải pháp phù hợp. Ý tưởng của Connection Pool cơ bản là mở sẵn 1 loạt các connection (số lượng mà chúng ta biết chắc sẽ không gây quá tải database), các ứng dụng khi muốn kết nối vào sẽ đấu nối vào các connection đã mở sẵn đó, nếu kết nối nào vào sau mà không còn connection đã mở sẵn, thì nó sẽ phải đợi kết nối trước đó kết thúc.

Pgpool II là một phần mềm Connection Pooling đứng giữa PostgreSQL Server và PostgreSQL client.

Nói đơn giản hơn, nó là lớp trung gian giữa người sử dụng và PostgreSQL database

Pgpool-II trong suốt đối với cả database server và client, một hệ thống application đã có sẵn có thể sử dụng được với Pgpool-II mà hầu như không cần thay đổi mã nguồn của nó.

Đọc thêm  So sánh Pgpool-II và Pgbouncer - Phần 1

   Các tính năng của PGPool

Pgpool II có rất nhiều tính năng thú vị như sau:

   Connection Pooling

Pgpool II quản lý các connection đã được kết nối đến PostgreSQL Server và tái sử dụng chúng mỗi khi có connection mới với cùng các thuộc tính với connect đã kết nối ( như username, database, version protocol, …). Nó giúp giảm tổng lượng thông tin overhead trên tất cả connection, từ đó cải thiện hiệu năng tổng thể.

   Load Balancing

Nếu bạn đã cấu hình tính năng Streaming Replication bao gồm 1 server master với 1 hoặc nhiều server slave, Pgpool II có thể giúp giảm tải cho server master bằng cách đẩy các câu lệnh SELECT sang các server slave. Chức năng Load balancing rất hữu ích trong tình huống có rất nhiều user thực hiện các câu lệnh SELECT xuống database.

Đọc thêm  Cấu hình Streaming Replication trong PostgreSQL 13

   Automated fail over

Nếu database server master bị shutdown và không thể hoạt động, Pgpool II sẽ gỡ nó ra khỏi cấu hình và đưa database server slave lên thành master.
Đây gọi là cơ chế Automated fail over

   Online Recovery

Sau khi database server master bị gỡ ra khỏi cấu hình đồng bộ theo cơ chế Automated fail over, Pgpool II có thể đưa nó trở lại cấu hình cũ với một câu lệnh.
Cơ chế này gọi là Online Recovery

   Replication

Cũng giống như Streaming Replication, Pgpool II cũng có 1 chức năng tương tự. Nó cho phép tạo ra 1 database cluster khác đồng bộ liên tục theo thời gian thực với database cluster chính

   Giới hạn connection tối đa

Trong PostgreSQL, bạn có thể cấu hình tham số max_connection để giới hạn số connection tối đa được phép kết nối vào hệ thống. Tuy nhiên, nếu hệ thống đạt max connection, thì những connection kết nối vào sau sẽ nhận được một thông báo lỗi và bị ngắt luôn. Pgpool II cũng cung cấp 1 cơ chế giới hạn connection như vậy, nhưng “mềm mại” hơn: Những connection bị vượt ra ngoài phạm vi max connection, sẽ được đưa vào 1 hàng đợi, chờ đến lượt, thay vì bị văng ra ngoài kèm theo 1 thông báo lỗi.

   Watchdog

Pgpool có thẻ là nơi phân tải đến các database server ở đằng sau, nhưng nó cũng có thể biến thành điểm rủi ro (single point of failure), khi Pgpool có trục trặc, phần mềm sẽ không thể kết nối đến database được nữa. Tính năng Watchdog cho phép bạn xây dựng nhiều Pgpool dự phòng. Nó sẽ kiểm tra trạng thái của Pgpool chính, nếu phát hiện Pgpool chính bị down, nó sẽ đưa Pgpool dự phòng lên thành Pgpool chính, dựa trên cơ chế bình bầu (voting).

Nếu số lượng Pgpool là số chẵn, thì sẽ không thể quyết định được PgPool nào là chính, do đó, số lượng Pgpool nên là số lẻ.

   In Memory Query Cache

Chức năng này cho phép lưu giữ câu lệnh và kết quả thực hiện của nó trên Memory. Nếu có 1 câu lệnh SELECT giống hết câu lệnh đã có trên Memory, Pgpool sẽ trả kết quả lấy từ trên Memory xuống luôn, không cần phải phân tích câu lệnh hay truy vấn xuống đĩa để xử lý nữa.

Nguồn: https://dangxuanduy.com/

Xin cho tôi được biết, bạn cảm thấy bài viết này như thế nào? Ý kiến của bạn sẽ giúp tôi nâng cao chất lượng bài viết của mình.

    Hãy chia sẻ bài viết này nếu bạn thấy có ích nhé
    0 0 votes
    Article Rating
    Subscribe
    Notify of
    guest
    0 Comments
    Inline Feedbacks
    View all comments