本文大部分摘自极客时间胡忠想老师的《从0开始学微服务》课程,对原文做了简单概括和修改

下面是dubbo框架的架构图
首先解释微服务架构中各个组件分别对应到上面这张图中是如何实现。
服务发布与引用:对应实现是图里的 Proxy 服务代理层,Proxy 根据客户端和服务端的xml配置文件中的 接口描述,生成接口对应的客户端和服务端的 Stub(存根),使得客户端调用服务端就像本地调 用一样。
服务注册与发现:对应实现是图里的 Registry 注册中心层,Registry 根据客户端和服务 端的接口描述,解析成服务的 URL 格式,然后调用注册中心的 API,export() 或者 refer(), 完成服务的注册和 发现。
服务调用:对应实现是 Protocol 远程调用层,Protocol 把客户端的本地请求转换成RPC 请求。然后通过 Transporter 层来实现通信,Codec 层来实现协议封装,Serialization 层来实现数据序列化和反序列化。
服务监控:对应实现层是 Filter 调用链层,通过在 Filter 调用链层中加入MonitorFilter,实现对每一次调用的拦截,在调用前后进行埋点数据采集,上传给监控系统。
服务治理:对应实现层是 Cluster 层,负责服务节点管理、负载均衡、服务路由以及服务 容错。
再来看下微服务架构各个组件是如何串联起来组成一个完整的微服务框架的,以 Dubbo 框架下一次服务调用的过程为例,先来看下 客户端发起调用的过程。
  • 首先根据接口定义,通过 Proxy 层封装好的透明化接口代理,发起调用。
  • 然后在通过 Registry 层封装好的服务发现功能,获取所有可用的服务提供者节点列表。
  • 再根据 Cluster 层的负载均衡算法从可用的服务节点列表中选取一个节点发起服务调用,如果调用失败,根据 Cluster 层提供的服务容错手段进行处理。
  • 同时通过 Filter 层拦截调用,实现客户端的监控统计。
  • 最后在 Protocol 层,与服务端结点建立连接,对数据进行编码序列化,封装成 Dubbo RPC 请求,发给服务端节点。
这样的话,客户端的请求就从一个本地调用转化成一个远程 RPC 调用,经过服务调用框架 的处理,通过网络传输到达服务端。其中服务调用框架包括通信协框架 Transporter、通信 协议 Codec、序列化 Serialization 三层处理。
服务端从网络中接收到请求后的处理过程是这样的:
  • 首先在 Protocol 层,把网络上的请求解析成 Dubbo RPC 请求。使用netty4进行数据接收,编码反序列化。
  • 然后通过 Filter 拦截调用,实现服务端的监控统计。
  • 最后通过 Proxy 层的处理,把 Dubbo RPC 请求转化为接口的具体实现,执行调用。

微服务框架dubbo相关推荐

  1. 两大微服务框架dubbo和spring cloud对比

    一.基本介绍 dubbo Dubbo 是一个分布式服务框架,致力于提供高性能和透明化的 RPC 远程服务调用方案,以及 SOA 服务治理方案.简单的说,Dubbo 就是个服务框架,说白了就是个远程服务 ...

  2. Dubbo——微服务框架

    Dubbo框架--微服务框架 Dubbo是一个高性能.轻量级RPC框架,官网现在已定义为微服务框架,目的就是让消费方.生产方通过服务注册.服务发现.服务调用实现动态通信. 服务调用的实现由三层模型组成 ...

  3. 微服务框架有哪些?如何选择?

    在微服务开发中,微服务框架通常选择 Spring Boot 和Spring Cloud,目前,国内使用较多的微服务框架主要有Dubbo和Spring Cloud,Dubbo是国内开源,在国内被使用广泛 ...

  4. 常见微服务框架和对比分析

    常见的微服务框架 第一代微服务框架  SpringCloud Spring Boot:快速开发微服务的框架(可以快速开发出一个单体微服务项目) SpringCloud 为开发者提供了快速构建分布式系统 ...

  5. Java 微服务框架对比:Dubbo 和 Spring Cloud

    微服务特点: 微服务(Microservices)是一种架构风格,一个大型复杂软件应用由一个或多个微服务组成. 独立部署 松耦合 单一职责,每个服务仅关注一件任务 微服务框架 相关概念: rpc 1. ...

  6. 手把手0基础项目实战(一)——教你搭建一套可自动化构建的微服务框架(SpringBoot+Dubbo+Docker+Jenkins)...

    本文你将学到什么? 本文将以原理+实战的方式,首先对"微服务"相关的概念进行知识点扫盲,然后开始手把手教你搭建这一整套的微服务系统. 项目完整源码下载 https://github ...

  7. Java 微服务框架选型(Dubbo 和 Spring Cloud?),大厂 HR 如何面试

    写在最前面,我总结出了很多互联网公司的面试题及答案,并整理成了文档,以及各种学习的进阶学习资料,免费分享给大家.扫码加微信好友进[程序员面试学习交流群],免费领取.也欢迎各位一起在群里探讨技术. 微服 ...

  8. go兼容java_兼容dubbo的微服务框架dubbogo;dubbo的完整go语言实现

    1 说明 一个支持 dubbo 协议的 go 微服务框架:dubbo 的完整 go 语言实现dubbogo,以及其代码示例dubbogo-examples. 2 feature v0.2 featur ...

  9. Dubbo系列之微服务框架整合教程

    文章目录 一.分布式基本知识 1.1) 架构演变 1.2).分布式基本概念 二.RPC简介 2.1) RPC概念 2.2) RPC核心模块 三.Dubbo原理简介 3.1) Dubbo简介 3.2) ...

最新文章

  1. python中的repr是什么意思_Python中__repr__和__str__区别详解
  2. 一起学react day1
  3. NEO从源码分析看NEOVM
  4. Linux下访问window挂载的磁盘
  5. [剑指offer]面试题18:树的子结构
  6. linux下Hbase的常用shell命令
  7. 基于JAVA+SpringBoot+Mybatis+MYSQL的校园二手交易平台
  8. Robotframework--随机选取下拉框的字段值进行搜索
  9. 用什么 软件测试无线频段,Wirelessmon无线频段与信号强度扫描工具软件使用技巧...
  10. 图像加密技术综述(常见的图像加密算法简介)
  11. 不同IP网段连接网络打印机
  12. H5大番薯(源码+数据库脚本)
  13. IT运维管理之数据维护技术方案
  14. Arduino之干接点控制继电器取反实例
  15. linux管理进程ps命令,ps命令进程管理-linux
  16. 正则表达式匹配USD格式
  17. sql server替换函数
  18. wifi mouse hd for linux,wifi mouse电脑版(无线鼠标控制助手)V1.7.3 官方版
  19. Excel VBA: 提取文本中的数字
  20. 韭菜闯江湖,惨不忍睹,「跌妈不认」,你可能被割了两茬

热门文章

  1. ant desigh of angular:让nz-tree-select与nz-tree的值保持一致
  2. 学生请假管理系统(jsp+servlet)
  3. 14_扫雷游戏地雷数计算
  4. [c++] insert和emplace的区别
  5. Laradock 使用笔记
  6. SLAM论文精读系列:(第二篇)通过Wi-Fi传感增强视觉SLAM的室内应用
  7. 【MySQL】新版本特性
  8. 代理模式 Proxy
  9. Oracle 19c VLDB and Partitioning Guide 第8章:Using Parallel Execution 读书笔记
  10. 国产FPGA厂商及产品