シェア
//gRPC – Bước tiến mới cho Microservices của bạn

gRPC – Bước tiến mới cho Microservices của bạn

Khi hệ thống chuyển sang mô hình Microservices, các lần gọi API ngày càng nhiều, dẫn đến hệ quả là hiệu suất giảm do gánh nặng truyền tải dữ liệu. gRPC ra đời được xem là giải pháp tiềm năng cho vấn đề này.

Bài viết sẽ cung cấp các khái niệm cũng như lý thuyết vận hành cơ bản của gRPC, giúp các bạn hiểu được cách hoạt động, những ưu nhược điểm mà nó mang lại và tính áp dụng trong tương lai.

1. Giới thiệu về gRPC

gRPC là framework mã nguồn mở hỗ trợ giao tiếp từ xa (RPC: Remote Procedure Call) hiệu quả giữa các dịch vụ trong hệ thống phân tán.

Nền tảng này được phát triển bởi Google và sử dụng giao thức HTTP/2 để truyền tải dữ liệu, mang đến nhiều ưu điểm vượt trội so với các phương thức truyền thống như RESTful API.

Với gRPC, bạn có thể viết code như cách gọi một hàm trên máy tính cục bộ, mặc dù hàm này thực tế nằm trên một máy tính khác.

2. Cách thức hoạt động của gRPC

gRPC sử dụng protobuf để mô tả các dịch vụ và phương thức có thể được gọi từ xa.

gRPC

Ảnh minh họa từ trang web gRPC

Protobuf hay Protocols Buffer là IDL (Interface Definition Language) là một ngôn ngữ định nghĩa giao diện giao tiếp, dùng để mô tả các cấu trúc dữ liệu.

Chúng ta có thể xác định cấu trúc cho dữ liệu và các phương thức của service trong tệp proto.

Sau đó dùng protoc để biên dịch thành mã nguồn của các ngôn ngữ lập trình khác nhau, có chức năng serialize và deserialize các cấu trúc dữ liệu này thành dạng binary stream.

So với dạng XML hoặc JSON thì dữ liệu được tạo ra nhỏ gọn gấp 3-10 lần và được xử lý rất nhanh.

Kiến trúc gRPC

Kiến trúc gRPC

gRPC cung cấp các công cụ để tạo mã stub cho máy chủ và máy khách từ định nghĩa dịch vụ.

Máy khách sử dụng stub để gọi các phương thức trên máy chủ.

Dữ liệu được truyền tải giữa máy chủ và máy khách dưới dạng nhị phân.

3. Ưu điểm của gRPC

  • Hiệu suất cao: gRPC sử dụng protobuf để mã hóa dữ liệu nhị phân, giúp giảm kích thước dữ liệu truyền tải và tăng tốc độ xử lý so với JSON/XML.

Protobuf vượt trội về tốc độ và kích thước so với JSON. Tham khảo link bài viết (1)

  • Tiết kiệm tài nguyên: gRPC sử dụng HTTP/2 hiệu quả hơn HTTP/1.1, giúp giảm tải CPU và bộ nhớ cho máy chủ và máy khách. HTTP/2 cho phép gửi nhiều request/response trong cùng một connection. Hơn nữa, mọi thứ trong HTTP/2 đều được mã hóa trước khi gửi, bao gồm cả header. Còn nhiều thứ hay ho khác, các bạn hãy tìm hiểu thêm về HTTP/2.
  • Hỗ trợ đa ngôn ngữ: gRPC hỗ trợ nhiều ngôn ngữ lập trình phổ biến như Java, Python, Go, C++, PHP, Ruby, v.v… Các ứng dụng cũng có thể được viết bằng các ngôn ngữ khác nhau và gRPC có nhiều thư viện để hỗ trợ điều đó.
  • Tính linh hoạt: gRPC có thể sử dụng cho nhiều trường hợp khác nhau, từ Microservices đến IoT và Streaming media.
  • Hỗ trợ đa nền tảng: gRPC có thể chạy trên nhiều hệ điều hành và kiến trúc khác nhau, giúp tăng khả năng tương thích cho hệ thống.
  • Bảo mật: gRPC hỗ trợ các giao thức bảo mật như TLS/SSL giúp bảo vệ dữ liệu truyền tải.
  • Quản lý kết nối hiệu quả: gRPC cung cấp các tính năng quản lý kết nối hiệu quả như HTTP/2 multiplexing, giúp giảm thiểu số lượng kết nối cần thiết và cải thiện hiệu suất.
  • Khả năng mở rộng: gRPC có thể dễ dàng mở rộng để hỗ trợ số lượng lớn kết nối và xử lý lượng truy cập cao.

4. Nhược điểm của gRPC

  • Mức độ cần tìm hiểu cao: gRPC sử dụng protobuf để mô tả dịch vụ, đòi hỏi người dùng phải có kiến thức về protobuf. Việc này có thể tạo ra rào cản cho những người mới bắt đầu, nhất là khi so sánh với RESTful API, vốn đã phổ biến và dễ tiếp cận hơn.
  • Hỗ trợ cộng đồng chưa rộng bằng RESTful API: Do RESTful API đã được sử dụng rộng rãi từ lâu, nên cộng đồng hỗ trợ cho nó cũng lớn và mạnh mẽ hơn so với gRPC. Điều này có thể gây khó khăn cho người dùng gRPC khi gặp vấn đề và cần tìm kiếm trợ giúp.
  • Khó khăn trong việc debug: gRPC sử dụng mã nhị phân để truyền tải dữ liệu, khiến việc theo dõi thông tin trở nên khó khăn hơn so với RESTful API, vốn sử dụng định dạng JSON hoặc XML dễ đọc hơn.
  • Phụ thuộc vào HTTP/2: gRPC phụ thuộc vào HTTP/2 để hoạt động. Do đó, nó không thể sử dụng trong các môi trường không hỗ trợ HTTP/2, điều này có thể hạn chế tính linh hoạt của nó.
  • Hạn chế về trình duyệt: Khác với RESTful API, gRPC không được hỗ trợ đầy đủ bởi tất cả các trình duyệt web. Việc này có thể gây khó khăn cho việc phát triển các ứng dụng web sử dụng gRPC, vì nó đòi hỏi việc sử dụng các giải pháp thay thế như gRPC Gateway.

Tuy nhiên, cần lưu ý rằng những hạn chế này đang dần được cải thiện. Các framework đang dần tích hợp gRPC. Cộng đồng gRPC cũng đang phát triển nhanh chóng, hứa hẹn sẽ cung cấp nhiều tài nguyên hỗ trợ hơn trong tương lai.

5. So sánh gRPC với RESTful API

gRPC và RESTful API là hai phương thức giao tiếp từ xa phổ biến được sử dụng để truyền tải dữ liệu giữa các dịch vụ trong hệ thống phân tán. Mỗi phương thức đều có những ưu điểm và nhược điểm riêng.

Ngoài sự giống nhau của RESTful API và gRPC ở khả năng mở rộng, hỗ trợ đa ngôn ngữ, đa nền tảng, tính linh hoạt, tính bảo mật thì còn có các điểm khác nhau như sau:

Tính nănggRPCRESTful API
Hiệu suấtCaoTrung bình
Tiết kiệm tài nguyênCaoTrung bình
Mức độ học tậpCaoTrung bình
Hỗ trợ cộng đồngTrung bìnhCao
Quản lý kết nốiHiệu quảTrung bình
Hỗ trợ trình duyệtHạn chếHỗ trợ tốt

6. Ứng dụng của gRPC

  • Microservices: gRPC là lựa chọn lý tưởng cho việc giao tiếp giữa các dịch vụ trong kiến trúc Microservices.
  • IoT: gRPC có thể được sử dụng để kết nối các thiết bị IoT với nhau và với các dịch vụ khác.
  • Streaming media, game: gRPC có thể được sử dụng để truyền tải video và âm thanh trực tuyến, có thể được sử dụng để phát triển các trò chơi multiplayer.

7. Giải pháp chuyển đổi và phát triển

Trong hệ thống không phải ứng dụng nào cũng hỗ trợ giao thức gRPC. Trong quá trình chuyển đổi, vẫn sẽ có những ứng dụng sử dụng RESTful API. Vậy làm sao để các ứng dụng này giao tiếp với nhau. Có 2 cách giải quyết vấn đề này là:

  1. gRPC Gateway: gRPC Gateway đóng vai trò là service proxy, giúp chuyển đổi các yêu cầu HTTP sang gRPC và ngược lại. Cho phép sử dụng gRPC với các ứng dụng không hỗ trợ gRPC trực tiếp.
    Nhược điểm của việc này là dữ liệu sẽ phải đi qua thêm một bước nữa, điều này có thể làm tăng độ trễ khi truyền tải.
    Hình ảnh minh họa Cloud Endpoints của google sử dụng gRPC

    Ảnh minh họa Cloud Endpoints của Google sử dụng gRPC

  2. Xây dựng một service hỗ trợ cả hai đầu gRPC và RESTful API: Nhược điểm làm tăng thêm độ phức tạp của project. Nhưng đối với một số framework có hỗ trợ thì việc này có thể thực hiện dễ dàng. Tham khảo link bài viết (2) ở phần tài liệu tham khảo.

8. Tài liệu tham khảo

Bài viết chỉ cung cấp thông tin cơ bản về gRPC. Bạn có thể vào các đường dẫn dưới đây để có thêm thông tin chi tiết.

Kết luận

gRPC là một framework mạnh mẽ và hiệu quả cho phép thực hiện giao tiếp từ xa.

Nền tảng này mang đến nhiều ưu điểm vượt trội so với các phương thức truyền thống như RESTful API. Giúp nâng cao hiệu suất và tiết kiệm tài nguyên cho hệ thống. Tuy nhiên, gRPC cũng có một số nhược điểm cần lưu ý trước khi sử dụng.

Một vài lời khuyên được đưa ra trước khi bắt đầu áp dụng gRPC để bạn tham khảo như sau:

  • Nên sử dụng gRPC cho các hệ thống phân tán cần hiệu suất cao và tiết kiệm tài nguyên.
  • Cần cân nhắc kỹ lưỡng trước khi sử dụng gRPC cho các ứng dụng web.
  • Khi trong phát triển chúng ta nên sử dụng thêm các công cụ hỗ trợ gRPC để đơn giản hóa việc phát triển và gỡ lỗi.

Chúc bạn thành công!

Phạm Trịnh Minh Triết
Java Developer

今すぐ応募







    福利厚生

    給料・ボーナス制度

    社員の感情・願望を理解しているので、リバークレーンベトナムは特に年2回の定期昇給制度を設けています。毎年6月と12月に評価を行い、毎年1月と7月に給与が変更されます。また、社員は月次と年次の優秀な個人には定期的な業績賞与が別で支給されます。

    日本研修制度

    世界中の新しい技術分野に触れるために、社員を日本にオンサイトさせる方針があります。さらに、技術分野か管理分野かのキャリアパスは社員の決定次第です。

    毎年社員旅行

    リバークレイン・ベトナムは、スタッフに挑戦の機会を提供するだけでなく、年に一度の魅力的な旅行で彼らを楽しませています。エキサイティングなガラディナーやチームビルディングゲームは、リバークレインのメンバー同士の絆をさらに深める手助けをします。

    リバークレイン イベント

    チームビルディング・ファミリーデー・お夏休み・中秋節などのイベントはチーム内のメンバーが接続出来るしお互いに自分のことを共有出来る機会です。ご家族員に連携する際にはそれも誇りに言われています。

    社会保険制度

    リバークレーンベトナムは従業員に社会保険、医療保険、失業手当などの社会保険制度があります。当社は、これらの保険に関するあらゆる手続きをスタッフに必ずサポートしています。さらに、他の保険契約も考慮され、検討されています。

    他福利

    社員向けの活動をサポートすることもあります。 ・文化・芸術・スポーツクラブの運営費用 ・技術研究の教科書を購入する金額 ・エンジニア試験・言語能力試験を受験料 ・ソフトスキルのセミナー・コースの参加費 ・等 また会社政策通り、他のベネフィットもあります。

    © 2012 RiverCrane Vietnam. All rights reserved.

    Close