Mở Đầu
Restful API With Aiohttp là một thư viện mạnh mẽ dành cho Python, được thiết kế để hỗ trợ việc xây dựng các ứng dụng HTTP(s) bất đồng bộ. Dựa trên asyncio, AIOHTTP cho phép bạn phát triển cả máy chủ (server) và máy khách (client) HTTP(s) một cách hiệu quả, nhờ vào khả năng xử lý nhiều yêu cầu đồng thời.
Với AIOHTTP, bạn có thể dễ dàng xây dựng, tích hợp các ứng dụng web, API, hoặc các dịch vụ cần phản hồi nhanh và xử lý khối lượng lớn yêu cầu từ người dùng. Đặc biệt, nhờ tính bất đồng bộ (asynchronous), AIOHTTP không chỉ giúp tăng hiệu suất mà còn tối ưu hóa tài nguyên hệ thống.
Kiến Trúc Restful API With Aiohttp
Mô hình thiết lập HA (High Availability) sử dụng AioHTTP với khả năng keepalive để đảm bảo tính sẵn sàng và dự phòng kết nối. Cụ thể:
- Cloud to Firewall:
- Kết nối từ môi trường đám mây (Cloud) đến hệ thống thông qua giao thức HTTPS (cổng 443). Đây là Internet Connection kết nối bên ngoài qua một Firewall gửi gửi thông tin qua API tới ứng dụng bên ngoài.
- AioHTTP Servers:
- Hệ thống có hai server chạy AioHTTP, mỗi server đều hỗ trợ việc nhận các kết nối HTTP/HTTPS từ ứng dụng 3rd Party. Điều này giúp đảm bảo tính sẵn sàng cao trong trường hợp một trong hai server gặp sự cố (failover).
- Các kết nối từ firewall đến server AioHTTP thông qua giao thức HTTPS (cổng 443).
- Backup Connection:
- Đường nét đứt giữa các AioHTTP server đại diện cho Backup Connection, dùng trong trường hợp một trong hai server chính bị ngắt hoặc gặp sự cố. AioHTTP có thể chuyển tiếp yêu cầu đến server còn lại để đảm bảo không bị gián đoạn dịch vụ.
- Application 3rd Party:
- Các Application của bên thứ ba sẽ giao tiếp với hệ thống thông qua giao thức HTTP hoặc HTTPS thông qua Virtual IP (VIP). VIP đóng vai trò quản lý phân phối lưu lượng giữa các AioHTTP server để duy trì tính sẵn sàng cao của AioHTTP server.
STT |
OS | Tham số kỹ thuật | ||
IP | VIP | Tài khoản | ||
1 | Linux node 1 | 10.10.2.213/24 | 10.10.2.215/32 | Tài khoản admin hệ thống |
2 | Linux node 2 | 10.10.2.214/24 | Tài khoản admin hệ thống |
Cài Đặt & Cấu Hình Aiohttp
Cài Đặt Python & Thư Viện
Thực hiện chạy các lệnh bởi tài khoản root trên cả 2 Nodes:
yum install python3 -y
yum install gcc -y
yum install python36-devel -y
pip3 install multidict
pip3 install typing_extensions
pip3 install attrs
pip3 install yarl
pip3 install async_timeout
pip3 install idna_ssl
pip3 install aiosignal
pip3 install charset_normalizer
pip3 install aiohttp
Cài Đặt SSL
Tạo selfcert:
openssl req -newkey rsa:2048 -new -nodes -x509 -days 3650 -keyout key.pem -out cert.pem
Cài Đặt HA
Thực hiện chạy các lệnh bởi tài khoản root trên cả 2 Nodes
yum install keepalived -y
Cấu hình Node1
cd /etc/keepalived/
Backup lại file keepalived.conf.bak và tạo file mới keepalived.conf với cấu hình dưới đây, Các tham số màu đỏ sẽ được thay đổi cho phù hợp với môi trường triển khai
vi keepalived.conf
vrrp_instance VI_1 {
state MASTER
interface ens192
mcast_src_ip 10.10.2.213
virtual_router_id 50
priority 100
advert_int 1
authentication {
auth_type AH
auth_pass phuongthai
}
virtual_ipaddress {
10.10.2.215
}
}
Cấu hình Node2
Tương tự Node 1
cd /etc/keepalived/
Backup lại file keepalived.conf.bak và tạo file mới keepalived.conf với cấu hình dưới đây, Các tham số màu đỏ sẽ được thay đổi cho phù hợp với môi trường triển khai
vi keepalived.conf
vrrp_instance VI_1 {
state BACKUP
interface ens192
mcast_src_ip 10.10.2.214
virtual_router_id 50
priority 98
advert_int 1
authentication {
auth_type AH
auth_pass phuongthai
}
virtual_ipaddress {
10.10.2.215
}
}
Start & Stop Service Keepalived
Trên cả 2 nodes, thực hiện bật dịch vụ
systemctl start keepalived
Tắt dịch vụ
systemctl stop keepalived
Dịch vụ khởi động cùng hệ thống
systemctl enable keepalived
Phát triển Python Aiohttp
Phát triển một python code cơ bản lắng nghe API từ Postman tạo Username hiển thị trên aiohttp. Code tải tại đây
Thực hiện thử nghiệm Postman Post một thông tin name vào aiohttp đang mở socket lắng nghe
Kiểm tra tính HA
Cơ chế switch chuyển node 1 – node 2
2 server jumhost chạy Active – Stand by qua dịch vụ keepalived
Dịch vụ keepalived sử dụng với mục đích tạo ra virtual ip address (IP VIP) cho hệ thống. Tiến trình keepalived có thể tự động giám sát dịch vụ hoặc hệ thống và có khả năng chịu lỗi cho hệ thống và tự động switch chuyển khi dịch vụ hoặc hệ điều hành xảy ra sự cố.
Tại một thời điểm, dịch vụ luôn ưu tiên node1 được cấu hình ở mode master với IP ảo truy cập
Khi node1 down, IP ảo sẽ tự chuyển sang node2 được cấu hình ở mode standby
Kết Luận
Vậy là chúng ta đã hoàn thành việc tìm hiểu về cách xây dựng RESTful API with AioHTTP – một framework, thư viện mạnh mẽ và hiệu quả trong việc phát triển tích hợp các ứng dụng web phi đồng bộ (asynchronous) sử dụng Python & RestAPI. AioHTTP không chỉ hỗ trợ xử lý lượng lớn yêu cầu đồng thời một cách linh hoạt, mà còn giúp tối ưu hóa kết nối, tích hợp các ứng dụng.
Qua bài thực hành, bạn đã nắm được cách cấu hình API cơ bản, quản lý các endpoint, cũng như các tích hợp ,gọi hàm API để sử dụng. Đừng quên theo dõi trang để cập nhật những kiến thức mới nhất nhé!