前往小程序,Get更优阅读体验!
立即前往
首页
学习
活动
专区
工具
TVP
发布
社区首页 >专栏 >CNCF案例研究:gRPC如何实现Salesforce的统一互操作性策略

CNCF案例研究:gRPC如何实现Salesforce的统一互操作性策略

作者头像
CNCF
发布2019-12-04 15:21:40
5680
发布2019-12-04 15:21:40
举报
文章被收录于专栏:CNCFCNCF
  • 在设计流服务和推送通知类服务方面获得了灵活性
  • 开发速度提高
  • 小团队做出了巨大的改变

行业:软件

地点:美国

云类型:混合

挑战:互操作性、速度

产品类型:安装程序

使用的CNCF项目包括:Envoy、gRPC、Kubernetes

挑战

Salesforce是客户关系管理软件领域的领导者,它的客户成功平台和其它产品支持了超过15万个组织。在幕后,“我们试图建立的一件大事是在整个公司范围内建立统一的互操作性策略。”服务网格团队首席工程师Ryan Michela说:“我们过去在基于JSON的集成中遇到的一个痛点是,它们需要双方进行大量的协商,并且很容易出现向后不兼容的更改。”

解决方案

在决定gRPC和REST类型的服务之间,团队在2016年选择了gRPC,因为“通过协议缓冲区(protocol buffer),它从一开始就内置了向后兼容性,并在组件之间建立了非常强的契约,”Michela说:“我们非常喜欢gRPC的契约驱动开发实践,以及它在基本HTTP和JSON之上提供的一些其它技术特性。”

影响

服务网格和gRPC“在分发服务契约方面一直非常出色,这样团队就可以在网络上彼此之间拥有一个非常容易理解、定义良好的接口,而JSON和REST往往更具流动性,更开放于解释,”Michela说。另外,作为一种基于HTTP2的二进制协议,gRPC相对于REST基于HTTP1的文本协议具有优势。对于Salesforce,Michela说:“HTTP2为我们在设计流服务和推送通知类型的服务方面提供了更大的灵活性,在这方面我们无法像使用HTTP1能够轻松地做到这一点。”尽管这种影响很难量化,Michela相信开发者的开发速度已经得到了提高,因为团队已经通过维护向后兼容性改进了他们的服务。

Salesforce是客户关系管理软件领域的领导者,它的客户成功平台和其它产品支持了超过15万个组织。

在技术方面,“我们试图建立的一件大事是整个公司统一的互操作性策略,”服务网格团队的首席工程师Ryan Michela说:“我们过去在基于JSON的集成中遇到的一个痛点是,它们需要双方进行大量协商,而且可能很容易出现向后不兼容的变化。”

该公司从2016年开始考虑gRPC。将其与REST类型的服务进行比较,团队发现“gRPC从一开始就通过协议缓冲区构建了向后兼容性,并在组件之间建立了非常强的契约,”Michela说:“我们非常喜欢gRPC的契约驱动开发实践,以及它在基本HTTP和JSON之上提供的一些其它技术特性。”

另一个因素是gRPC是一个多语言框架。“我们收购了一些公司,所以我们没有一个用单一编程语言编写的代码库。”Michela说:“因此,gRPC可以帮助我们使用所有我们使用的语言。”

在对这项技术进行了一些基本的实验之后,来自Salesforce的许多不同公司和主要产品线的代表达成了一个共识:gRPC是未来的发展方向。“一旦我们对它的工作原理有了感觉,我们就得出结论,gRPC符合我们的技术要求,”Michela说:“它只是在优势和劣势之间取得了一种特殊的平衡,这与我们正在努力实现的目标一致。我喜欢gRPC,因为它是独立的,有很好的支持,谷歌对它的大力支持使它成为一项非常可靠的技术。”

谷歌将gRPC作为其公有云策略的一部分的承诺也是一个重要因素。他补充说:“得到社区的大力支持,尤其是来自企业的支持,是非常重要的。”

Salesforce的工程师几乎不需要做什么就可以让gRPC在组织内工作。“当我们朝着云原生,我们的目标之一是尽可能与我们使用的开源技术一致,“Michela说:“因此,我们不是试图采用一个开放源码项目,作分叉使它适应我们的需求,而是努力适应我们的需求,与共同做事的方式一致。”

“从某种意义上说,gRPC就是拿来就有用。它解决了一个非常具体的问题,它解决得很好,以及毫不费力地解决了这个问题。我们知道我们做出了正确的选择,因为我们不必与之抗争。” - Ryan Michela,Salesforce服务网格团队首席工程师

唯一的定制是在gRPC之上构建一个小层,以便在Salesforce的其它代码框架中更容易使用,并“锁定一些配置选项”,Michela说:“开箱即用,它有大量的配置选项,其中大多数我们的应用程序开发者不需要摆弄。”

为了简化gRPC代码生成,Michela维护Salesforce gRPC contrib库,其中包括一些基于Java的协议缓冲区代码生成,以及Reactive gRPC库,这是一组存根(stub),用于将gRPC协议与Rx、Java和Spring Reactor库连接起来。

Salesforce使用gRPC和服务网格已经有两年半的时间了,并在生产中发展到多种产品。“在内部可测试性和快速开发方面有一些的烦恼,但gRPC总体上对我们非常非常好,”Michela说:“它非常适合分发服务契约,这样团队就可以通过网络在彼此之间拥有一个非常容易理解、定义良好的接口,而JSON和REST往往更具有流动性,更开放于解释。因此,在团队之间建立这种强类型的互操作性层非常有用。”

“我们正在做整个CNCF平台。我们有一个基于Kubernetes的堆栈,我们正在努力让Istio与Envoy和gRPC一起运行,把所有这些不同的部分一起使用。” - Ryan Michela,Salesforce服务网格团队首席工程师

另外,作为一种基于HTTP2的二进制协议,gRPC相对于REST基于HTTP1的文本协议具有优势。对于Salesforce来说,Michela说:“HTTP2使我们在设计流服务和推送通知类型的服务时具有更大的灵活性,在这些方面,我们无法像使用HTTP1能够轻松地做到这一点。”

尽管这种影响很难量化,Michela相信开发者的开发速度已经得到了提高,因为团队已经通过维护向后兼容性改进了他们的服务。“从某种意义上说,gRPC就是拿来就有用。”他说:“它解决了一个非常具体的问题,它解决得很好,以及毫不费力地解决了这个问题。我们知道我们做出了正确的选择,因为我们不必与之抗争。”

有了gRPC,Salesforce就可以继续构建自己的云原生平台。“我们正在做整个CNCF平台,”Michela说:“我们有一个基于Kubernetes的堆栈,我们正在努力让Istio与Envoy和gRPC一起运行,把所有这些不同的部分一起使用。”

这项技术已经被证明是一个很好的推动者。“我们只是小团队,”Michela说:“我们使用的开源技术和CNCF技术的强大之处在于,我们能够在公司内部实现巨大的变革,而无需重新发明轮子。”

本文参与 腾讯云自媒体分享计划,分享自微信公众号。
原始发表:2019-08-29,如有侵权请联系 cloudcommunity@tencent.com 删除

本文分享自 CNCF 微信公众号,前往查看

如有侵权,请联系 cloudcommunity@tencent.com 删除。

本文参与 腾讯云自媒体分享计划  ,欢迎热爱写作的你一起参与!

评论
登录后参与评论
0 条评论
热度
最新
推荐阅读
相关产品与服务
容器服务
腾讯云容器服务(Tencent Kubernetes Engine, TKE)基于原生 kubernetes 提供以容器为核心的、高度可扩展的高性能容器管理服务,覆盖 Serverless、边缘计算、分布式云等多种业务部署场景,业内首创单个集群兼容多种计算节点的容器资源管理模式。同时产品作为云原生 Finops 领先布道者,主导开源项目Crane,全面助力客户实现资源优化、成本控制。
领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档