您好,欢迎来到12图资源库!分享精神,快乐你我!我们只是素材的搬运工!!
  • 首 页
  • 当前位置:首页 > 开发 > WEB开发 >
    6种微效劳RPC框架,你知道几个?
    时间:2021-03-04 21:11 来源:网络整理 作者:网络 浏览:收藏 挑错 推荐 打印

    开源 RPC 框架有哪些呢?一类是跟某种特定言语平台绑定的,另一类是与言语有关即跨言语平台的。

    6种微效劳RPC框架,你知道几个?

    一类是跟某种特定言语平台绑定的,另一类是与言语有关即跨言语平台的。

    跟言语平台绑定的开源 RPC 框架主要有下面几种。

    Dubbo:国际最早开源的 RPC 框架,由阿里巴巴公司开发并于 2011 年末对外开源,仅支持 Java 言语。

    Motan:微博外部运用的 RPC 框架,于 2016 年对外开源,仅支持 Java 言语。

    Tars:腾讯外部运用的 RPC 框架,于 2017 年对外开源,仅支持 C++ 言语。

    Spring Cloud:国外 Pivotal 公司 2014 年对外开源的 RPC 框架,仅支持 Java 言语

    而跨言语平台的开源 RPC 框架主要有以下几种。

    gRPC:Google 于 2015 年对外开源的跨言语 RPC 框架,支持多种言语。

    Thrift:最后是由 Facebook 开发的外部系统跨言语的 RPC 框架,2007 年贡献给了 Apache 基金,成为 Apache 开源项目之一,支持多种言语。

    假设你的业务场景仅仅局限于一种言语的话,可以选择跟言语绑定的 RPC 框架中的一种;

    假设触及多个言语平台之间的相互调用,就应该选择跨言语平台的 RPC 框架。

    RPC 框架,它们详细有何区别?

    1. Dubbo

    先来聊聊 Dubbo,Dubbo 可以说是国际开源最早的 RPC 框架了,目前只支持 Java 言语,它的架构可以用下面这张图展现。

    6种微效劳RPC框架,你知道几个?

    从图中你能看到,Dubbo 的架构主要包含四个角色,其中 Consumer 是效劳消费者,Provider 是效劳提供者,Registry 是注册中心,Monitor 是监控系统。

    详细的交互流程是 Consumer 一端经过注册中心获取到 Provider 节点后,经过 Dubbo 的客户端 SDK 与 Provider 树立衔接,并发起调用。Provider 一端经过 Dubbo 的效劳端 SDK 接纳到 Consumer 的央求,处置后再把结果前往给 Consumer。

    2. Motan

    Motan 是国际另外一个比较有名的开源的 RPC 框架,异样也只支持 Java 言语完成,它的架构可以用下面这张图描画。

    6种微效劳RPC框架,你知道几个?

    Motan 与 Dubbo 的架构相似,都需求在 Client 端(效劳消费者)和 Server 端(效劳提供者)引入 SDK,其中 Motan 框架主要包含下面几个功用模块。

    register:用来和注册中心交互,包括注册效劳、订阅效劳、效劳变更通知、效劳心跳发送等功用。

    protocol:用来停止 RPC 效劳的描画和 RPC 效劳的配置管理,这一层还可以添加不同功用的 filter 用来完成统计、并发限制等功用。

    serialize:将 RPC 央求中的参数、结果等对象停止序列化与反序列化

    transport:用来停止远程通讯,默许运用 Netty NIO 的 TCP 长链接方式。

    cluster:央求时会依据不同的高可用与负载平衡策略选择一个可用的 Server 发起远程调用。

    3. Tars

    Tars 是腾讯依据外部多年运用微效劳架构的实际,总结而成的开源项目,仅支持 C++ 言语,它的架构图如下。

    Tars 的架构交互主要包括以下几个流程:

    效劳发布流程:在 web 系统上传 server 的发布包到 patch,上传成功后,在 web 上提交发布 server 央求,由 registry 效劳传到达 node,然后 node 拉取 server 的发布包到本地,拉起 server 效劳。

    管理命令流程:web 系统上的可以提交管理 server 效劳命令央求,由 registry 效劳传到达 node 效劳,然后由 node 向 server 发送管理命令。

    心跳上报流程:server 效劳运转后,会活期上报心跳到 node,node 然后把效劳心跳信息上报到 registry 效劳,由 registry 停止一致管理。

    信息上报流程:server 效劳运转后,会活期上报统计信息到 stat,打印远程日志到 log,活期上报属性信息到 prop、上报异常信息到 notify、从 config 拉取效劳配置信息。

    client 拜访 server 流程:client 可以经过 server 的对象名 Obj 直接拜访 server,client 会从 registry 上拉取 server 的路由信息(如 IP、Port 信息),然后依据详细的业务特性(同步或许异步,TCP 或许 UDP 方式)拜访 server(当然 client 也可以经过 IP/Port 直接拜访 server)。

    4. Spring Cloud

    Spring Cloud 应用 Spring Boot 特性整合了开源行业中优秀的组件,全体对外提供了一套在微效劳架构中效劳管理的处置方案。

    只支持 Java 言语平台,它的架构图可以用下面这张图来描画。

    6种微效劳RPC框架,你知道几个?

    由此可见,Spring Cloud 微效劳架构是由多个组件一同组成的,各个组件的交互流程如下。

    央求一致经过 API 网关 Zuul 来拜访外部效劳,先经过 Token 停止安全认证。

    经过安全认证后,网关 Zuul 从注册中心 Eureka 获取可用效劳节点列表。

    从可用效劳节点中选取一个可用节点,然后把央求分发到这个节点。

    整个央求进程中,Hystrix 组件担任处置效劳超时熔断,Turbine 组件担任监控效劳间的调用和熔断相关目的,Sleuth 组件担任调用链监控,ELK 担任日志剖析。

    5. gRPC

    先来看下 gRPC,它的原理是经过 IDL(Interface Definition Language)文件定义效劳接口的参数和前往值类型,然后经过代码生成顺序生成效劳端和客户端的详细实现代码,这样在 gRPC 里,客户端运用可以像调用本地对象一样调用另一台效劳器上对应的办法。

    6种微效劳RPC框架,你知道几个?

    它的主要特性包括三个方面。

    通讯协议采用了 HTTP/2,由于 HTTP/2 提供了衔接复用、双向流、效劳器推送、央求优先级、首部紧缩等机制

    IDL 运用了ProtoBuf,ProtoBuf 是由 Google 开发的一种数据序列化协议,它的紧缩和传输效率极高,语法也复杂

    多言语支持,可以基于多种言语自动生成对应言语的客户端和效劳端的代码。

    6. Thrift

    (责任编辑:admin)