Dubbo快速入门

h ttp://dubbo.apache.org/

 1. 注册中心

1.1 Zookeeper

官方推荐使用zookeeper注册中心;

注册中心负责服务地址的注册与查找,相当于目录服务;

服务提供者和消费者只在启动时与注册中心交互,注册中不转发请求,压力较小;

Zookeeperapache hadoop的子项目,是一个树形的目录服务,支持变更推送,适合作为dubbo的服务注册中心,工业强度较高,可用于生产环境;

1.2 安装

 安装jdk

拷贝apache-zookeeper-3.6.0-bin.tar.gzopt目录

解压安装包

[root@localhost opt]# tar -zxvf apache-zookeeper-3.6.0-bin.tar.gz

重命名

[root@localhost opt]# mv apache-zookeeper-3.6.0-bin zookeeper

/opt/zookeeper/这个目录上创建zkDatazkLog目录

[root@localhost zookeeper]# mkdir zkData

[root@localhost zookeeper]# mkdir zkLog

进入/opt/zookeeper/conf这个路径,复制一份 zoo_sample.cfg 文件并命名为 zoo.cfg

[root@localhost conf]# cp zoo_sample.cfg zoo.cfg

编辑zoo.cfg文件,修改dataDir路径

dataDir=/opt/zookeeper/zkData

dataLogDir=/opt/zookeeper/zkLog

启动Zookeeper

[root@localhost bin]# ./zkServer.sh start

查看状态

[root@localhost bin]# ./zkServer.sh status

2. 服务提供方

1、 一个空的maven项目

2、提供一个服务接口即可

2.1 服务方的pom.xml

各种依赖请严格按照下面的版本

<packaging>war</packaging>


<properties>
<spring.version>5.0.6.RELEASE</spring.version>
</properties>
<dependencies>
<dependency>
<groupId>org.springframework</groupId>
<artifactId>spring-webmvc</artifactId>
<version>${spring.version}</version>
</dependency>
<dependency>
<groupId>org.springframework</groupId>
<artifactId>spring-core</artifactId>
<version>${spring.version}</version>
</dependency>
<dependency>
<groupId>org.springframework</groupId>
<artifactId>spring-beans</artifactId>
<version>${spring.version}</version>
</dependency>
<dependency>
<groupId>org.springframework</groupId>
<artifactId>spring-context</artifactId>
<version>${spring.version}</version>
</dependency>
<dependency>
<groupId>org.springframework</groupId>
<artifactId>spring-context-support</artifactId>
<version>${spring.version}</version>
</dependency>
<dependency>
<groupId>org.springframework</groupId>
<artifactId>spring-tx</artifactId>
<version>${spring.version}</version>
</dependency>
<!--dubbo -->
<dependency>
<groupId>com.alibaba</groupId>
<artifactId>dubbo</artifactId>
<version>2.5.7</version>
</dependency>
<dependency>
<groupId>org.apache.zookeeper</groupId>
<artifactId>zookeeper</artifactId>
<version>3.4.6</version>
</dependency>
<dependency>
<groupId>com.github.sgroschupf</groupId>
<artifactId>zkclient</artifactId>
<version>0.1</version>
</dependency>
<dependency>
<groupId>javassist</groupId>
<artifactId>javassist</artifactId>
<version>3.11.0.GA</version>
</dependency>
</dependencies>


<build>
<plugins>
<plugin>
<groupId>org.apache.tomcat.maven </groupId>
<artifactId>tomcat7-maven-plugin</artifactId>
<configuration>
<port>8001</port>
<path>/</path>
</configuration>
<executions>
<execution>
<!-- 打包完成后,运行服务 -->
<phase>package</phase>
<goals>
<goal>run</goal>
</goals>
</execution>
</executions>
</plugin>
</plugins>
</build>

2.2 服务方接口

public interface HelloService { String sayHello(String name);
}

2.3 服务方实现

@com.alibaba.dubbo.config.annotation.Service
public class HelloServiceImpl implements HelloService { @Override
public String sayHello(String name) { return "Hello," + name + "!!!";
}
}

2.4 服务方的配置文件spring.xml

<?xml version="1.0" encoding="UTF-8"?>
<beans xmlns="http://www.springframework.org/schema/beans" xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" xmlns:dubbo="http://code.alibabatech.com/schema/dubbo" xsi:schemaLocation=" http://www.springframework.org/schema/beans http://www.springframework.org/schema/beans/spring-beans.xsd http://code.alibabatech.com/schema/dubbo http://code.alibabatech.com/schema/dubbo/dubbo.xsd">

<!--1.服务提供方在zookeeper中的“别名”-->
<dubbo:application name="dubbo-server"/>
<!--2.注册中心的地址-->
<dubbo:registry address="zookeeper://192.168.204.141:2181"/>
<!--3.扫描类(将什么包下的类作为服务提供类)-->
<dubbo:annotation package="service.impl"/>
</beans>

2.5 服务方的web.xml

<?xml version="1.0" encoding="UTF-8"?>
<web-app xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" xmlns="http://xmlns.jcp.org/xml/ns/javaee" xsi:schemaLocation="http://xmlns.jcp.org/xml/ns/javaee
http://xmlns.jcp.org/xml/ns/javaee/web-app_3_1.xsd" id="WebApp_ID" version="3.1">
<listener>
<listener- class>org.springframework.web.context.ContextLoaderListener</listener-class>
</listener>
<context-param>
<param-name>contextConfigLocation</param-name>
<param-value>classpath:spring/spring.xml</param-value>
</context-param>
</web-app>

3. 服务消费方

3.1 消费方的pom.xml

与服务方一致,只需要修改tomcat的端口为8002

3.2 消费方的Controller

@RestController
public class HelloAction { @com.alibaba.dubbo.config.annotation.Reference private HelloService hs; @RequestMapping("hello")
@ResponseBody
public String hello( String name){ return hs.sayHello(name);
}
}

3.3 消费方的接口

注意:

controller中要依赖HelloService,所以我们创建一个接口;

这里是消费方,不需要实现,因为实现会让服务方为我们搞定!

public interface HelloService { String sayHello(String name);
}

3.4 消费方的web.xml

<?xml version="1.0" encoding="UTF-8"?>
<web-app xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" xmlns="http://xmlns.jcp.org/xml/ns/javaee" xsi:schemaLocation="http://xmlns.jcp.org/xml/ns/javaee
http://xmlns.jcp.org/xml/ns/javaee/web-app_3_1.xsd" id="WebApp_ID" version="3.1">

<servlet>
<servlet-name>springmvc</servlet-name>
<servlet- class>org.springframework.web.servlet.DispatcherServlet</servlet-class>
<init-param>
<param-name>contextConfigLocation</param-name>
<param-value>classpath:spring/spring.xml</param-value>
</init-param>
</servlet>
<servlet-mapping>
<servlet-name>springmvc</servlet-name>
<url-pattern>/</url-pattern>
</servlet-mapping>

</web-app>

3.5 消费方的springmvc.xml

<?xml version="1.0" encoding="UTF-8"?>
<beans xmlns="http://www.springframework.org/schema/beans" xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" xmlns:dubbo="http://code.alibabatech.com/schema/dubbo" xsi:schemaLocation=" http://www.springframework.org/schema/beans http://www.springframework.org/schema/beans/spring-beans.xsd http://code.alibabatech.com/schema/dubbo http://code.alibabatech.com/schema/dubbo/dubbo.xsd">
<!--Dubbo的应用名称,通常使用项目名 -->
<dubbo:application name="dubbo-consumer" />
<!--配置Dubbo的注册中心地址 -->
<dubbo:registry address="zookeeper://192.168.204.141:2181" />
<!--配置Dubbo扫描类,将这个类作为服务进行发布 -->
<dubbo:annotation package="controller" />
</beans>

4. 启动服务测试

首先启动服务方,再启动消费方。

访问:http://localhost:8002/hello?name=james

4. 监控中心

我们在开发时,需要知道注册中心都注册了哪些服务,以便我们开发和测试。图形化显示注册中心的中 服务列表

我们可以通过部署一个web应用版的管理中心来实现

4.1 服务管理端

4.1.1 安装管理端

解压 dubbo-admin-master.zip

修改配置文件

 

 返回到项目根目录,使用maven打包:mvn clean package

 dos下运行target目录中的jar文件:java -jar dubbo-admin-0.0.1- SNAPSHOT.jar

此时打开浏览器输入:http://localhost:7001/

第一次访问时,需要登录,帐号密码都是root

4.1.2 管理端使用

 启动服务方,将服务注册到zookeeper

 启动dubbo-server服务方后,刷新管理端,服务注册成功,只是没有消费者

 点击服务名,进入服务提供者页面

 把消费者也运行起来,刷新服务,显示正常

 查看消费者

 5. 监控统计中心

Monitor统计中心 ,记录服务被调用多少次等

解压dubbo-monitor-simple-2.5.3.zip

修改dubbo-monitor-simple-2.5.3\conf\dubbo.properties

 双击运行dubbo-monitor-simple-2.5.3\bin\start.bat

分别修改dubbo-serverdubbo-consumerspring.xml,加入下面标签

 <!-- 让监控 去注册中心 自动找服务 -->

<dubbo:monitor protocol="registry"/>

节选自拉钩教育JAVA系列教程

 

评论
成就一亿技术人!
拼手气红包6.0元
还能输入1000个字符
 
红包 添加红包
表情包 插入表情
 条评论被折叠 查看
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值