Groa.js - Koa 式的 gRPC 开发框架
分享一个小弟自己新开发的 Koa 式 gRPC 开发框架!Groa 是一个仿 Koa API 架构的开源框架,支援 Middleware、async/await 等机制。让有 Koa 经验的 Node.js 开发者可以无痛开发 gRPC 的应用,建構自己的 gRPC server,无需再使用官方相当原始难用的 gRPC SDK。
项目才刚开始,源码在 Github 上,麻烦各位多多支持和意见反馈。如果觉得有兴趣,務必加入项目一起开发维护。:-)
项目地址:https://github.com/GroaJS/groa
gRPC 是什么?优点为何?
gRPC 是一个由 Google 推出的高效的开源网路传输架构,基於 HTTP/2 协议,可以实现双向串流和 RPC(Remote Procedure Call),也就是在同一个连线之下,可进行多次的远端调用,并同时可以支援资料串流推送的机制。相较於过去基於 HTTP/1.1 的 Restful API 设计,使用 gRPC 可以不需要每次调用一个远端 API,便重新连线一次,以及若使用到推送、串流等机制,无需再引入 WebSocket 或其他 Socket 解决方案。一些知名企业如 Netflix、Cisco 等公司,也都开始引入了 gRPC 作为网路传输的解决方案之一。
此外,由于 gRPC 建构於 Google Protocol Buffer 开源专案之上,可以将 JSON 等结构性信息,序列化为可串流的二进位格式,使得资料传输的效率提高,信息包处理效率提高,无论是对 Server 还是 Client 都可以得到效能上的提升。对于行动装置应用来说,使用 gRPC 替换 Restful API,会更为省电、节省频宽,也能直接支援即时串流技术,无需使用 polling、long-polling 或搭配其他 socket 类型解决方案。
现在越来越多世界级的企业和项目,开始引入高效的 gRPC 作为实现系统间交互沟通的信息传输方式,开始以 gRPC 作为提供系统间 API 的形式,试图提高系统架构稳定性及效能。
有多少语言或系统支援 gRPC?
目前官方和非官方统计,有超过 11 种主流语言支援 gRPC 或拥有 SDK、Library 可使用,如:C++、C#、Java、Objective-C、Swift、Python 和 Node.js 等,几乎大多数主流系统环境都可以轻易引入 gRPC。