常见rpc应用,你需要了解的6种最流行的微服务RPC技术
对于你需要了解的6种最流行的微服务RPC技术和一些相关话题网上都众说纷纭,那么常见rpc应用的一些题究竟是怎么一回事呢,就让小编为大家详细的讲解一下。
什么是开源RPC框架?
一种类型与特定语言绑定,而另一种类型与语言无关或跨语言。
与语言绑定的开源RPC框架主要包括
Dubbo中国第一个开源RPC框架,由阿里巴巴开发,于2011年底开源,仅支持Java语言。
Motan微博内部使用的RPC框架于2016年开源,仅支持Java语言。
Tars腾讯内部使用的RPC框架,2017年开源,仅支持C++语言。
SpringCloud国外公司Pivotal于2014年开源发布的RPC框架。仅支持Java语言。
跨语言的主要开源RPC框架包括
gRPCGoogle于2015年开源的跨语言RPC框架,支持多种语言。
Thrift最初是Facebook开发的内部系统跨语言RPC框架,2007年贡献给Apache基金会,成为支持多语言的Apache开源项目之一。
如果您的业务场景仅限于一种语言,您可以选择一种与该语言绑定的RPC框架。
如果涉及到跨多种语言的交叉调用,应该选择跨语言的RPC框架。
RPC框架到底有什么区别?
1达博
首先我们来说说Dubbo。Dubbo可以说是中国第一个开源的RPC框架。目前仅支持Java语言。架构如下图所示。
从图中可以看到,Dubbo的架构主要包括四个角色其中,Consumer是服务消费者,Provider是服务提供者,Registry是中心,Monitor是监控系统。
具体的交互过程是消费者侧通过中心获取提供者节点,然后通过Dubbo的客户端SDK与提供者建立连接并发起调用。Provider通过Dubbo的服务端SDK接收并处理Consumer的请求,并将结果返回给Consumer。
2莫坦
Motan是国内另一家知名的开源RPC框架,仅支持Java语言实现,其架构可以如下图所示。
Motan和Dubbo的架构类似,都需要在客户端和服务端引入SDK。Motan框架主要包括以下功能模块
用于与中心交互,包括服务、订阅服务、服务变更通知、发送服务心跳等功能。
协议描述RPC服务,用于配置和管理RPC服务。该层还可以添加各种功能的过滤器来完成统计、并发等功能。
Serialize序列化和反序列化RPC请求的参数、结果等对象。
Transport用于远程通信,默认使用NettyNIO的TCP长链接方式。
集群根据请求,基于各种高可用性和负载均衡策略,选择可用的服务器发起远程调用。
3焦油
Tars是腾讯基于多年内部微服务架构用例组织的开源项目,仅支持C++语言,架构图如下。
Tars中的架构交互主要涉及以下过程
服务发布流程将发布包从服务器上传到Web系统上的补丁中。上传成功后,您在Web上提交服务器释放请求,该请求由中心服务转发到节点。然后该节点获取服务器的版本。在本地打包并启动服务器服务。
管理命令流程Web系统可以提交管理服务器服务命令请求,通过服务传递给节点服务,然后节点将管理命令发送给服务器。
心跳上报流程服务器服务运行后,定期向节点上报心跳,节点将服务心跳信息上报给中心服务,由中心统一管理。
信息上报流程服务器服务运行后,定期向stat上报统计信息,向log打印远程日志,定期向props上报属性信息,向notifications上报异常信息,并在config中配置服务获取信息。
客户端访服务器流程客户端可以通过服务器的对象名Obj间接访服务器,客户端从表中获取服务器的路由信息,然后根据具体的业务特征来访服务器。
4春云
SpringCloud利用SpringBoot的特性,集成了开源行业的优秀组件,为微服务架构中的服务治理提供了一套解决方案。
仅支持Java语言,其架构图如下图所示
SpringCloud微服务架构由多个组件组成,各个组件的交互过程如下。
访内部服务统一通过API网关Zuul请求,首先经过token进行安全认证。
通过安全认证后,网关Zuul从中心Eureka获取可用服务节点列表。
在可用的服务节点中选择一个可用的节点,并将请求分发到该节点。
整个请求过程中,Hystrix组件负责处理服务超时熔断,Turbine组件负责监控服务间调用和熔断相关指标,Sleuth组件负责监控调用链,ELK组件负责监控调用链。负责做。日志分析。
5gRPC
首先看gRPC,它的原理是通过IDL文件定义服务接口的参数和返回值类型,然后使用代码生成程序生成服务端和客户端的具体实现代码。在gRPC中,客户端应用程序可以调用本地对象,也可以调用其他服务器上的相应方法。
主要特点包括三个方面
通信协议使用HTTP/2,因为HTTP/2提供了连接重用、双向流、服务器推送、请求优先级和标头压缩等机制。
IDL使用ProtoBuf,这是Google开发的一种数据序列化协议,具有非常高的压缩和传输效率,并且语法简单。
多语言支持,可以根据多种语言自动生成相应语言的客户端和服务端代码。
6节省
让我们看一下节俭。Thrift是一个轻量级、跨语言的RPC通信解决方案,支持多达25种编程语言。为了支持像gRPC这样的多种语言,Thrift还拥有自己的接口定义语言IDL,它允许您通过代码生成器生成多种编程语言的客户端和服务器端SDK代码。他们可以互相交流。对应的架构图可以如下图所示。
在这张图中你可以看到ThriftRPC框架的特点。
支持多种序列化格式,如Binary、Compact、JSON、Multiplexed等。
支持Socket、Framed、File、Memory、zlib等多种通信方式
服务器支持Simple、ThreadPool、Non-Blocking等多种处理方式。
私信回复你的学习,领取免费学习资料!
发表评论