API gateway là một thành phần cơ sở hạ tầng quan trọng trong kỷ nguyên dựa trên nền tảng điện toán đám mây ( Cloud ). Có hai tiêu chí chung để đánh giá một API gateway: mức độ linh hoạt, mức độ hoàn thiện của khả năng quan sát của nó. Nhiều công ty đã từng sử dụng NGINX hoặc Kong làm API gateway, nhưng sau đó đã chuyển sang Apache APISIX. Là một API gateway được sinh ra cho kỷ nguyên dựa trên nền tảng điện toán đám mây ( Cloud ), Apache APISIX thực sự giải quyết được rất nhiều điểm yếu cho các doanh nghiệp ở nhiều khía cạnh khác nhau. Bây giờ bạn có thể tự hỏi, tại sao?
Hạn chế của NGINX và Kong
Trong kỷ nguyên của các monolithic services, NGINX có thể xử lý hầu hết các tình huống. Trong kỷ nguyên dựa trên nền tảng điện toán đám mây ( Cloud ), NGINX có hai nhược điểm do kiến trúc của nó:
- NGINX không hỗ trợ quản lý dạng Cluster. Hầu hết mọi công ty đều có hệ thống quản lý cấu hình NGINX của riêng mình. Mặc dù các hệ thống tương tự nhau nhưng không có giải pháp thống nhất.
- NGINX không hỗ trợ tải lại cấu hình ( hot reloading ). Nếu người dùng sửa đổi cấu hình NGINX, sẽ cần phải tải lại NGINX. Ngoài ra, trong Kubernetes, các dịch vụ sẽ thay đổi thường xuyên. Vì vậy, nếu NGINX được sử dụng để xử lý lưu lượng, bạn phải khởi động lại dịch vụ thường xuyên, điều này là không thể chấp nhận được đối với các doanh nghiệp.
Kong giải quyết những hạn chế của NGINX nhưng mang đến những hạn chế mới:
- Kong cần phải dựa vào cơ sở dữ liệu PostgreSQL hoặc Cassandra, điều này khiến toàn bộ kiến trúc của Kong trở nên cồng kềnh và sẽ mang lại giới hạn cao về tính khả dụng cho doanh nghiệp. Nếu cơ sở dữ liệu bị lỗi thì toàn bộ API Gateway sẽ bị lỗi.
- Định tuyến của Kong sử dụng tìm kiếm truyền tải. Khi có hơn một nghìn tuyến đường trong cổng, hiệu suất của nó sẽ giảm đáng kể.
APISIX giải quyết tất cả các hạn chế trên và trở thành API gateway tốt nhất trong kỷ nguyên dựa trên nền tảng điện toán đám mây ( Cloud ).
Ưu điểm của Apache APISIX
Kiến trúc được thiết kế tốt hơn
Đầu tiên, Apache APISIX có kiến trúc tuyệt vời. Cloud-native, với xu hướng công nghệ hiện nay, sẽ thay đổi kiến trúc kỹ thuật của các doanh nghiệp truyền thống. Nhiều ứng dụng đang chuyển sang microservice và container hóa. APISIX đã đi theo xu hướng công nghệ kể từ khi thành lập:

Như thể hiện trong hình trên, bên trái và bên phải là Data Plane và Control Plane của APISIX:
- Data Plane: Dựa trên thư viện mạng của NGINX (không sử dụng kết hợp tuyến đường, cấu hình tĩnh và mô-đun C của NGINX), nó sử dụng Lua và NGINX để kiểm soát động lưu lượng yêu cầu;
- Control Plane: Quản trị viên có thể vận hành etcd thông qua API RESTful tích hợp sẵn. Với sự trợ giúp của cơ chế Watch của etcd, APISIX có thể đồng bộ hóa cấu hình với từng nút trong vòng một phần nghìn giây.
Để cập nhật dữ liệu, Kong sử dụng phương pháp thăm dò cơ sở dữ liệu; có thể mất 5-10 giây để có được cấu hình mới nhất, trong khi APISIX đạt được điều tương tự bằng cách theo dõi các thay đổi cấu hình etcd, có thể kiểm soát thời gian tính bằng mili giây.
Vì cả APISIX và etcd đều hỗ trợ triển khai nhiều phiên bản nên không có điểm lỗi duy nhất.
Hệ sinh thái phong phú
Hình sau đây hiển thị bản đồ hệ sinh thái của APISIX. Từ hình này, chúng ta có thể thấy APISIX hỗ trợ các giao thức L7 bao gồm HTTP(S), HTTP2, Dubbo, giao thức IoT MQTT, v.v. Ngoài ra, APISIX hỗ trợ các giao thức L4 như TCP/UDP.
Phần bên phải của hình chứa một số dịch vụ nguồn mở hoặc SaaS, chẳng hạn như Apache SkyWalking, Prometheus, HashiCorp Vault, v.v. Ở cuối hình là các môi trường hệ điều hành, nhà cung cấp điện toán đám mây ( Cloud ) và môi trường phần cứng phổ biến hơn. Là một phần mềm nguồn mở, APISIX cũng có thể chạy trên máy chủ ARM64.

APISIX không chỉ hỗ trợ nhiều giao thức và hệ điều hành mà còn hỗ trợ các plugin lập trình đa ngôn ngữ . Khi mới ra mắt, APISIX chỉ hỗ trợ sử dụng ngôn ngữ Lua để viết plugin. Trong trường hợp này, các nhà phát triển cần nắm vững nhóm công nghệ liên quan đến Lua và NGINX. Tuy nhiên, Lua và NGINX là những công nghệ tương đối quen thuộc với ít nhà phát triển. Do đó, chúng tôi đã kích hoạt tính năng phát triển plugin trên APISIX với nhiều ngôn ngữ và có các ngôn ngữ được hỗ trợ chính thức như Java , Golang , Node.js và Python .

Cộng đồng hỗ trợ phong phú
Hình bên dưới là đường cong tăng trưởng của người đóng góp, trong đó trục hoành biểu thị dòng thời gian và trục tung biểu thị tổng số người đóng góp. Chúng ta có thể thấy rằng hai dự án Apache APISIX và Kong hoạt động tương đối tích cực hơn. Apache APISIX đã duy trì tốc độ tăng trưởng tuyệt vời ngay từ ngày đầu tiên và đang phát triển nhanh chóng với tốc độ gần gấp đôi so với Kong. Tính đến tháng 7 năm 2022, số lượng người đóng góp cho APISIX đã vượt quá Kong, điều này cho thấy mức độ phổ biến của APISIX. Tất nhiên, có nhiều cách khác để đánh giá hoạt động của một dự án, chẳng hạn như số vấn đề hoạt động hàng tháng, tổng số PR, v.v. Tin vui là APISIX cũng vượt trội về các khía cạnh này.

Cơ sở hạ tầng proxy hợp nhất
Từ hình bên dưới, tôi tin rằng bạn đã hiểu mục tiêu của APISIX: thống nhất cơ sở hạ tầng proxy.

Vì cốt lõi của APISIX là dịch vụ proxy hiệu suất cao nên nó không ràng buộc bất kỳ thuộc tính môi trường nào. Do đó, khi phát triển thành các sản phẩm như Ingress và Service Mesh, bạn không phải thay đổi cấu trúc bên trong của APISIX. Phần sau đây sẽ giới thiệu cho bạn từng bước cách APISIX hỗ trợ các kịch bản này.
Load balance và API gateway
Đầu tiên là dành cho các kịch bản gateway LB và API truyền thống. Vì APISIX được triển khai dựa trên NGINX + LuaJIT nên nó có các tính năng bảo mật và hiệu suất cao, đồng thời hỗ trợ tải động chứng chỉ SSL, tối ưu hóa bắt tay SSL và các chức năng khác. Về cân bằng tải, APISIX cũng hoạt động tốt hơn. Việc chuyển từ NGINX sang APISIX sẽ không làm giảm hiệu suất mà còn cải thiện hiệu quả quản lý do các tính năng như quản lý thống nhất mang lại.
Microservice Gateway
APISIX cho phép bạn viết các plugin tiện ích mở rộng bằng nhiều ngôn ngữ, điều này có thể giải quyết vấn đề chính mà các API gateway dịch vụ vi mô Đông-Tây gặp phải – cách quản lý theo cách thống nhất trong môi trường không đồng nhất. APISIX cũng hỗ trợ khám phá dịch vụ như Nacos, etcd và Eureka cũng như các phương thức DNS tiêu chuẩn, có thể thay thế hoàn toàn các API gateway microservice như Zuul, Spring Cloud Gateway và Dubbo.
Kubernetes Ingress
Hiện tại, dự án Kubernetes Ingress Controller chính thức của K8s chủ yếu được phát triển dựa trên tệp cấu hình NGINX nên hơi thiếu khả năng định tuyến và chế độ tải cũng như có một số hạn chế rõ ràng. Ví dụ: khi thêm hoặc sửa đổi bất kỳ API nào, bạn cần khởi động lại dịch vụ để hoàn tất cập nhật cấu hình NGINX mới. Việc khởi động lại dịch vụ có tác động lớn đến lưu lượng truy cập trực tuyến.
Bộ APISIX Ingress Controller giải quyết hoàn hảo tất cả các hạn chế được đề cập ở trên: nó hỗ trợ tải lại hoàn toàn nóng. Đồng thời, nó kế thừa tất cả các ưu điểm của APISIX và cũng hỗ trợ Kubernetes CRD gốc, thuận tiện cho người dùng migrate.

Service mesh
Trong vòng 5 đến 10 năm tới, kiến trúc Service mesh dựa trên mô hình gốc điện toán đám mây ( Cloud ) sẽ bắt đầu xuất hiện. APISIX cũng đã bắt đầu cuộc đua này trước. Sau nhiều nghiên cứu và phân tích kỹ thuật phong phú, APISIX đã hỗ trợ giao thức xDS. APISIX Mesh ra đời và APISIX cũng có chỗ đứng trong lĩnh vực lưới dịch vụ.

Tóm tắt
Đã ba năm kể từ ngày đầu tiên Apache APISIX có nguồn mở. Các nghiên cứu điển hình và cộng đồng có tính tích cực cao đã chứng minh rằng APISIX là API gateway hoàn hảo trong kỷ nguyên dựa trên nền tảng điện toán đám mây ( Cloud ). Khi đọc bài viết này, tôi tin rằng bạn đã hiểu biết toàn diện hơn về APISIX.










tks admin