<?xml version="1.0" encoding="utf-8" standalone="yes"?>
<rss version="2.0" xmlns:atom="http://www.w3.org/2005/Atom" xmlns:content="http://purl.org/rss/1.0/modules/content/">
  <channel>
    <title>GRPC on 我的绕地飞行记录</title>
    <link>https://blog.inith271.top/tags/grpc/</link>
    <description>Recent content in GRPC on 我的绕地飞行记录</description>
    <image>
      <title>我的绕地飞行记录</title>
      <url>https://blog.inith271.top/%3Clink%20or%20path%20of%20image%20for%20opengraph,%20twitter-cards%3E</url>
      <link>https://blog.inith271.top/%3Clink%20or%20path%20of%20image%20for%20opengraph,%20twitter-cards%3E</link>
    </image>
    <generator>Hugo -- 0.136.1</generator>
    <language>en-us</language>
    <lastBuildDate>Sat, 29 Jun 2024 10:54:55 +0800</lastBuildDate>
    <atom:link href="https://blog.inith271.top/tags/grpc/index.xml" rel="self" type="application/rss+xml" />
    <item>
      <title>GRPC Gateway使用示例</title>
      <link>https://blog.inith271.top/posts/grpc-gateway-example/</link>
      <pubDate>Sat, 29 Jun 2024 10:54:55 +0800</pubDate>
      <guid>https://blog.inith271.top/posts/grpc-gateway-example/</guid>
      <description>&lt;h1 id=&#34;grpc-gateway使用示例&#34;&gt;gRPC-Gateway使用示例&lt;/h1&gt;
&lt;p&gt;grpc 相比REST HTTP服务没有默认的速度优势, 但是它提供了一些可选的能提高速度的方式:&lt;/p&gt;
&lt;ul&gt;
&lt;li&gt;选择性消息压缩&lt;/li&gt;
&lt;li&gt;负载均衡&lt;/li&gt;
&lt;li&gt;等
grpc并不是万能的工具. 比如因为兼容性易维护的等需求, 我想提供一个传统的HTTP/JSON式的API.但是另写一份HTTP/JSON的API服务又是非常耗时的一件事. 社区提出的gRPC-Gateway项目解决了这个问题.&lt;/li&gt;
&lt;/ul&gt;
&lt;p&gt;gRPC-Gateway是protoc编译器的一个插件, 它读取protobuf的服务定义并生成一个反向代理服务器, 反向代理会将RESTful HTTP API翻译为gRPC.&lt;img loading=&#34;lazy&#34; src=&#34;https://blog.inith271.top/images/reverse_http_to_grpc.png&#34; alt=&#34;reverse http to grpc&#34;  /&gt;

gRPC-Gateway帮助一次性同时开发HTTP/JSON和gRPC API. 所以gRPC-Gateway的介绍如下:&lt;/p&gt;
&lt;ul&gt;
&lt;li&gt;protobuf编译器的插件&lt;/li&gt;
&lt;li&gt;从protobuf中生成代理代码&lt;/li&gt;
&lt;li&gt;翻译HTTP/JSON 调用为gRPC&lt;/li&gt;
&lt;/ul&gt;
&lt;h2 id=&#34;使用示例&#34;&gt;使用示例&lt;/h2&gt;
&lt;h3 id=&#34;创建项目-安装工具&#34;&gt;创建项目 安装工具&lt;/h3&gt;
&lt;div class=&#34;highlight&#34;&gt;&lt;div class=&#34;chroma&#34;&gt;
&lt;table class=&#34;lntable&#34;&gt;&lt;tr&gt;&lt;td class=&#34;lntd&#34;&gt;
&lt;pre tabindex=&#34;0&#34; class=&#34;chroma&#34;&gt;&lt;code&gt;&lt;span class=&#34;lnt&#34;&gt; 1
&lt;/span&gt;&lt;span class=&#34;lnt&#34;&gt; 2
&lt;/span&gt;&lt;span class=&#34;lnt&#34;&gt; 3
&lt;/span&gt;&lt;span class=&#34;lnt&#34;&gt; 4
&lt;/span&gt;&lt;span class=&#34;lnt&#34;&gt; 5
&lt;/span&gt;&lt;span class=&#34;lnt&#34;&gt; 6
&lt;/span&gt;&lt;span class=&#34;lnt&#34;&gt; 7
&lt;/span&gt;&lt;span class=&#34;lnt&#34;&gt; 8
&lt;/span&gt;&lt;span class=&#34;lnt&#34;&gt; 9
&lt;/span&gt;&lt;span class=&#34;lnt&#34;&gt;10
&lt;/span&gt;&lt;span class=&#34;lnt&#34;&gt;11
&lt;/span&gt;&lt;/code&gt;&lt;/pre&gt;&lt;/td&gt;
&lt;td class=&#34;lntd&#34;&gt;
&lt;pre tabindex=&#34;0&#34; class=&#34;chroma&#34;&gt;&lt;code class=&#34;language-sh&#34; data-lang=&#34;sh&#34;&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;cl&#34;&gt;mkdir grpc_gateway &lt;span class=&#34;o&#34;&gt;&amp;amp;&amp;amp;&lt;/span&gt; &lt;span class=&#34;nb&#34;&gt;cd&lt;/span&gt; grpc_gateway 
&lt;/span&gt;&lt;/span&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;cl&#34;&gt;go mod init grpcgateway
&lt;/span&gt;&lt;/span&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;cl&#34;&gt;
&lt;/span&gt;&lt;/span&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;cl&#34;&gt;&lt;span class=&#34;c1&#34;&gt;# 安装protoc的插件: go gRPC, gRPC Gateway&lt;/span&gt;
&lt;/span&gt;&lt;/span&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;cl&#34;&gt;go install github.com/grpc-ecosystem/grpc-gateway/v2/protoc-gen-grpc-gateway@latest
&lt;/span&gt;&lt;/span&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;cl&#34;&gt;go install google.golang.org/protobuf/cmd/protoc-gen-go@latest
&lt;/span&gt;&lt;/span&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;cl&#34;&gt;go install google.golang.org/grpc/cmd/protoc-gen-go-grpc@latest
&lt;/span&gt;&lt;/span&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;cl&#34;&gt;go install github.com/bufbuild/buf/cmd/buf@v1.28.1
&lt;/span&gt;&lt;/span&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;cl&#34;&gt;
&lt;/span&gt;&lt;/span&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;cl&#34;&gt;&lt;span class=&#34;c1&#34;&gt;# 安装grpcurl工具&lt;/span&gt;
&lt;/span&gt;&lt;/span&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;cl&#34;&gt;scoop install grpcurl
&lt;/span&gt;&lt;/span&gt;&lt;/code&gt;&lt;/pre&gt;&lt;/td&gt;&lt;/tr&gt;&lt;/table&gt;
&lt;/div&gt;
&lt;/div&gt;&lt;h3 id=&#34;使用protocol-buffers定义helloworld-grpc服务&#34;&gt;使用protocol buffers定义helloworld gRPC服务&lt;/h3&gt;
&lt;p&gt;编辑proto文件&lt;/p&gt;</description>
    </item>
  </channel>
</rss>
