+1

[GOLANG] - Tạo gRPC Tập Trung Áp Dụng Trong Microservice

Ở bài viết này mình sẽ không đề cập tới việc cài đặt, khởi tạo server gRPC server hay client, mình sẽ đề cập chi tiết ở 1 bài viết chuyên về gRPC hơn. Bài viết này mình sẽ mô tả cách mình setup gRPC trong mô hình Microservice sao cho dễ dàng áp dụng nhất.

1. Chạy gRPC server và client

Giả sử mình có 2 service là OrderService và DriverService, và 2 service này sẽ communicate với nhau bằng đường gRPC. Phía OrderService sẽ generate ra file server và client rpc và DriverService cũng tương tự. Để Phía DriverService có thể communicate với OrderService bằng gRPC, bên DriverService phải có file client được generate từ phía OrderService và ngược lại.

Đặt trường hợp không chỉ có 2 mà là hàng trăm services communicate với nhau bằng gRPC , vậy 1 services client muốn call gRPC với n services sẽ phải tải n file gRPC client từ các services khác về lại source code của mình, điều này dẫn tới sự phồng to của source code. Chưa kể khi phía server generate lại file proto, phía client phải copy lại và update để không bị outdate.

2. gRPC Tập Trung

  1. Để các service communicate với nhau thông qua gRPC mà không cần quá quan tâm việc copy lại file gRPC client, mình có đề ra phương án là tạo 1 gRPC tập trung. gRPC tập trung ở đây có thể hiểu là mình sẽ gom toàn bộ file proto từ tất cả các service và tạo 1 repository chung cho tất cả. Tiếp đó, mình sẽ cấu trúc theo package của golang, trong đó mỗi package tương ứng 1 service. Khi generate ra file code golang gRPC server và client sẽ được đưa vào package tương ứng.
  2. Khi generate ra tất cả, mình sẽ up lên github và coi module này như 1 thư việc mã nguồn mở
  3. Các service sẽ go get module này về, và apply gRPC server cũng như client theo module , như vậy cách làm này ta không cần quan tâm tới việc copy file đúng hay chưa nữa, cũng như không sợ code bị phình to.
  4. Source code tham khảo https://github.com/huytrantech/proto-core-2

All rights reserved

Viblo
Hãy đăng ký một tài khoản Viblo để nhận được nhiều bài viết thú vị hơn.
Đăng kí