单机模式安装zookeeper
1,下载zookeeper注册中心,下载地址:http://www.apache.org/dyn/closer.cgi/zookeeper/ 下载后解压即可,进入E:\zookeeper-3.3.6\zookeeper-3.3.6\bin,
2,在你执行启动脚本之前,还有几个基本的配置项需要配置一下,Zookeeper的配置文件在 conf 目录下,这个目录下有 zoo_sample.cfg 和 log4j.properties,你需要做的就是将zoo_sample.cfg 改名为 zoo.cfg,因为 Zookeeper在启动时会找这个文件作为默认配置文件。下面详细介绍一下,这个配置文件中各个配置项的意义。
•tickTime:这个时间是作为Zookeeper 服务器之间或客户端与服务器之间维持心跳的时间间隔,也就是每个 tickTime 时间就会发送一个心跳。
•dataDir:顾名思义就是 Zookeeper保存数据的目录,默认情况下,Zookeeper 将写数据的日志文件也保存在这个目录里。
•dataLogDir:顾名思义就是Zookeeper 保存日志文件的目录
•clientPort:这个端口就是客户端连接Zookeeper 服务器的端口,Zookeeper 会监听这个端口,接受客户端的访问请求
配置好后,
双击zkServer.cmd启动注册中心服务。
zkServer.sh【Linux】或zkServer.cmd【Windows】
zookeeper会监听本机的2181端口。
当这些配置项配置好后,你现在就可以启动 Zookeeper 了,启动后要检查 Zookeeper 是否已经在服务,可以通过 netstat – ano 命令查看是否有你配置的 clientPort 端口号在监听服务。
Dubbo的管理页面
环境准备
本案例使用环境:jdk(1.7)、tomcat(tomcat8) 注意:经测试 jdk9和tomcat7运行会报错
搭建dubbo-admin控制台(可选)
1、下载源码安装 ,下载地址:https://pan.baidu.com/s/1t2kFuFQeX35g3jjoARDj-w
也可以选择下载对应的版本。
2、解压后,打开cmd进入dubbo-admin目录下,如我解压的目录为:D:\Test\dubbo-master\dubbo-admin,在cmd下输入命令:mvn clean install
3、在target目录下生成dubbo-admin-2.5.8.war,然后将该war包放入tomcat的webapps目录下,启动tomcat, 访问localhost:[端口]/dubbo-admin-2.5.8,输入默认的用户名和密码:guest/guest
例如我访问的地址为:http://localhost:8088/dubbo-admin-2.5.8/
如果提服务向注册中心注册则可以点击服务治理查看
项目结构
服务提供者
在dubbo-api定义服务接口(提供方和消费方共享)
package com.wzy.dubbo.demo;
import java.util.List;
/**
* Created by wy on 2017/4/13.
*/
public interface DemoService {
List<String> getPermissions();
}
在服务提供方(dubbo-consumer)实现接口:(对服务消费方隐藏实现)
package com.wzy.dubbo.demo.impl;
import com.wzy.dubbo.demo.DemoService;
import java.util.ArrayList;
import java.util.List;
public class DemoServiceImpl implements DemoService {
public List<String> getPermissions() {
List<String> demo = new ArrayList<String>();
demo.add("1");
demo.add("2");
demo.add("3");
return demo;
}
}
用Spring配置声明暴露服务:
<?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-admin 或 dubbo-monitor 会显示这个名字,方便辨识-->
<dubbo:application name="demotest-provider" owner="programmer" organization="dubbox"/>
<!--使用 zookeeper 注册中心暴露服务,注意要先开启 zookeeper-->
<dubbo:registry address="zookeeper://localhost:2181"/>
<!-- 用dubbo协议在20880端口暴露服务 -->
<dubbo:protocol name="dubbo" port="20880" />
<!-- 声明需要暴露的服务接口 -->
<dubbo:service interface="com.wzy.dubbo.demo.DemoService" ref="demoService" protocol="dubbo" />
<dubbo:service interface="com.wzy.dubbo.demo.UserService" ref="userService" protocol="dubbo" />
<!--具体实现该接口的 bean-->
<bean id="demoService" class="com.wzy.dubbo.demo.impl.DemoServiceImpl"/>
<bean id="userService" class="com.wzy.dubbo.demo.impl.UserServiceImpl"/>
</beans>
加载Spring配置,启动服务(或者将项目建为web项目,然后在web.xml中配置好spring的启动,然后扔到tomcat中即可提供服务):
package com.wzy.dubbo.demo.impl;
import org.springframework.context.support.ClassPathXmlApplicationContext;
import java.io.IOException;
/**
* Created by wy on 2017/4/13.
*/
public class Provider {
public static void main(String[] args) throws IOException {
ClassPathXmlApplicationContext context = new ClassPathXmlApplicationContext("applicationContext.xml");
System.out.println(context.getDisplayName() + ": here");
context.start();
System.out.println("服务已经启动...");
System.in.read();
}
}
服务消费者
通过Spring配置引用远程服务:
<?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="demotest-consumer" owner="programmer" organization="dubbox"/>
<!--向 zookeeper 订阅 provider 的地址,由 zookeeper 定时推送-->
<dubbo:registry address="zookeeper://localhost:2181"/>
<!-- 生成远程服务代理,可以像使用本地bean一样使用permissionService -->
<dubbo:reference id="demoService" interface="com.wzy.dubbo.demo.DemoService"/>
</beans>
调用服务测试:
package com.wzy.dubbo.consumer;
import com.wzy.dubbo.demo.DemoService;
import com.wzy.dubbo.demo.UserService;
import org.springframework.context.support.ClassPathXmlApplicationContext;
public class Consumer {
/*public static void main(String[] args) {
//测试常规服务
ClassPathXmlApplicationContext context =
new ClassPathXmlApplicationContext("consumer.xml");
context.start();
System.out.println("consumer start");
DemoService demoService = context.getBean(DemoService.class);
System.out.println("consumer");
System.out.println(demoService.getPermissions());
}*/
public static void main(String[] args) {
//测试常规服务
ClassPathXmlApplicationContext context =
new ClassPathXmlApplicationContext("consumer.xml");
context.start();
System.out.println("consumer start");
DemoService demoService = context.getBean(DemoService.class);
System.out.println("consumer");
System.out.println(demoService.getPermissions());
}
}
测试结果
consumer
[1, 2, 3]