4

Connect:一个更好的 gRPC

 2 years ago
source link: https://www.jdon.com/60888
Go to the source link to view the article. You can view the picture content, updated content and better typesetting reading experience. If the link is broken, please click the button below to view the snapshot at that time.
neoserver,ios ssh client

Connect:一个更好的 gRPC
Connect 基于net/http,完全兼容 gRPC(包括流式传输、预告片和错误详细信息),并且只是一个 Go 包。Connect 客户端适用于任何 gRPC 服务器,而 Connect 处理程序适用于任何 gRPC 客户端。处理程序实现http.Handler和客户端包装http.Client,因此 Connect 与整个 Go HTTP 生态系统一起工作。

除了 gRPC 和 gRPC-Web,Connect还支持自己的协议。它是 gRPC 和 Twirp 中最好的,它适用于 HTTP/1.1 和 HTTP/2,并且对于 cURL 来说足够简单:

curl --header "Content-Type: application/json" \ --data '{"sentence": "I feel happy."}' \ https://demo.connect.build/buf.connect.demo.eliza.v1.ElizaService/Say

总体而言,我们认为这是对基于 Protobuf 的 Go RPC 的更专注、更不引人注目的尝试。

我从来没有真正喜欢过gRPC,但真的很喜欢构建基于RPC的API。因此,当Twirp在2018年初出现时,我觉得有一个真正的替代方案。我认为Connect继承了其他两个产品的优点,推动了我们的发展。

Connect提供的一个很好的生活质量改进是对请求/响应头的访问。在上下文中不再有管道传入/传出头信息(这总是让人觉得有点恶心)。直到你实现了一些代码,意识到这些代码是多么的干净,多么的容易推理,你才会欣赏这一点。

和Twirp一样,Connect可以和我们最喜欢的Go路由器一起使用:Go-chi/chi、gorrila/mux或普通的标准库。这是gRPC最困扰我的事情:缺乏与Go生态系统其他部分的互操作性。我认为Connect很好地弥补了这一缺陷,提供了gRPC和Twirp的优点,同时提供了一个新的价值主张。

点击标题


About Joyk


Aggregate valuable and interesting links.
Joyk means Joy of geeK