一、Dubbo的实现架构图

Dubbo内部组成部分:分为服务的提供者,Dubbo的容器,服务消费者,注册中心(zookeeper)、监控中心(Monitor)

通信机制:使用netty通信服务进行通信,netty是基于nio字符缓冲流来实现。

二、环境的安装

1、zookeeper环境搭建:

下载地址:

(1)、wget https://mirrors.tuna.tsinghua.edu.cn/apache/zookeeper/zookeeper-3.6.1/apache-zookeeper-3.6.1-bin.tar.gz

下载解压后得到apache-zookeeper-3.6.1-bin目录

(2)、找到apache-zookeeper-3.6.1-bin/conf/zoo_sample.cfg,将zoo_sample.cfg文件修改为zoo.cfg,  vi进去可以查看到zookeeper的默认端口号2181.

(3)、进入apache-zookeeper-3.6.1-bin/bin目录,执行:./zkServer.sh start     ./zkCli.sh  启动zookeeper服务。

2、Dubbo控制台admin和监控中心的环境搭建

(1)、去gitHub下载我们的Dubbo相关服务

git clone git@github.com:apache/dubbo-admin.git,将Dubbo项目克隆到本地服务器得到dubbo-admin-master项目目录

(2)、进入dubbo-admin-master/dubbo-admin/src/main/resource/application.properties配置文件查看里面的zookeeper的连接配置是否正确,配置入下:

server.port=7001    #dubbo访问控制台端口
spring.velocity.cache=false
spring.velocity.charset=UTF-8
spring.velocity.layout-url=/templates/default.vm
spring.messages.fallback-to-system-locale=false
spring.messages.basename=i18n/message
spring.root.password=root
spring.guest.password=guest

dubbo.registry.address=zookeeper://127.0.0.1:2181  #zookeeper的访问地址

(3)、进入dubbo-admin-master/dubbo-admin目录

       执行mvn clean package将项目进行打包(jar)

       打包后会生成jar文件target,进入jar包文件:dubbo-admin-master/dubbo-admin/target,执行 java -jar dubbo-admin-0.0.1-         SNAPSHOT.jar   进行jar包的运行

      然后http+ip+7001就可以访问我们的dubbo访问控制台了。

     

3、监控中心(Monitor)的搭建

 (1)、进入dubbo-admin-master/dubbo-monitor-simple目录,执行mvn clean package进行项目打包

 (2)、进入打包后的target目录会看到压缩文件(dubbo-monitor-simple-2.0.0-assembly.tar.gz),将其进行解压

 (3)、解压后进入dubbo-admin-master/dubbo-monitor-simple/target/dubbo-monitor-simple-2.0.0/conf目录,进行

 vi dubbo.properties文件的查看,检查配置是否正确,配置如下:

dubbo.container=log4j,spring,registry,jetty-monitor
dubbo.application.name=simple-monitor
dubbo.application.owner=dubbo
#dubbo.registry.address=multicast://224.5.6.7:1234
dubbo.registry.address=zookeeper://127.0.0.1:2181
#dubbo.registry.address=redis://127.0.0.1:6379
#dubbo.registry.address=dubbo://127.0.0.1:9090
dubbo.protocol.port=7070
dubbo.jetty.port=8089   #监控中心的访问端口
dubbo.jetty.directory=${user.home}/monitor
dubbo.charts.directory=${user.home}/monitor/charts
dubbo.statistics.directory=${user.home}/monitor/statistics
dubbo.log4j.file=logs/dubbo-monitor-simple.log
dubbo.log4j.level=WARN

   然后进入target/dubbo-monitor-simple-2.0.0/assembly.bin/目录执行 ./start.sh start 启动我们的监控中心

   然后http+ip+8089来访问我们的监控中心

   

4、本地私服中央仓Nexus的搭建

(1)、下载地址:wget https://sonatype-download.global.ssl.fastly.net/nexus/oss/nexus-2.13.0-01-bundle.tar.gz

 (2)、解压下载的压缩包进入nexus-2.14.3-02/conf/nexus.properties查看和配置

# Jetty section
application-port=8087   #这个地方我将访问的端口更改为了8087
application-host=0.0.0.0
nexus-webapp=${bundleBasedir}/nexus
nexus-webapp-context-path=/nexus

# Nexus section
nexus-work=${bundleBasedir}/../sonatype-work/nexus
runtime=${bundleBasedir}/nexus/WEB-INF

# orientdb buffer size in megabytes
storage.diskCache.bufferSize=4096
[root@localhost conf]# vi nexus-2.14.3-02/bin/nexus
#RUN_AS_USER=
改为:
RUN_AS_USER=root

(3)、进入nexus-2.14.3-02/bin目录执行nexus start启动我们的访问控制台

        

5、中央仓的切换(将其切换为阿里云的中央仓)

为啥要切换呢?由于默认中央仓访问下载速度太慢

切换流程配置如下:

(1)、切换中央仓库为阿里云仓库,修复索引 

(2)、加入central到public仓库地址,这样才能正常下载到依赖 

(3)、项目配置(Maven配置)

首先需要配置是的maven的setting.xml文件,配置如下:

<?xml version="1.0" encoding="UTF-8"?>
<settings   xmlns="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/settings-1.0.0.xsd">
    <localRepository>/Users/trx/.m2/repository/</localRepository> <!--本地仓库 -->
    <servers>
    <server>
    <id>sc</id>
    <username>admin</username>        <!--私服用户名 -->
    <password>admin123</password>
    </server>
    </servers>
     <profiles>
        <profile>
            <id>default</id>
    <repositories>
    <repository>
          <id>sc</id>
          <name>Public Repositories</name>
          <url>http://127.0.0.1:8087/nexus/content/repositories/releases/</url>
      </repository>
    </repositories>
    <pluginRepositories>
      <pluginRepository>
         <id>sc</id>
         <name>Public Repositories</name>
         <url>http://127.0.0.1:8087/nexus/content/repositories/releases/</url>
     </pluginRepository>
 </pluginRepositories>
 </profile>
 </profiles>
 <activeProfiles>
    <activeProfile>default</activeProfile>
  </activeProfiles>
</settings>

(4)、ide具体项目配置

配置具体项目的pom.xml文件

根节点project中增加

 <distributionManagement>
        <!-- 两个ID必须与 setting.xml中的<server><id>nexus-rs</id></server>保持一致-->
        <repository>
            <id>sc</id>
            <name>Public Repositories</name>
            <url>http://127.0.0.1:8087/nexus/content/repositories/releases/</url>
        </repository>
        <snapshotRepository>
            <id>sc</id>
            <name>Public Repositories</name>
            <url>http://127.0.0.1:8087/nexus/content/repositories/snapshots/</url>
        </snapshotRepository>
    </distributionManagement>

好了,到这所有环境配置已经全部配置完成了,将其全部启动。

 

三、基于Dubbo项目,接口之间互调步骤

1、建立服务的提供者(如下是个springboot项目)

第一步:需要在我们的服务提供者的pom.xml文件中引入我们的dubbo的依赖jar包dubbo-starter

<dependency>
            <groupId>com.alibaba.boot</groupId>
            <artifactId>dubbo-spring-boot-starter</artifactId>
            <version>0.2.0</version>
            <exclusions>
                <exclusion>
                    <artifactId>spring</artifactId>
                    <groupId>org.springframework</groupId>
                </exclusion>
            </exclusions>
        </dependency>

第二步:去boot项目的application.properties配置文件中配置相关连接信息

dubbo.application.name=boot-user-service-provider
dubbo.registry.address=127.0.0.1:2181
dubbo.registry.protocol=zookeeper

dubbo.protocol.name=dubbo
dubbo.protocol.port=20880

dubbo.monitor.protocol=registry

第三步:

在我们的boot项目启动类的头部加上“@EnableDubbo //开启基于注解的dubbo功能”,将其启动dubbo注解模式的配置

第四步:暴露服务

在我们具体的实现层类的头部增加@Service //暴露服务。

导入包是dubbo的service包里面的:import com.alibaba.dubbo.config.annotation.Service;

第五步:启动项目,然后去我们的dubbo管控中心里面就可以看到我们的服务提供者的相关信息。

2、建立服务的消费者

与上面提供者步骤一致。

不同的地方:在我们的具体引用dubbo的service的时候需要使用@Reference注解,如下:

@Reference
UsersService usersService;

配置完成后启动我们的项目进行dubbo接口的调用, 在我们的dubbo的管控台就可以看到我们的消费者信息。

 

Logo

权威|前沿|技术|干货|国内首个API全生命周期开发者社区

更多推荐