微服务专栏地址

  专栏:微服务
  微服务系列总目录

目录

  • 微服务专栏地址
  • 目录
  • 1. 简介
  • 2. 关于RPC
    • 2.1 什么是RPC
    • 2.2 RPC有什么用
    • 2.3 RPC的框架有哪些
      • 2.3.1 服务治理型
      • 2.3.2 多语言型
  • 3. 什么是REST
  • 4. 两者有什么区别
  • 5. 微服务通讯该如何选择
  • 6. RPC框架dubbo 的服务调用原理图解
    • 6.1 服务提供
    • 6.2 服务消费
    • 6.3 Dubbo官方文档感触

1. 简介

微服务的服务都是独立进程,服务之间的通讯的效率、稳定性等等关乎着系统是否能高效、稳定运行。常见的通讯方式有RPC及REST,从以下几个方面去理解微服务的服务通讯方式以及选择:

  1. 关于RPC
    1.1 什么是RPC
    1.2 RPC有什么用
    1.3 RPC的框架有哪些
  2. 什么是REST
  3. 两者有什么区别
  4. 微服务通讯该如何选择

补充了一些对于dubbo的体会

2. 关于RPC

2.1 什么是RPC

RPC(Remote Procedure Call):远程过程调用,它是一种通过网络从远程计算机程序上请求服务,而不需要了解底层网络技术的协议。

理解:是一种用于网络上不同程序之间的远程通讯的协议,内部封装了底层网络技术细节。

2.2 RPC有什么用

用以满足分布式系统架构中不同的系统之间的远程通信和相互调用。

2.3 RPC的框架有哪些

2.3.1 服务治理型

  • dubbo:出身于阿里巴巴开源的RPC框架,已于2018年2月15日宣布进入 Apache 孵化器,期待成为apache顶级项目,并且全面拥抱Spring Cloud,git地址也已变更为https://github.com/apache/incubator-dubbo
  • dubbox:当当网对dubbo的升级
  • motan:是新浪微博开源的一套轻量级、方便使用的RPC框架

2.3.2 多语言型

只作简单了解,不是重点,有兴趣的可以点击链接了解详细内容

  • rpcx是Go语言生态圈的Dubbo, 比Dubbo更轻量,实现了Dubbo的许多特性,借助于Go语言优秀的并发特性和简洁语法,可以使用较少的代码实现分布式的RPC服务。
  • gRPC是Google开发的高性能、通用的开源RPC框架,其由Google主要面向移动应用开发并基于HTTP/2协议标准而设计,基于ProtoBuf(Protocol Buffers)序列化协议开发,且支持众多开发语言。本身它不是分布式的,所以要实现上面的框架的功能需要进一步的开发。
  • thrift是Apache的一个跨语言的高性能的服务框架,也得到了广泛的应用。

3. 什么是REST

REST :representational state transfer 表述性状态转移,是一种架构风格。偷个懒,传送门:REST wiki

4. 两者有什么区别

从以下各个角度进行对比

维度 RPC REST
耦合性 强耦合 松散耦合
消息协议 二进制thrift、protobuf、avro 文本型XML、JSON
通讯协议 TCP为主,也可以是HTTP HTTP/HTTP2
性能 一般低于RPC
接口契约IDL Thrift、protobuf idl Swagger
客户端 强类型客户端、一般自动生成,可支持多语言客户端 一般http client可访问,也可支持多语言
案例 dubbo、motan、tars、grpc、thrift spring boot/mvc、Jax-rs
开发者友好 客户端比较方便,但是二进制消息不可读 文本消息开发者可读、浏览器可直接访问查看结果
对外开放 需要转换成REST/文本协议 直接对外开放

5. 微服务通讯该如何选择

仍是需要从实际情况去考虑,个人理解的几点

  • 对性能有着严格的要求:RPC
  • 考虑学习成本,团队成员的上手难度以及开发效率成本:REST
  • 对外开放的需求,rpc需要进一步转换,而rest可直接对外开放:REST
  • 代码耦合度要求松散耦合:REST
  • 与其他框架集成的难度低,微服务框架基本支持rest:REST
  • 异步需求,rest需要额外的实现手段,如通过中间件等:RPC

6. RPC框架dubbo 的服务调用原理图解

暂时留个占位符,有想法把dubbo的学习结合实践整理出来、先放个传送门:Apache Dubbo

Dubbo现在已经成为Apache的孵化项目,官网地址也已改成:http://dubbo.apache.org/#!/?lang=zh-cn,有兴趣的可以移步。其中有一环节

6.1 服务提供

原理分析传送门

6.2 服务消费

原理分析传送门

6.3 Dubbo官方文档感触

开发指南,Dubbo的文档包含了使用、运维、测试报告、开发指南、 以及设计原则。真心的感觉是从一个框架从无到有,从设计到实现到扩展到运维,各个角度去揭示了一个顶级的RPC框架是如何孕育的,其文档的价值早已超出使用指南的范畴。其中的一些设计的细节、原则、编码规范、注意事项等等等等,都值得我们在实际工作中去遵循、实践、体会以及总结。

八:对微服务通讯方式RPC vs REST的理解相关推荐

  1. Spring Cloud之(十八)微服务网关GateWay

    十八.微服务网关GateWay Zuul 1.x 是一个基于阻塞 IO 的 API Gateway 以及 Servlet:直到 2018 年 5 月,Zuul 2.x(基于Netty,也是非阻塞的,支 ...

  2. 微服务架构之 —— RPC框架

    RPC简介 RPC是什么 Remote Procedure Call,远程过程调用. 首先来说本地方法调用,假设在main方法中调用一个本地的方法multiply(同一个进程内的方法调用).无非是做了 ...

  3. 基于AKF可扩展模型的微服务拆分方式

    前言 当我们需要分布式系统提供更强的性能时,该怎样扩展系统呢?什么时候该加机器?什么时候该重构代码?扩容时,究竟该选择哈希算法还是最小连接数算法,才能有效提升性能? 在面对 Scalability 可 ...

  4. 微服务应用、框架、架构,理解【二】

    大型分布式系统具有复杂性.隐匿性.配合性和易变性四大难题,不会存在任何单一软件工程上的突破,能让开发生产力得到一个数量级上的提升. 1.单体架构应用的困境 一个典型的单体架构应用就是将一个应用中所有的 ...

  5. .net core 微服务通讯组件Orleans的使用与配置

    Orleans非常好用 并且支持.net core 社区也非常活跃 Orleans2.0+在国内的教程偏少 多数是1.5版本的教程 在这里写上四篇Orleans教程 目录 1.Orleans的入门教程 ...

  6. 企业级工作流解决方案(八)--微服务Tcp消息传输模型之服务端处理

    服务端启动 服务端启动主要做几件事情,1. 从配置文件读取服务配置(主要是服务监听端口和编解码配置),2. 注册编解码器工厂,3. 启动dotnetty监听端口,4. 读取配置文件,解析全局消息处理模 ...

  7. 微服务架构核心20讲

    1.微服务总体技术架构体系是怎样设计的 2.微服务最经典的三种服务发现机制 3.微服务 API 服务网关(一)原理 4.微服务 API 服务网关(二)开源网关 Zuul 5.跟 Netflix 学习微 ...

  8. 微服务开源框架TARS的RPC源码解析 之 初识TARS C++服务端

    作者:Cony 导语:微服务开源框架TARS的RPC调用包含客户端与服务端,<微服务开源框架TARS的RPC源码解析>系列文章将从初识客户端.客户端的同步及异步调用.初识服务端.服务端的工 ...

  9. go语言微服务之RPC协议

    目录 1 什么是RPC 2 RPC 使用的步骤 3 RPC相关函数 4 代码实现 4.1 服务端代码实现 4.2客户端代码实现 4.3程序实现结果 ​ 1 什么是RPC Remote Procedur ...

最新文章

  1. 奥鹏数据库应用系统设计下列关于php_南开19秋学期(1709、1803、1809、1903、1909)《数据库应用系统设计》在线作业【标准答案】668...
  2. 网站优化——网站索引量骤降从网站优化找原因
  3. 课程笔记|吴恩达Coursera机器学习 Week1 笔记-机器学习基础
  4. mysql利用tgz恢复_Mysql备份与恢复方法_MySQL
  5. 计算机游戏动漫制作自我鉴定,动漫设计专业自我鉴定
  6. 王道机试指南读后总结-4(有迷宫问题)
  7. 调试安装php源码,Xdebug的安装与配置,帮助调试PHP程序
  8. 浅谈分块二元Hermite插值
  9. python中返回上一步操作_返回上一步的快捷键-百度经验
  10. mysql select 列名_Mysql查询出所有列名
  11. 利用R语言进行主成分分析的步骤
  12. iPhone如何下载Skype_详细教程
  13. LeetCode——Maxium Depth of Binary Tree
  14. 堆叠实验-典型配置H3C IRF
  15. 2811: [Apio2012]Guard
  16. SpringBoot + Excel 读写技术与实际问题解决
  17. 【Linux 命令】chroot
  18. EasyExcel - API
  19. Orleans 2.0 官方文档 —— 3.1 核心概念 - 什么是grain
  20. java写的软件有哪些?

热门文章

  1. 软件测试各阶段测试方法
  2. div渐变色字体渐变色
  3. 说说Makefile那些事儿
  4. 今日现货黄金价格的趋势分类
  5. 世界上第一台电子存储程序计算机
  6. Office提示您的许可证不是正版弹框解决办法
  7. BZOJ 1022 SHOI2008 小约翰的游戏John 博弈论
  8. 2021-2027全球与中国油田井口阀门市场现状及未来发展趋势
  9. SQLZOO JOIN答案
  10. Vue -- 编程式路由导航