6 loại kiến trúc API và cách chúng hoạt động
API kết nối các ứng dụng thông qua các giao thức và kiến trúc rõ ràng. Kiến trúc API là một khung các quy tắc để tạo giao diện phần mềm. Các quy tắc xác định cách cung cấp chức năng máy chủ cho người dùng. Loại kiến trúc xác định các quy tắc và cấu trúc chi phối API.
Có nhiều kiểu kiến trúc API khác nhau, từ REST đến RPC. Tìm hiểu về cấu trúc và thành phần của chúng sẽ giúp bạn chọn một cái cho ứng dụng của mình.
Mục Lục
1. NGHỈ NGƠI
API REST hiện đại và là kiến trúc API phổ biến nhất mà các nhà phát triển sử dụng. NGHỈ NGƠI (chuyển giao trạng thái đại diện) là một kiến trúc được sử dụng để thiết kế các ứng dụng máy khách-máy chủ. Nó không phải là một giao thức hay tiêu chuẩn, vì vậy bạn có thể triển khai nó theo nhiều cách khác nhau. Khía cạnh này làm tăng tính linh hoạt của bạn với tư cách là nhà phát triển.
REST cho phép truy cập vào dữ liệu được yêu cầu được lưu trữ trong cơ sở dữ liệu. Bạn có thể thực hiện các chức năng CRUD cốt lõi bằng API REST. Khi khách hàng yêu cầu nội dung qua API RESTful, họ phải sử dụng đúng tiêu đề và tham số. Tiêu đề chứa siêu dữ liệu hữu ích để xác định tài nguyên, như mã trạng thái và ủy quyền.
Thông tin được truyền qua HTTP có thể ở dạng JSON, HTML, XML hoặc văn bản thuần túy. JSON là định dạng tệp được sử dụng phổ biến nhất cho API REST. JSON là ngôn ngữ bất khả tri và con người có thể đọc được.
2. XÀ PHÒNG
Giao thức truy cập đối tượng đơn giản (SOAP) là một giao thức API chính thức. World Wide Web Consortium (W3C) duy trì giao thức SOAP, đây là một trong những kiến trúc API sớm nhất. Thiết kế của nó giúp giảm bớt sự giao tiếp giữa các ứng dụng được xây dựng bằng các ngôn ngữ và nền tảng khác nhau.
Định dạng SOAP mô tả API bằng ngôn ngữ mô tả dịch vụ web (WSDL). Nó được viết bằng ngôn ngữ đánh dấu mở rộng (XML). Định dạng áp đặt các tiêu chuẩn tuân thủ tích hợp nhằm tăng cường bảo mật, tính nhất quán, cách ly và độ bền. Các thuộc tính này đảm bảo các giao dịch cơ sở dữ liệu đáng tin cậy giúp SOAP tốt hơn cho việc phát triển doanh nghiệp.
Khi người dùng yêu cầu nội dung thông qua API SOAP, nó sẽ đi qua các giao thức lớp tiêu chuẩn. Phản hồi ở định dạng XML mà con người và máy móc có thể đọc được. Giống như API REST, API SOAP không lưu trữ/lưu trữ thông tin. Nếu bạn cần dữ liệu sau này, bạn cần thực hiện một yêu cầu khác.
SOAP hỗ trợ cả trao đổi dữ liệu trạng thái và không trạng thái.
3. Đồ thị QL
GraphQL là ngôn ngữ truy vấn cho API. Đó là thời gian chạy phía máy chủ thực thi các truy vấn dựa trên một tập hợp dữ liệu đã xác định. GraphQL có các trường hợp sử dụng cụ thể. Kiến trúc của nó cho phép bạn khai báo những thông tin cụ thể mà bạn cần.
Không giống như trong kiến trúc REST, nơi HTTP xử lý các yêu cầu và phản hồi của máy khách, GraphQL yêu cầu dữ liệu bằng các truy vấn. Một dịch vụ GraphQL xác định các loại và trường của các loại đó, sau đó cung cấp các chức năng cho từng trường và loại.
Dịch vụ nhận các truy vấn GraphQL để xác thực và thực thi. Đầu tiên, nó kiểm tra một truy vấn để đảm bảo truy vấn đó đề cập đến các loại và trường đã xác định. Sau đó, nó chạy các chức năng liên quan để tạo ra kết quả mong muốn.
GraphQL rất phù hợp cho một số trường hợp sử dụng nhất định như tìm nạp dữ liệu từ nhiều nguồn. Bạn cũng có thể kiểm soát việc tìm nạp dữ liệu và điều chỉnh băng thông cho các thiết bị nhỏ hơn.
4. Apache Kafka
Apache Kafka là một nền tảng phân tán hỗ trợ truyền phát sự kiện. Truyền sự kiện là quá trình thu thập dữ liệu trong thời gian thực từ các nguồn. Nguồn có thể là cơ sở dữ liệu, máy chủ hoặc ứng dụng phần mềm. Hệ thống Kafka bao gồm máy chủ và máy khách. Giao tiếp xảy ra thông qua một giao thức mạng TCP.
Bạn có thể triển khai hệ thống trên phần cứng, máy ảo và vùng chứa. Bạn có thể thực hiện việc này tại cơ sở và trong môi trường đám mây. Hệ thống Apache Kafka thu thập dữ liệu, xử lý và phản ứng với nó trong thời gian thực. Nó cũng có thể định tuyến dữ liệu đến đích ưa thích trong thời gian thực. Kafka thu thập và lưu trữ dữ liệu trong hệ thống mà bạn có thể truy xuất sau này để sử dụng.
Kafka hỗ trợ luồng liên tục và tích hợp dữ liệu. Điều này đảm bảo rằng thông tin ở đúng nơi, vào đúng thời điểm. Truyền sự kiện có thể áp dụng cho nhiều trường hợp sử dụng cần truyền dữ liệu trực tiếp. Chúng bao gồm các tổ chức tài chính, chăm sóc sức khỏe, chính phủ, ngành vận tải và các công ty phần mềm máy tính.
5. API không đồng bộ
AsyncAPI là một sáng kiến mã nguồn mở giúp xây dựng và duy trì các kiến trúc hướng sự kiện. Thông số kỹ thuật của nó có nhiều điểm chung với thông số OpenAPI. AsyncAPI về cơ bản là sự thích ứng và cải tiến từ các thông số kỹ thuật của OpenAPI, với một vài điểm khác biệt.
Kiến trúc AsyncAPI tập hợp hỗn hợp API REST và API hướng sự kiện. Lược đồ của nó để xử lý các yêu cầu và phản hồi tương tự như lược đồ của API sự kiện. AsyncAPI cung cấp các thông số kỹ thuật để mô tả và ghi lại các ứng dụng không đồng bộ ở định dạng mà máy có thể đọc được. Nó cũng cung cấp các công cụ như trình tạo mã để giúp người dùng triển khai chúng dễ dàng hơn.
AsyncAPI cải thiện trạng thái hiện tại của kiến trúc Theo hướng sự kiện (EDA). Mục tiêu là làm cho việc làm việc với các EDA trở nên dễ dàng hơn giống như với các API REST. Sáng kiến AsyncAPI cung cấp tài liệu và mã hỗ trợ quản lý sự kiện. Phần lớn các quy trình được sử dụng trong API REST áp dụng cho API hướng sự kiện/không đồng bộ.
Việc sử dụng đặc tả AsyncAPI để ghi lại các hệ thống hướng sự kiện là rất quan trọng. Nó chi phối và duy trì tính nhất quán và hiệu quả giữa các nhóm làm việc trong các dự án hướng đến sự kiện.
6. Gọi thủ tục từ xa (RPC)
RPC là một giao thức giao tiếp phần mềm cho phép giao tiếp giữa các chương trình khác nhau trên mạng. Ví dụ, một chương trình có thể yêu cầu thông tin từ một máy tính khác trên mạng. Nó không phải tuân thủ các giao thức mạng. Bạn có thể sử dụng RPC để gọi các quy trình trên hệ thống từ xa giống như trên hệ thống cục bộ.
RPC hoạt động theo mô hình client-server. Chương trình máy khách yêu cầu và chương trình máy chủ phản hồi bằng một dịch vụ. RPC hoạt động đồng bộ. Khi một chương trình gửi yêu cầu, nó sẽ bị treo cho đến khi nhận được phản hồi từ máy chủ.
RPC là tốt nhất cho các hệ thống phân tán. Chúng là tốt nhất cho các hệ thống dựa trên lệnh và có tải trọng nhẹ giúp tăng hiệu suất.
Cách chọn kiến trúc API phù hợp
Kiến trúc API phù hợp tùy thuộc vào trường hợp sử dụng của bạn. Kiến trúc xác định phương pháp để phát triển API và cách nó sẽ chạy. Thiết kế kiến trúc của API xác định các thành phần và tương tác của nó.
Đưa ra các quyết định về kiến trúc trước khi thiết kế và phát triển API. Xác định các yêu cầu kỹ thuật của API, cấp, quản lý vòng đời và bảo mật. Các thiết kế kiến trúc API chứa các lớp cấu trúc. Các lớp hướng dẫn sự phát triển và đảm bảo API được tạo phục vụ mục đích đã định của nó.