GraphQL - Kiến trúc
GraphQL là một đặc tả mô tả hoạt động của một máy chủ GraphQL. Đây là một tập hợp các nguyên tắc về cách xử lý các yêu cầu và phản hồi như các giao thức được hỗ trợ, định dạng dữ liệu có thể được máy chủ chấp nhận, định dạng của phản hồi do máy chủ trả về, v.v. Yêu cầu do khách hàng đưa ra đối với GraphQL máy chủ được gọi là Truy vấn. Một khái niệm quan trọng khác của GraphQL là nông học lớp vận chuyển của nó. Nó có thể được sử dụng với bất kỳ giao thức mạng có sẵn nào như TCP, websocket hoặc bất kỳ giao thức lớp truyền tải nào khác. Nó cũng trung lập với cơ sở dữ liệu, vì vậy bạn có thể sử dụng nó với cơ sở dữ liệu quan hệ hoặc NoSQL.
Máy chủ GraphQL có thể được triển khai bằng cách sử dụng bất kỳ phương pháp nào trong ba phương pháp được liệt kê bên dưới:
- Máy chủ GraphQL với cơ sở dữ liệu được kết nối
- Máy chủ GraphQL tích hợp các hệ thống hiện có
- Phương pháp kết hợp
Máy chủ GraphQL với Cơ sở dữ liệu được Kết nối
Kiến trúc này có Máy chủ GraphQL với cơ sở dữ liệu tích hợp và thường có thể được sử dụng với các dự án mới. Khi nhận được Truy vấn, máy chủ đọc tải trọng yêu cầu và tìm nạp dữ liệu từ cơ sở dữ liệu. Điều này được gọi là giải quyết truy vấn. Phản hồi được trả lại cho khách hàng tuân theo định dạng được chỉ định trong đặc tả GraphQL chính thức.
Trong sơ đồ trên, máy chủ GraphQL và cơ sở dữ liệu được tích hợp trên một nút duy nhất. Máy khách (máy tính để bàn / thiết bị di động) giao tiếp với máy chủ GraphQL qua HTTP. Máy chủ xử lý yêu cầu, tìm nạp dữ liệu từ cơ sở dữ liệu và trả về máy khách.
Máy chủ GraphQL tích hợp các hệ thống hiện có
Cách tiếp cận này hữu ích cho các công ty có cơ sở hạ tầng kế thừa và các API khác nhau. GraphQL có thể được sử dụng để hợp nhất các microservices, cơ sở hạ tầng kế thừa và các API của bên thứ ba trong hệ thống hiện có.
Trong sơ đồ trên, API GraphQL hoạt động như một giao diện giữa máy khách và các hệ thống hiện có. Các ứng dụng khách giao tiếp với máy chủ GraphQL, máy chủ này sẽ giải quyết truy vấn.
Phương pháp kết hợp
Cuối cùng, chúng ta có thể kết hợp hai cách tiếp cận trên và xây dựng một máy chủ GraphQL. Trong kiến trúc này, máy chủ GraphQL sẽ giải quyết mọi yêu cầu nhận được. Nó sẽ truy xuất dữ liệu từ cơ sở dữ liệu được kết nối hoặc từ API tích hợp. Điều này được thể hiện trong hình bên dưới: