dubbo学习笔记之管控台使用案例
一、 将dubbo-admin-2.5.4.war 上传到Tomcat容器部署
- 下载dubbo-admin-2.5.4.war
- 上传到apache-tomcat-8.5.34/webapps 目录下。(tomcat容器)
- 使用unzip进行解压到当前目录
unzip dubbo-admin-2.5.4.war -d dubbo-admin
- 进入dubbo-admin 目录找到 dubbo.properties 文件进行编辑
vim apache-tomcat-8.5.34/webapps/dubbo-admin/WEB-INF/dubbo.properties
- 编辑内容
dubbo.registry.address=zookeeper://192.168.91.101:2181?backup=192.168.91.102:2181,192.168.91.103:2181
dubbo.admin.root.password=root
dubbo.admin.guest.password=root
- 启动三个节点上的zookeeper
zkServer.sh start
- 启动tomcat
./startup.sh
注意:如果使用JDK1.8 启动tomcat时会报错 :ERROR context.ContextLoader - Context initialization failed
如果启动报错,有两种方案,更换JDK的版本到1.7 。另外升级dubbo-admin war的版本。我采用后者,使用dubbo-admin-2.8.4.war 版本。
另外,我的tomcat配置的端口是8081。 默认是8080
输入root 和 root 就能进入管控台了。
通过上面的步骤后就可以在管控台进行操作
二、zookeeper 注册配置
1.1 zookeeper 配置
使用zookeeper 进行注册,搭建集群。
Zookeeper 单机配置:
<dubbo:registry address="zookeeper://10.20.153.10:2181" />
或:
<dubbo:registry protocol="zookeeper" address="10.20.153.10:2181" />
Zookeeper 集群配置:
<dubbo:registry address="zookeeper://10.20.153.10:2181?backup=10.20.153.11:2181,10.20.153.12:2181" />
或:
<dubbo:registry protocol="zookeeper" address="10.20.153.10:2181,10.20.153.11:2181,10.20.153.12:2181" />
同一 Zookeeper,分成多组注册中心:
<dubbo:registry id="chinaRegistry" protocol="zookeeper" address="10.20.153.10:2181" group="china" />
<dubbo:registry id="intlRegistry" protocol="zookeeper" address="10.20.153.10:2181" group="intl" />
三、 demo 案例代码
3.1 生产者代码
sample-provider.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
">
<!-- 具体的实现bean -->
<bean id="sampleService" class="com.uzong.dubbo.sample.provider.impl.SampleServiceImpl" />
<!-- 提供方应用信息,用于计算依赖关系 -->
<dubbo:application name="sample-provider" />
<!-- 使用zookeeper注册中心暴露服务地址 -->
<dubbo:registry address="zookeeper://192.168.91.101:2181?backup=192.168.91.102:2181,192.168.91.103:2181" />
<!-- 用dubbo协议在20880端口暴露服务 -->
<dubbo:protocol name="dubbo" port="20880" />
<!-- 声明需要暴露的服务接口 写操作可以设置retries=0 避免重复调用SOA服务 -->
<dubbo:service retries="0" interface="com.uzong.dubbo.sample.provider.SampleService" ref="sampleService" />
</beans>
provider 的接口
package com.uzong.dubbo.sample.provider;
import java.util.List;
public interface SampleService {
String sayHello(String name);
public List getUsers();
}
provider 的接口实现
package com.uzong.dubbo.sample.provider.impl;
import java.util.ArrayList;
import java.util.List;
import com.uzong.dubbo.sample.provider.SampleService;
public class SampleServiceImpl implements SampleService {
public String sayHello(String name) {
return "Hello " + name;
}
public List getUsers() {
List list = new ArrayList();
User u1 = new User();
u1.setName("jack");
u1.setAge(20);
u1.setSex("m");
list.add(u1);
return list;
}
}
运行代码
package com.uzong.dubbo.sample.test;
import org.springframework.context.support.ClassPathXmlApplicationContext;
public class Provider {
public static void main(String[] args) throws Exception {
ClassPathXmlApplicationContext context = new ClassPathXmlApplicationContext(
new String[] { "sample-provider.xml" });
context.start();
System.in.read(); // 为保证服务一直开着,利用输入流的阻塞来模拟
}
}
3.2 生产者代码
sample-consumer.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:application name="sample-consumer" />
<dubbo:registry address="zookeeper://192.168.91.101:2181?backup=192.168.91.102:2181,192.168.91.103:2181" />
<!-- 生成远程服务代理,可以像使用本地bean一样使用demoService 检查级联依赖关系 默认为true 当有依赖服务的时候,需要根据需求进行设置 -->
<dubbo:reference id="sampleService" check="false"
interface="com.uzong.dubbo.sample.provider.SampleService" />
</beans>
service接口代码
package com.uzong.dubbo.sample.provider;
import java.util.List;
public interface SampleService {
String sayHello(String name);
public List getUsers();
}
测试代码
import java.util.List;
import org.springframework.context.support.ClassPathXmlApplicationContext;
import com.uzong.dubbo.sample.provider.SampleService;
public class Consumer {
public static void main(String[] args) throws Exception {
ClassPathXmlApplicationContext context = new ClassPathXmlApplicationContext(
new String[] { "sample-consumer.xml" });
context.start();
SampleService sampleService = (SampleService) context.getBean("sampleService");
String hello = sampleService.sayHello("tom");
System.out.println(hello);
System.in.read();
}
}
运行demo 代码,可以在dubbo-admin 看见其服务和消费信息。 同时可以进行更多相关操作
参考
参考白老师****
dubbo文档地址 https://dubbo.gitbooks.io/dubbo-user-book/content/references/registry/zookeeper.html ( http://dubbo.io/User+Guide-zh.htm 地址已经失效)