Nếu bạn yêu thích microservices, thì bạn có thể đã nghe nói về hai thuật ngữ này nhiều lần. Thường thì mọi người bị nhầm lẫn giữa hai điều này. Trong bài viết này, tôi sẽ nói chi tiết về Service Mesh (lưới dịch vụ), API Gateway và thảo luận khi nào thì sử dụng cái gì.
Trước khi đi sâu vào Service Mesh (lưới dịch vụ) và API Gateway, chúng ta hãy tìm hiểu các lớp mạng (Network Layers). Sau đây là mô hình lớp mạng OSI:
Lý do để có bản cập nhật này là chúng ta sẽ nói về một số lớp mạng trong các phần tiếp theo.
Một lưới dịch vụ (Service Mesh) là một công nghệ quản lý giao tiếp service-to-service trong một hệ thống phần mềm phân tán (distributed system). Các mắt lưới dịch vụ quản lý kiểu giao tiếp mạng đông-tây. Lưu lượng theo hướng Đông-Tây cho biết luồng di chuyển bên trong trung tâm dữ liệu, cụm Kubernetes hoặc hệ thống phân tán (distributed system).
Lưới dịch vụ (Service Mesh) bao gồm hai thành phần quan trọng:
Các proxy nằm bên cạnh ứng dụng được gọi là data plane, trong khi các thành phần quản lý điều phối hành vi của proxy được gọi là control plane.
Lưới dịch vụ (Service Mesh) cho phép bạn tách các logic nghiệp vụ của ứng dụng giúp nâng cao độ tin cậy, bảo mật và khả năng quan sát.
Lưới dịch vụ (Service Mesh) cho phép bạn thực hiện khám phá dịch vụ động. Một proxy sidecar có thể giúp bạn cân bằng tải (load balancing) và giới hạn tốc độ (rate limiting). Nó có thể giúp bạn phân chia lưu lượng để thực hiện A/B testing, có thể hữu ích cho các bản phát hành canary.
Lưới dịch vụ (Service Mesh) hỗ trợ theo dõi phân tán, giúp bạn giám sát nâng cao (số lượng yêu cầu, tỷ lệ thành công và độ trễ phản hồi) và gỡ lỗi. Nó thậm chí còn có khả năng khai thác giao tiếp dịch vụ với dịch vụ để hiểu rõ hơn về giao tiếp.
Vì lưới dịch vụ cung cấp kiểm tra tình trạng (health checks), thử lại (retries), hết thời gian chờ (timeouts) và ngắt mạch (circuit breaking), nên nó cải thiện độ tin cậy cơ bản của ứng dụng của bạn.
Lưới dịch vụ cho phép TLS lẫn nhau giữa các dịch vụ, giúp tăng tính bảo mật của giao tiếp giữa dịch vụ và dịch vụ. Bạn cũng có thể triển khai danh sách kiểm soát truy cập (ACL) làm chính sách bảo mật.
Một proxy service mesh / sidecar thực sự hỗ trợ nhiều loại dịch vụ và thực hiện các chính sách lưu lượng L4 / L7.
Có rất nhiều lưới dịch vụ có sẵn trên thị trường. Sau đây là một vài trong số chúng:
Bạn có thể tìm thấy một số bài báo trên internet so sánh các lưới dịch vụ được liệt kê ở trên.
API Gateway hoạt động như một điểm truy cập duy nhất vào một cụm, một trung tâm dữ liệu hoặc một nhóm các dịch vụ phân tán. Trong cấu trúc liên kết mạng, nó thường được gọi là lưu lượng truy cập bắc-nam. Thông thường, các thiết bị di động rơi vào loại lưu lượng mạng này.
Cũng có thể mọi người sẽ sử dụng API Gateway để giao tiếp giữa hai sản phẩm được triển khai trong cùng một trung tâm dữ liệu. Trong trường hợp đó, loại giao tiếp mạng có thể là đông tây.
Một API Gateway nhận các cuộc gọi từ các client và định tuyến chúng đến các dịch vụ thích hợp. Trong khi làm như vậy, nó cũng có thể phiên dịch các giao thức.
Có nhiều lợi ích khác nhau khi sử dụng API Gateway:
API Gateway thường chỉ tập trung vào các chính sách L7.
Từ quan điểm triển khai, có hai cách mà các API Gateway có thể được sử dụng:
Có một số API Gateway có sẵn trên thị trường. Sau đây là một vài trong số chúng:
Bây giờ bạn đã biết lưới dịch vụ (Service Mesh) và API Gateway là gì, hãy cố gắng tìm hiểu khi nào thì sử dụng chúng.
Rất có thể lưới dịch vụ (Service Mesh) và API Gateway có thể cùng tồn tại. Sơ đồ sau đây trình bày các kịch bản lưới dịch vụ (Service Mesh) và API Gateway cùng tồn tại:
Sơ đồ trên cho thấy rằng đối với một phạm vi sản phẩm, bạn có thể triển khai lưới dịch vụ (lưu lượng truy cập đông-tây). Khi cần giao tiếp giữa các sản phẩm, có thể sử dụng API Gateway nội bộ (giao thông đông tây). Khi các client ở bên ngoài cần giao tiếp với các dịch vụ, một Edge API Gateway có thể được sử dụng (lưu lượng truy cập bắc-nam).
Bạn có thể vui lòng tắt trình chặn quảng cáo ❤️ để hỗ trợ chúng tôi duy trì hoạt động của trang web.
Trong bài viết này, chúng ta sẽ tìm hiểu cách sử dụng outbox pattern để triển khai distributed transaction trong kiến trúc microservices.
Trong bài viết này, chúng tôi sẽ chỉ cho bạn cách bạn có thể kết hợp SignalR và RabbitMQ để xây dựng giao tiếp máy chủ-máy khách thời gian thực.
Trong bài viết này, chúng ta sẽ tìm hiểu về truy cập dữ liệu và cách lưu trữ dữ liệu một cách hiệu quả trong microservices sử dụng Marten và PostgreSQL.
Trong bài viết này, chúng ta sẽ tìm hiểu về API Gateway trong kiến trúc microservices và cách xây dựng API Gateway bằng Ocelot.