什么是Dubbo框架?( 三 )


7. 服务提供者/消费者
远程调用过程必然有服务提供者和消费者,比如订单服务器提供订单服务,用户服务器使用订单服务,其中订单服务器是提供者,用户服务器是消费者.反之亦然.
所以在RPC中没有绝对的消费者和提供者,任何服务都能同时兼备消费者和提供者两个身份,并且绝大多数时候如此
8. 通信模型
通信模型都有什么?
BIO 同步阻塞
NIO 同步非阻塞(Dubbo使用的Netty框架就是使用的这一种通信方式,而Netty 作为一款高性能的通信框架,广泛应用于游戏服务器和物联网服务器)
AIO 异步非阻塞
9.组件角色
Dubbo中的5大组件(角色)
Provider 提供者
Consumer 消费者
Registry 服务发现与注册中心
Monitor 监控中心
Container 服务运行容器
2. Dubbo 环境搭建1. 注册中心种类
Dubbo支持的注册中心有很多
Simple
redis
Nacos
Multicast
Zookeeper
其中Dubbo官方推荐使用 Zookeeper作为注册中心
2. 注册中心搭建

  • 1. linux(生产环境)下的搭建[教学中跳过]
参考dubbo.docx里关于Linux下搭建(不是最好的搭建方式,建议使用Docker)
  • 2. windows(开发环境)下的搭建
Windows下的安装包解压(我已经解压并放在了E:zookeeper-3.4.11)
进入bin目录
运行zkServer.cmd
到这里我们的Zookeeper服务就启动了
启动bin目录下的zkCli.cmd
运行命令
获取根目录下的数据
get /
获取所有节点(我获取到了两个节点)
ls /
创建节点
create -e /shouwang 123456
ls /
到这里就搭建完成了,但是Zookeeper的功能远不止于此
我们只是用它作为注册中心
  • 3. Zookeeper的文件结构
Zookeeper 是 Apacahe Hadoop 的子项目,是一个树型的目录服务,支持变更推送,适合作为 Dubbo 服务的注册中心,工业强度较高,可用于生产环境,并推荐使用
  • 4. 控制台dubbo-admin(非必须)
控制台为我们提供了可视化界面来监控我们的服务运行情况,但是这个在实际生产环境中不一定能使用到,这里我们搭建的目的是为了在开发和学习环境中能更好的监控我们的服务
你可以在GitHub上搜索Dubbo-ops
也可以使用我已经下载好的监控中心
我的已经解压到(E:/incubator-dubbo-ops-master)
进入dubbo-admin目录,会发现一个maven工程pom
  • 以下是pom.xml里的内容
<?xmlversion="1.0" encoding="UTF-8"?>
<projectxmlns="http://maven.apache.org/POM/4.0.0" xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"
xsi:schemaLocation="http://maven.apache.org/POM/4.0.0 http://maven.apache.org/xsd/maven-4.0.0.xsd">
<modelVersion>4.0.0</modelVersion>
<groupId>com.alibaba</groupId>
<artifactId>dubbo-admin</artifactId>
<version>0.0.1-SNAPSHOT</version>
<packaging>jar</packaging>
<name>dubbo-admin</name>
<description>Demo project for Spring Boot</description>
<parent>
<groupId>org.springframework.boot</groupId>
<artifactId>spring-boot-starter-parent</artifactId>
<version>2.0.2.RELEASE</version>
<relativePath/><!-- lookup parent from repository -->
</parent>
<properties>
<project.build.sourceEncoding>UTF-8</project.build.sourceEncoding>
<project.reporting.outputEncoding>UTF-8</project.reporting.outputEncoding>
<java.version>1.8</java.version>
</properties>
<dependencies>
<dependency>
<groupId>org.springframework.boot</groupId>
<artifactId>spring-boot-starter-web</artifactId>
</dependency>
<dependency>
<groupId>org.springframework.boot</groupId>
<artifactId>spring-boot-starter-test</artifactId>
<scope>test</scope>
</dependency>
<dependency>
<groupId>com.alibaba.boot</groupId>
<artifactId>velocity-spring-boot-starter</artifactId>
<version>0.1.0</version>
</dependency>
<dependency>
<groupId>org.apache.commons</groupId>
<artifactId>commons-lang3</artifactId>
<version>3.7</version>
</dependency>
<dependency>
<groupId>com.alibaba</groupId>
<artifactId>dubbo</artifactId>
<version>2.6.2</version>
</dependency>
<dependency>


推荐阅读