Share This
//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

ỨNG TUYỂN







    Chế độ phúc lợi

    CHÍNH SÁCH LƯƠNG & THƯỞNG

    Thấu hiểu tâm tư nguyện vọng của nhân viên, công ty Rivercrane Việt Nam đặc biệt thiết lập chế độ xét tăng lương định kỳ 2lần/năm. Xét đánh giá vào tháng 06 và tháng 12 hàng năm và thay đổi lương vào tháng 01 và tháng 07 hàng năm. Ngoài ra, nhân viên còn được thưởng thành tích định kỳ cho các cá nhân xuất sắc trong tháng, năm.

    CHẾ ĐỘ ĐÀO TẠO TẠI NHẬT

    Luôn luôn mong muốn các kỹ sư và nhân viên trong công ty có cái nhìn toàn diện về lập trình những mảng kỹ thuật trên thế giới, công ty Rivercrane Việt Nam quyết định chế độ 3 tháng 1 lần đưa nhân viên đi học tập tại Nhật. Các bạn kỹ sư hoàn toàn đều có thể quyết định khả năng phát triển bản thân theo hướng kỹ thuật hoặc theo hướng quản lý.

    CHẾ ĐỘ ĐI DU LỊCH HÀNG NĂM

    Không chỉ đưa đến cho nhân viên những công việc thử thách thể hiện bản thân, công ty Rivercrane Việt Nam muốn nhân viên luôn thích thú khi đến với những chuyến hành trình thú vị hàng năm. Những buổi tiệc Gala Dinner sôi động cùng với những trò chơi Team Building vui nhộn sẽ giúp cho đại gia đình Rivercrane thân thiết hơn.

    CHẾ ĐỘ EVENT CÔNG TY

    Những hoạt động Team building, Company Building, Family Building, Summer Holiday, Mid-Autumn Festival… sẽ là những khoảnh khắc gắn kết đáng nhớ của mỗi một nhân viên trong từng dự án, hoặc sẽ là những điều tự hào khi giới thiệu công ty mình với với gia đình thân thương, cùng nhau chia sẻ yêu thương với thông điệp “We are One”

    BẢO HIỂM

    Công ty Rivercrane Việt Nam đảm bảo tham gia đầy đủ chế độ Bảo hiểm xã hội, bảo hiểm y tế và bảo hiểm thất nghiệp. Cam kết chặt chẽ về mọi thủ tục phát sinh công ty đều hỗ trợ và tiến hành cho nhân viên từ đầu đến cuối. Những chế độ bảo hiểm khác công ty cũng đặc biệt quan tâm và từng bước tiến hành.

    CHẾ ĐỘ PHÚC LỢI KHÁC

    Hỗ trợ kinh phí cho các hoạt động văn hóa, văn nghệ, thể thao; Hỗ trợ kinh phí cho việc mua sách nghiên cứu kỹ thuật; Hỗ trợ kinh phí thi cử bằng cấp kỹ sư, bằng cấp dành cho ngôn ngữ. Hỗ trợ kinh phí tham gia các lớp học về quản lý kỹ thuật bên ngoài; Các hỗ trợ phúc lợi khác theo quy định công ty…

    © 2012 RiverCrane Vietnam. All rights reserved.

    Close