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 就能进入管控台了。
dubbo学习笔记之管控台使用案例


通过上面的步骤后就可以在管控台进行操作


二、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学习笔记之管控台使用案例


参考

参考白老师****
dubbo文档地址 https://dubbo.gitbooks.io/dubbo-user-book/content/references/registry/zookeeper.htmlhttp://dubbo.io/User+Guide-zh.htm 地址已经失效)