微服务模块化编程接口之反思

发布时间:2023-04-21 23:47:24 作者:闷骚小霸王 阅读量:4212

随着计算方法的改变,IT需要反思模块化编程。Tom Nolle检查了Google的gRPC以便确定它是否有益。

  随着计算方法的改变,IT需要反思模块化编程。Tom Nolle检查了Google的gRPC以便确定它是否有益。

  传统模块化编程被视为应用的功能元素的创建“过程”,因此过程调用就成为了连接它们进入单一结构的机制。一旦有必要把组件跨网络隔离开来时,合理的步骤就是远程过程调用(RPC)。把API跟微服务关联起来是合理的,我们应该看看另一种解决方案:Google的gRPC。

  基于RPC的API跟那些基于Web事务的前端过程多少有点不同。这些API,可以是简单的RES/HTTP或者JSON接口,往往将有限的信息元素通过显示表格传递出去。即便是像M2M这样的应用或则手机、平板信用卡处理也可以从二进制数据交换中受益,而二进制数据是服务器对服务器连接(包括微服务与其“存储前端(store front)”的连接)的标准,。RPC API往往会传递二进制数据和复杂结构,若干业界玩家开始致力于一个兼容HTTP的RPC模型。然而,Google的gRPC似乎成为了新兴标准。

  远程过程调用几乎一直是微事务的一种。这种情况下,过程会带有特定的一组参数,会返回特定结果。Google的gRPC利用了部分开发者比较熟悉的一个概念:协议缓冲。这个术语描述了同时就数据结构和内容进行通信的一种跨网络连接的快捷方式。“序列化”这个词会经常用到;其意思是协议缓冲会把二进制数据当作一种结构,然后把它转化为一系列的字位流,这种流会在另一端重组为结构。XML提供了类似的部分能力,但是协议缓冲却比XML要快100倍,且流的编码和解码实现往往只需要1/10。

  对于开发者来说,gRPC关键的是让他们可以编写这样的应用或组件,使得所有的代码看起来好像都是一个地方一样—即一体式的开发。开发者还可以根据需要把一部分功能从主组件中抽离出来,让背后的gRPC stub表示现在是远程的部分。网络连接和协议缓冲然后会将对该功能的请求通过网络传送给它,不管这个功能是在哪里的,再返回响应。而应用的其他部分仍然看到的是熟悉的本地组件—只不过现在是gRPC stub。

  对于要开发面向网络连接的应用来说,gRPC仍然有好处。它的机制是独立于语言的,且gRPC stub以及服务器逻辑库所有流行编程语言都能访问。单个应用可以用一组语言来开发,而gRPC充当了粘合剂的作用,把不同的部分揉成一个应用。

  基本上看采用gRPC是很容易的;写服务器或客户端组件的时候把gRPC元素吸收进来就行了,而API则按照查询-响应的模式组织就行了。与面向Web的get/post功能相比,这一过程更类似于传统的模块化编程,但是它又更加灵活,很适应微服务的模式(gRPC的“客户端”是主要的店面组件,而“服务器”就是微服务)。前者获得gRPC stub,后者获得远程实现。

  Google等做微服务的经验(这种经验让gRPC及其标准化行动不断壮大)说明了微服务会从被设计为由模块化过程构成的同构应用中受益。这跟一般需要事先考虑逻辑组件化,API是针对工作流的特定模块配对的多组件、网络耦合设计做法是不一样的。在微服务中应用这个是困难的,因为可能会很难构思最合适的微服务结构。

  有了gRPC,如果认为剥离对于改进可用性或性能有帮助的话,开发者可以把微服务从应用或组件中剥离出来,或者分配一个模块给一个使用不同语言的不同的编程团队—如果需要加快实现速度的话。预留这一能力对于微服务的过渡非常重要,准备好后只需几步就能确保过渡完成。

  首先,要记住gRPC是从RPC演变过来的,这意味着功能预期是本地的时候可以用它。如果远程连接组件的特定结构设计进应用当中时,可能就会限制了微服务使用的灵活性。应用设计要简化,把它们当作一组本地过程的集合来考虑,如果复杂性太高无法这么处理,则把应用按照工作流(前端、编辑/处理,更新)分离出来,这样转成微服务会容易些。

  其次,一切微服务都会有一个store-front或strip-mall结构,保证这个结构不能太深这一点至关重要,因为微服务会通过gRPC调用其他微服务。这类工作流级联几乎总是会产生性能问题,并且使得应用更容易受到网络故障的影响。

  第三点,尽管gRPC很高效,但也不是一点负载都没有。即便通信连接是本地的、快速的,许多的消息序列化也会影响到应用性能。有了gRPC机制之后,把本地过程转为远程会容易些,很容易就会把组件化应用编程独立服务的做法做得过火。

  微服务创建了应用的服务器端或“内部”工作流—这种工作流最好是结合不同或不那么多的Web连接式的API模式一起用。Google的gRPC例子已经做出了工具并树立了意识,但是它的实践和方向可以帮助开发者从自身的云微服务中收获最多的东西。

  

***本网站图片,文字之类版权申明,因为网站可以由注册用户自行上传图片或文字,本网站无法鉴别所上传图片或文字的知识版权,如果侵犯,请及时通知我们,本网站将在第一时间及时删除。

我要评论

网友评论


评论时间:2023-05-12 09:25:02

其中,戴尔以18.9%的市占率位居第一,HP和IB国内好用的免费云主机 M分列二三名自己搭建本地服务器 %的市占率位居第一,HP和IBM分列二三名

最新文章

 2023-12-25 22:44:35   admin

活动发布区版规

 2023-05-27 22:03:52   御风而行

容器、无服务器、虚拟机:安全性差...

 2023-05-27 19:08:41   小绵羊0123

科技巨头布局云端 服务器 网络硬...

 2023-05-27 18:17:46   姐姐的跟屁虫

钉钉因系统访问流量激增,宕机1小...

热门阅读

 2022-07-23 00:34:02   freeatom

常见ftp命令 FTP命令使用详...

 2022-07-21 02:17:02   ares

双硬盘组建Raid0磁盘阵列图文...

 2022-07-20 06:17:02   mankeung123

用友软件客户端连接不上服务器的解...

 2022-07-23 00:51:02   antonfxb

WebService实例

 2022-07-13 05:38:02   苯小孩

开发、运维不可不看的Linux调...

 2022-07-20 18:51:02   nightstone

如何使用Charles抓取Web...

随机文章

 2021-12-29 05:38:02   chinalanboo

服务器为什么要放机房

 2022-01-12 05:38:03   wwwwycom

重庆双线服务器托管那家比较好

 2022-02-08 05:38:03   hack-j

在虚拟主机上架设iis服务器

 2022-03-13 05:38:03   chockablock

Linux服务器配置与管理 PD...

 2022-03-15 05:38:02   kongtau

win7下配置IIS服务器

 2022-07-19 01:34:02   lhb2003

【经验分享】Iperf测试网络吞...

热评文章

 2022-07-19 20:17:02   dengyu0429

linux vi使用及详细介绍

 2022-07-20 01:00:05   激动的舌头

Linux视频教程:用户管理命令...

 2022-07-21 20:51:02   jessica-an

创建本地FTP站点

 2022-02-07 05:38:03   jasonkidd

WEB服务器配置详解

 2022-07-20 04:51:02   wolfssss

ACL权限-默认与递归(4)

 2022-07-22 15:00:05   淡水珊瑚

Linux下 Samba Ser...
全球云服务器
Catfish(鲶鱼) Blog V 4.7.3