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

日期:2015-9-28作者:Tom Nolle翻译:boxi来源:TechTarget中国 英文

【TechTarget中国原创】

随着计算方法的改变,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例子已经做出了工具并树立了意识,但是它的实践和方向可以帮助开发者从自身的云微服务中收获最多的东西。

我们一直都在努力坚持原创.......请不要一声不吭,就悄悄拿走。

我原创,你原创,我们的内容世界才会更加精彩!

【所有原创内容版权均属TechTarget,欢迎大家转发分享。但未经授权,严禁任何媒体(平面媒体、网络媒体、自媒体等)以及微信公众号复制、转载、摘编或以其他方式进行使用。】

微信公众号

TechTarget微信公众号二维码

TechTarget

官方微博

TechTarget中国官方微博二维码

TechTarget中国

评论
查看更多评论

敬请读者发表评论,本站保留删除与本文无关和不雅评论的权力。

作者>更多

Tom Nolle
Tom Nolle

关于作者:Tom Nolle是CIMI公司的总裁,这家公司成立于1982年,是致力于电信和数据通信的战略顾问公司。Tom Nolle是IEEE、ACM、Telemanagement Forum和IPsphere Forum的一员,著作有关于Netwatcher方面的书籍。

BPM>更多

  • Red Hat披露更加架构驱动的BPM模型愿景

    Red Hat的一个更加结构化的BPM设计方案有望搭设应用开发界与业务流程管理的桥梁,让企业架构师、开发者和业务侧的人更快速更容易地实时新的业务流程。

  • 创新类编辑推荐:Sequence iBPMS平台

    Sequence是工作流管理的IBPMS平台。它是一个完全基于浏览器的平台,允许企业创建业务关键的“工作流”,或者任务,并且允许终端用户顺序完成这些工作流。

  • 用BPM策略对遗留应用现代化

    一些人提议把业务流程管理作为应用现代化的手段之一,但也有人对此提出质疑,但采用BPM策略可以成为现代化遗留应用的明智方式。Tom Nolle对此进行了解释。

  • 普元发布广电互联网开放平台白皮书

    在“三网融合”进程加快的发展趋势下,国内领先的软件基础平台与解决方案提供商普元信息技术股份有限公司,于近日发布《面向业务创新与融合的广电互联网+平台供应商》这一广电互联网开放平台白皮书,有效助力广电企业应对互联网+挑战。

相关推荐

  • 容器与微服务要“联姻” 你对它们够了解吗?

    在虚拟化和云计算领域,容器大概是发展最快、最广为令人兴奋的技术了,微服务则紧随其后。如果把这两大技术结合起来会碰撞出怎样的火花呢?

  • 你的微服务设计支持可重用并避免冗余吗?

    微服务是代码小型的功能捆绑,旨在通过适当的使用来促进可重用并改善QoE以及可用性。如果使用不恰当的话,它们就会成为应用生命周期管理和资源效率的“噩梦”。

  • Red Hat披露更加架构驱动的BPM模型愿景

    Red Hat的一个更加结构化的BPM设计方案有望搭设应用开发界与业务流程管理的桥梁,让企业架构师、开发者和业务侧的人更快速更容易地实时新的业务流程。

  • 中国市场DevOps应用趋势分析

    为了解决开发人员与运维之间的协作问题,从而提升工作效率,DevOps方法论应运而生。几年的发展,DevOps现在国内市场的应用情况如何?如何才能取得DevOps实施的成功?

技术手册>更多

  • SOA指导大数据分析管理手册

    近一年来,大数据的热潮席卷全球,我们无时无刻不在听着关于大数据的事情。大数据时代带来更理性、更可靠的决策,但究竟是什么魔力让大数据这一概念得到全球各国的普遍关注?如此巨大量的数据如何进行管理,分析,找到价值所在?SOA又能帮助大数据做一些什么?

  • 特别报道:BPM和SaaS

    现在大家都在谈论软件即服务,业务流程专业人士也不例外。在这份特别报告中,我们将调查BPM和SaaS的结合情况,这二者的结合提供了令人侧目的利益和意味深长的挑战。第一部分中,我们将探索BPM和SaaS结合过程中仍存在的问题和风险。第二部分中就如何成功结合两者提供一些专家建议。同时也包括:最新更新的流行建模工具、业务流程建模语言等内容,精彩不容错过!

  • 敏捷开发技巧指南

    敏捷开发是一种以人为核心、迭代、循序渐进的开发方法。关于瀑布方法和敏捷方法的分析已经探讨过多次,但瀑布方法在某些项目和开发团队中还存在价值。《敏捷宣言》声明指出,个人和交互高于流程和工具。由于开发项目的利益攸关者已经变得越来越分散,遍布在全球各地,甚至经常横跨了几个时区,基于云的开发环境已成为必备之选而非锦上添花。TT SOA在这本技术手册中将介绍敏捷开发的一些技巧以及瀑布方法和敏捷方法的对比,同时还涵盖了云对于敏捷开发所起到的作用。

  • 开源PaaS技术手册

    开源业界向来不太平,关于诸多技术的开源未来足以让很多粉丝兴奋躁动起来。商业软件开始揉进开源技术,开源技术也成为IT大佬们得基础架构,这一种趋势蔓延的缓慢有有力。在广告漫天飞得云计算中,开源的分量有多重?是否走向云端就意味着走向开源?开源的PaaS如何选择?如何为开源项目选择PaaS厂商?哪些服务平台值得我们关注,下面我们一一来揭晓。

TechTarget

最新资源
  • 安全
  • 存储
  • CIO
  • 数据库
  • 服务器
  • 云计算