Dubbo架构设计及入门案例

框架介绍

1.1.1 概述

Dubbo是阿里巴巴公司开源的一个高性能优秀的服务框架,使得应用可通过高性能的 RPC 实现服务的输出和输入功能,可以和 Spring框架无缝集成。

Dubbo是一款高性能、轻量级的开源Java RPC框架,它提供了三大核心能力:面向接口的远程方法调用,智能容错和负载均衡,以及服务自动注册和发现。

1.1.2 运行架构

dubbo运行架构如下图示

节点角色说明

节点

角色说明

Provider

暴露服务的服务提供方

Consumer

调用远程服务的服务消费方

Registry

服务注册与发现的注册中心

Monitor

统计服务的调用次数和调用时间的监控中心

Container

服务运行容器

调用关系说明

  1. 服务容器负责启动,加载,运行服务提供者。
  2. 服务提供者在启动时,向注册中心注册自己提供的服务。
  3. 服务消费者在启动时,向注册中心订阅自己所需的服务。
  4. 注册中心返回服务提供者地址列表给消费者,如果有变更,注册中心将基于长连接推送变更数据给消费者。
  5. 服务消费者,从提供者地址列表中,基于软负载均衡算法,选一台提供者进行调用,如果调用失败,再选另一台调用。
  6. 服务消费者和提供者,在内存中累计调用次数和调用时间,定时每分钟发送一次统计数据到监控中心。

关于dubbo 的特点分别有连通性、健壮性、伸缩性、以及向未来架构的升级性。特点的详细介绍也可以参考官方文档。

1.1.3 整体设计

图例说明:

**各层说明: **

1.2 环境搭建

接下来逐步对dubbo各个模块的源码以及原理进行解析,目前dubbo框架已经交由Apache基金会进行孵化,被在github开源。

Dubbo 社区目前主力维护的有 2.6.x 和 2.7.x 两大版本,其中,

1.2.1 源码拉取

通过以下的这个命令签出最新的dubbo项目源码,并导入到IDEA中

git clone https://github.com/apache/dubbo.git dubbo

可以看到Dubbo被拆分成很多的Maven项目,在后续课程中会介绍左边每个模块的大致作用。

下载源码导入工程后,进行编译,并跳过测试,这个过程中可能会遇到以下问题

[ERROR] Failed to execute goal org.xolstice.maven.plugins:protobuf-maven-plugin:0.5.1:compile (default) on project dubbo-serialization-protobuf: Missing:[ERROR] ----------[ERROR] 1) com.google.protobuf:protoc:exe:windows-x86_64:3.7.1[ERROR] [ERROR] Try downloading the file manually from the project website.[ERROR] [ERROR] Then, install it using the command: [ERROR] mvn install:install-file -DgroupId=com.google.protobuf -DartifactId=protoc -Dversion=3.7.1 -Dclassifier=windows-x86_64 -Dpackaging=exe -Dfile=/path/to/file[ERROR] [ERROR] Alternatively, if you host your own repository you can deploy the file there: [ERROR] mvn deploy:deploy-file -DgroupId=com.google.protobuf -DartifactId=protoc -Dversion=3.7.1 -Dclassifier=windows-x86_64 -Dpackaging=exe -Dfile=/path/to/file -Durl=[url] -DrepositoryId=[id][ERROR] [ERROR] Path to dependency: [ERROR] 1) org.apache.dubbo:dubbo-serialization-protobuf:jar:2.7.8[ERROR] 2) com.google.protobuf:protoc:exe:windows-x86_64:3.7.1[ERROR] [ERROR] ----------[ERROR] 1 required artifact is missing.[ERROR] [ERROR] for artifact: [ERROR] org.apache.dubbo:dubbo-serialization-protobuf:jar:2.7.8[ERROR] [ERROR] from the specified remote repositories:[ERROR] apache.snapshots (https://repository.apache.org/snapshots, releases=false, snapshots=true),[ERROR] alimaven (http://maven.aliyun.com/nexus/content/groups/public/, releases=true, snapshots=false)

手动下载,按照提示的命令执行

mvn install:install-file -DgroupId=com.google.protobuf -DartifactId=protoc -Dversion=3.7.1 -Dclassifier=windows-x86_64 -Dpackaging=exe -Dfile=C:Users22863Desktop estprotoc-3.7.1-windows-x86_64.exe

1.2.2 源码结构

通过如下图形可以大致的了解到,dubbo源码各个模块的相关作用:

模块说明:

1.2.3 环境导入

在本次课程中,不仅讲解dubbo源码还会涉及到相关的基础知识,为了方便学员快速理解并掌握各个内容,已经准备好了相关工程,只需导入到IDEA中即可。对于工程中代码的具体作用,在后续课程会依次讲解

1.2.4 测试

(1) 安装zookeeper

(2) 修改官网案例,配置zookeeper地址

(3) 启动服务提供者,启动服务消费者

1.2.5 管理控制台

  1. 下载管理控制台, GITHUB地址
  2. 进入源码目录, 进行打包编译
  3. mvn clean package -Dmaven.test.skip=true
  4. 构建成功提示:

如果构建过程中出现nodejs安装包下载错误, 可以将安装包直接放置maven仓库内(资料中已提供安装包)。

  1. 启动后台管理服务
  2. java -jar dubbo-admin-0.2.0-SNAPSHOT.jar

  1. 管理后台
  2. 地址: http://127.0.0.1:8080/
  3. 默认账户名和密码都为root

进入管理后台, 可以看到所启动的服务端与消费端。

展开阅读全文

页面更新:2024-03-20

标签:提供者   集群   容器   架构   源码   框架   模块   入门   接口   消费者   案例   地址   中心

1 2 3 4 5

上滑加载更多 ↓
推荐阅读:
友情链接:
更多:

本站资料均由网友自行发布提供,仅用于学习交流。如有版权问题,请与我联系,QQ:4156828  

© CopyRight 2008-2024 All Rights Reserved. Powered By bs178.com 闽ICP备11008920号-3
闽公网安备35020302034844号

Top