Nguyên lý hoạt động của MySQL Proxy với ngôn ngữ kịch bản Lua [25]

Một phần của tài liệu NGHIÊN CỨU THỬ NGHIỆM GIẢI PHÁP CÂN BẰNG TẢI CHO HỆ QUẢN TRỊ CSDL MYSQL VỚI MYSQL PROXY (Trang 51 - 53)

Sự tƣơng tác chính giữa Proxy MySQL và MySQL server đƣợc cung cấp bởi việc xác định một hoặc nhiều hàm trong ngôn ngữ kịch bản Lua. Một số hàm đƣợc hỗ trợ cho các sự kiện khác nhau và các hoạt động khác nhau trong thứ tự giao tiếp giữa client và một hoặc nhiều MySQL server:

connect_server() : Hàm này đƣợc gọi mỗi khi có một kết nối đến MySQL Proxy từ một client. MySQL Proxy sử dụng chức năng này trong quá trình cân bằng tải để chặn các kết nối từ một client và quyết định máy chủ nào sẽ giao tiếp với client đó. Nếu không xác định một giải pháp đặc biệt, thì MySQL Proxy mặc định sẽ phân phối các truy vấn theo giải thuật round-robin.

read_handshake (): Hàm này đƣợc gọi là khi những thông tin bắt tay đầu tiên đƣợc trả về bởi server. Proxy có thể nắm bắt những thông tin bắt tay đƣợc trả lại này và kiểm tra, bổ sung trƣớc khi trao đổi diễn ra.

read_auth (): Hàm này đƣợc gọi khi các gói tin xác nhận (tên ngƣời dùng, mật khẩu, cơ sở dữ liệu mặc định) của client gửi đến server để xác thực.

read_auth_result (): Hàm này đƣợc gọi là khi server trả về một gói tin xác nhận cho client nêu rõ việc xác thực đã thành công.

read_query (): Hàm này đƣợc gọi mỗi lần truy vấn đƣợc gửi bởi client đến server. Proxy có thể chỉnh sửa và thao tác truy vấn gốc, bao gồm thêm các câu truy vấn mới trƣớc và sau câu lệnh gốc. Ngoài ra cũng có thể sử dụng hàm này để trả về thông tin trực tiếp đến client. Sử dụng hàm này, proxy có thể lọc các truy vấn không mong muốn hoặc các truy vấn vƣợt quá giới hạn đƣợc biết đến.

read_query_result (): Hàm này đƣợc gọi là mỗi khi một kết quả đƣợc trả về từ server, proxy tự động xen các truy vấn vào hàng đợi truy vấn. Proxy thể chỉnh sửa các tập hợp kết quả, hoặc để loại bỏ hoặc chọn lọc các bộ kết quả.

36

Hình 13: Các thủ tục cần thực hiện khi client gửi một truy vấn đến server qua MySQL Proxy

1. Khi client gửi một kết nối đến server, MySQL Proxy gọi hàm

connect_server() để gửi yêu cầu kết nối này đến server. Server nhận đƣợc yêu cầu kết nối của client sẽ gửi lại thông điệp là nó có chấp nhận yêu cầu này hay không. Nếu server không chấp nhận thì client ngừng kết nối, nếu server chấp nhận thì thực hiện bƣớc thứ hai

2. Client gửi truy vấn đến server. MySQL Proxy sử dụng hàm read_query()

để đọc truy vấn này, nó xác định đây là loại truy vấn nào để gửi đến server thích hợp.

3. Sau khi server chấp nhận truy vấn từ client, server gửi kết quả lại cho client. Kết quả này đi qua MySQL Proxy, MySQP Proxy đọc kết quả bằng cách sử dụng hàm read_query_result() và trả về kết quả này cho client.

Cấu trúc nội bộ

Ngoài các hàm trên, một số cấu trúc đƣợc xây dựng cung cấp việc kiểm soát của MySQL Proxy để chuyển các truy vấn và trả về các kết quả bằng cách cung cấp một giao diện đơn giản hóa các yếu tố nhƣ danh sách các truy vấn và nhóm các tập kết quả đƣợc trả về.

37

Một phần của tài liệu NGHIÊN CỨU THỬ NGHIỆM GIẢI PHÁP CÂN BẰNG TẢI CHO HỆ QUẢN TRỊ CSDL MYSQL VỚI MYSQL PROXY (Trang 51 - 53)