10分钟学会 gRPC

      最后更新:2022-03-17 00:43:33 手机定位技术交流文章

      介绍

      我想大部分是长期的Java开发者应当不那么明显。gRPC,毕竟在Java圆圈中的多数用途仍然是..Dubbo/SpringClound这两类服务框架。

      近些年来,我有机会从头开始重新设计gRPC的,当时选择gRPC时也有几个原因:

      • 根据云生概念以及云生概念本身制定部署举措gRPC这几乎就像一套标准的通讯协议
      • 进入圆圈去开发语言的替代语言。gRPC显然是更好的选择。
      • 公司内部使用一部分业务。Python基于多语种兼容性的创建gRPC支持的非常好。

      你可以注意到它 经过一年多的 顺利操作之后 在线上。gRPC它还高度稳定和高效;流动资金框架的主要组成部分如下:

      • 序列化
      • 通信协议
      • IDL( 界面描述语言)

      这些在gRPC中分别对应的是:

      • 基于Protocol Buffer具有高性能的序列规程
      • 基于HTTP/2标准协议开发,自带stream同时,第三方工具的互操作性(如负载平衡、软化等)最好作为标准协议。
      • 编写一份.proto界面文件为通用语言创建代码 。

      HTTP/2

      学习gRPC首先我们需要知道的是,它使用什么协议来沟通, 以及我们是否在开发或应用方面 经常接触它。HTTP/1.1协议。

      由于HTTP/1.1这是一项基于文本的协议,对人们极其方便用户,但对机器功能较差。

      当需要多次对文本进行检查时,它本身效率较低; 要更方便机器, 它就会是二进制的。HTTP/2自然做到了。

      还有其他好处:

      • 多次访问:来文可以同时收到和转交,而不会相互干扰。
      • HPACK节省header空间,避免HTTP1.1对相同的header反复发送。

      Protocol

      gRPC采用的是Protocol序列化,发布时间比gRPC虽然还早,但它不只是作为表演。gRPC它可以用于任何需要IO测序的任何情况。

      它将提高空间效率和高性能;它是在https://github.org上创建的,用于通信/交叉Jie/cim的数据互动。

      使用起来很简单 描述一下你自己.proto使用命令行工具,您可以用相关语言生成 SDK 。

      特别是,官方文件可指:
      https://grpc.io/docs/languages/go/generated-code/

      调用


      生成代码和创建服务端非常简单,只需生成界面即可。

      客户也相当直截了当,只需要依靠服务代码来生成代码即可。connection那和本地人说的一样

      这是经典的unary与基于http的请求回应机制类似,一项请求相当于一项答复(以一美元计)。

      Server stream

      gRPC除了常规的unary该呼吁还支持服务端对端交付,这在各种情况下都很重要。

      交付上述服务结束,然后拨打Send函数,该函数将发送到客户端

      客户使用循环来确定目前收到的软件包是否关闭。

      改进了先前建立的程序,以便更直观地描述这一进程。gRPC 客户的视觉调试 stream调用。

      上文的插图是发送服务端的一个实例。

      Client Stream

      除了提供服务支助外,还提供客户帮助。

      客户总是通过同一连接将数据传送到服务处,服务处可同时处理若干条信息。

      代码与服务末端推力相似,因为它们只是角色变化而已。

      Bidirectional Stream

      同样,当客户和服务同时发送信息时,它也得到支持。

      实际上,这是两种论点的结合。

      举例来说,很容易理解。

      元数据

      gRPC支持元数据传输,可与HTTP中的header

      gRPC gateway

      gRPC虽然强力使用同样是直截了当的,但浏览器和APP的支持并不象对REST Apps的支持那样普遍(浏览器支持,但只有少数应用程序的支持)。

      由社区开发的https://github.com/grpc-ecosystem/grpc-gateway应用软件可以将GrPC的服务暴露给RESTFL API。

      为了使测试更容易用于与邮递员沟通,我们还将部署GRPC服务代理。

      反射调用

      作为一个速变框架,还必须协助通用电话,以方便创建辅助工具;通过获取服务名称和pb文件,反映呼声支持GRPC。

      该图书馆提供典型的反射操作,可在https://github.com/Com/jhump/project查阅。

      上图中看到的可视化stream这个图书馆也用来打电话。

      负载均衡

      由于gRPC是基于HTTP/2如果做到这一点,客户和服务将保持很长的连接;但是,负载平衡似乎不同。HTTP那样简单了。

      而我们使用gRPC请求必须是均衡的负载,而不是为了取得与HTTP相同的效果而连接。

      通常有两种做法:

      • 客户端负载均衡
      • 服务端负载均衡

      客户端负载均衡在rpc例如,正在提到范围广泛的各种应用。Dubbo用于客户端负载平衡。 NAME OF TRANSLATORS

      gRPC适当的接口也可以进入,可在正式演示中参考。

      https://github.com/grpc/grpc-go/blob/87eb5b7502/examples/features/load_balancing/README.md

      对于开发者来说,客户-端负载平衡比较灵活(这可以被定制为他们自己的方法),但相对而言也需要自己捍卫这一逻辑,如果有许多语言的话,还要多得多。

      因此,最好在云的核心使用服务端负载平衡器。

      可选方案有:

      • istio
      • envoy
      • apix

      我们也在努力,这几乎肯定会被利用envoy/istio

      总结

      gRPC还有很多材料要找到。这只是一个介绍,我希望我没有做错什么。gRPC有一种根本的理解;这是一种云层时代所需要的才华。

      对cc的强调并没有失去。 下个问题会更好。 更多的爪哇高级学习课程编辑们即将上路。 有兴趣学习的伙伴可能会免费发表一些委婉的委婉言论!!

      本文由 在线网速测试 整理编辑,转载请注明出处,原文链接:https://www.wangsu123.cn/news/20245.html

          热门文章

          文章分类