Tôi đang cố gắng hiểu nơi GraphQL phù hợp nhất để sử dụng trong kiến trúc Microservice.Sơ đồ khối và Kiến trúc Microservice
Có một số cuộc tranh luận về việc chỉ có 1 lược đồ GraphQL hoạt động như API Gateway ủy quyền yêu cầu tới các dịch vụ nhỏ được nhắm mục tiêu và khắc phục phản hồi của chúng. Microservices vẫn sẽ sử dụng giao thức REST/Thrift cho suy nghĩ truyền thông.
Một cách tiếp cận khác là thay vào đó để có nhiều sơ đồ GraphQL một trên mỗi microservice. Có một máy chủ API Gateway nhỏ hơn để định tuyến yêu cầu tới microservice được nhắm mục tiêu với tất cả thông tin của yêu cầu + truy vấn GraphQL.
1 Cách tiếp cận
Có 1 GraphQL Schema như một API Gateway sẽ có một nhược điểm mà mỗi khi bạn thay đổi microservice hợp đồng đầu vào của bạn/đầu ra, chúng ta phải thay đổi Schema GraphQL phù hợp trên API Gateway Side.
2 cách tiếp cận
Nếu sử dụng Nhiều GraphQL Schema mỗi microservices, có ý nghĩa trong một cách vì GraphQL thực thi một định nghĩa lược đồ, và người tiêu dùng sẽ cần phải tôn trọng đầu vào/đầu ra cho từ microservice.
Câu hỏi
Nơi nào bạn tìm GraphQL phù hợp phù hợp với thiết kế kiến trúc microservice?
Bạn sẽ thiết kế Cổng API với triển khai GraphQL có thể như thế nào?
1 Tôi nên đã đặt một từ chối trách nhiệm về bài viết của tôi mà tôi đã không có kinh nghiệm với GraphQL, thay vì trả lời dựa trên một chút đọc rất ngắn trong quá trình nghiên cứu để trả lời câu hỏi. Tôi nghĩ câu trả lời này sẽ giải quyết tốt hơn truy vấn của OP. –
@helfer: Điều này thực sự có ý nghĩa :) cảm ơn. Tôi có vài câu hỏi trên đầu câu trả lời tuyệt đẹp này. - Bạn đang nói rằng GraphQL phải được sử dụng như cổng API? - Giả sử tôi có một ** Đơn đặt hàng ** Microservice để lộ điểm kết thúc REST hoặc GraphQL. Khi tôi đã hoàn thành nó, tôi phải cập nhật lược đồ GraphQL chính để phản ánh chính xác cùng một dữ liệu mà dịch vụ microservice sẽ phơi bày? Liệu nó không âm thanh trùng lặp hoặc di chuyển ra khỏi văn hóa dịch vụ microservice mà nên được độc lập triển khai? Bất kỳ thay đổi nào đối với dịch vụ microservice phải được phản ánh/sao chép vào Sơ đồ đồ thị chính (Main GraphQL Schema)? – Fabrizio
@Fabrizio điều tốt đẹp với GraphQL là ngay cả khi các thay đổi REST API phụ trợ, lược đồ GraphQL vẫn có thể giữ nguyên, miễn là có cách để lấy dữ liệu mà dịch vụ REST đã tiếp xúc trước đó. Nếu nó cho thấy nhiều dữ liệu hơn, thì cách kinh điển để giải quyết vấn đề này là chỉ cần thêm các trường/kiểu mới vào lược đồ hiện có. Những người ở Facebook đã tạo ra GraphQL nói với tôi rằng họ chưa bao giờ thực hiện một thay đổi đột phá đối với lược đồ của họ trong bốn năm. Tất cả những thay đổi mà họ tạo ra đều là phụ gia, có nghĩa là khách hàng mới có thể sử dụng chức năng mới, trong khi các khách hàng cũ sẽ tiếp tục làm việc. – helfer