实习已经4个月了,我终于开始写博客了!
本文讲的是windows下搭建单机zookeeper,以及搭建dubbo-admin监控平台,最后springboot整合dubbo的过程。
所用环境
1.tomcat-7.0.88
2.zookeeper 3.4.12
3.dubbo-admin 2.5.10
正文
1.zookeeper的安装与配置
下载地址 http://archive.apache.org/dist/zookeeper/zookeeper-3.4.12/
下载完后解压到常用目录(我这里是C盘),进入其conf文件夹下找到zoo_sample.cfg这个文件,重命名为zoo.cfg,修改该文件
# The number of milliseconds of each tick
tickTime=2000
# The number of ticks that the initial
# synchronization phase can take
initLimit=10
# The number of ticks that can pass between
# sending a request and getting an acknowledgement
syncLimit=5
# the directory where the snapshot is stored.
# do not use /tmp for storage, /tmp here is just
# example sakes.
dataDir=C:\\zookeeper-3.4.12\\data
dataLogDir=C:\\zookeeper-3.4.12\\log
# the port at which the clients will connect
clientPort=2181
# the maximum number of client connections.
# increase this if you need to handle more clients
#maxClientCnxns=60
#
# Be sure to read the maintenance section of the
# administrator guide before turning on autopurge.
#
# http://zookeeper.apache.org/doc/current/zookeeperAdmin.html#sc_maintenance
#
# The number of snapshots to retain in dataDir
#autopurge.snapRetainCount=3
# Purge task interval in hours
# Set to "0" to disable auto purge feature
#autopurge.purgeInterval=1
主要是修改dataDir和dataLogDir,然后进入cmd
另起一个cmd,输入jps命令,观察到quorumPeerMain进程,则启动成功
2.dubbo监控平台的搭建
dubbo-admin下载地址 https://github.com/apache/incubator-dubbo
tips:git官网master分支上没有dubbo-admin文件了,请切到2.5.x分支或者选择2.5.x版本的tags下载
下载并解压到常用目录(我是C:\incubator-dubbo-dubbo-2.5.10),进入到incubator-dubbo-dubbo-2.5.10\dubbo-admin的目录下面,然后使用mvn package -Dmaven.test.skip=true进行编译打包,打包完成之后会在target会有一个dubbo-admin-2.5.10.war的包
然后进入 dubbo-admin-2.5.10文件夹,在WEB-INF下找到dubbo.properties文件,设置root账号和guest账号的密码,以及zookeeper注册中心的地址
最后进入你的tomcat目录,将dubbo-admin-2.5.10.war这个包放入webapps目录下,将ROOT文件夹下所有文件删除并替换为dubbo-admin-2.5.10文件夹下的文件
tomcat bin目录下startup.bat启动tomcat,会自动解压war包
在浏览器上输入localhost:8080,弹出登入框
登入后页面为
配置完成。
3.springboot整合dubbo
到这里整合前的一些准备工作都已经完成(zookeeper和tomcat不要关闭,因为默认为springboot内置的tomcat启动,所以启动项目时不能启动dubbo监控)
简单的介绍一下dubbo:
Dubbo是阿里巴巴公司开源的一个高性能优秀的服务框架,使得应用可通过高性能的 RPC 实现服务的输出和输入功能,可以和Spring框架无缝集成。
Provider
暴露服务方称之为“服务提供者”。
Consumer
调用远程服务方称之为“服务消费者”。
Registry
服务注册与发现的中心目录服务称之为“服务注册中心”。
Monitor
统计服务的调用次数和调用时间的日志服务称之为“服务监控中心”。
更深入的解析请参考其它博文,所以在这里我们需要搭建两个项目,一个服务提供者,一个服务消费者。
1.服务提供者(dubbo-provider)项目搭建
springboot项目搭建流程这里不再赘述.
pom文件引入如下依赖
<dependency>
<groupId>org.apache.zookeeper</groupId>
<artifactId>zookeeper</artifactId>
<version>3.4.12</version>
<exclusions>
<exclusion>
<artifactId>slf4j-log4j12</artifactId>
<groupId>org.slf4j</groupId>
</exclusion>
</exclusions>
</dependency>
<dependency>
<groupId>com.github.sgroschupf</groupId>
<artifactId>zkclient</artifactId>
<version>0.1</version>
</dependency>
<dependency>
<groupId>com.alibaba.spring.boot</groupId>
<artifactId>dubbo-spring-boot-starter</artifactId>
<version>2.0.0</version>
</dependency>
此时项目的目录结构为
该demo中暴露的服务是testService
其实现类
@Service这个注解在com.alibaba.dubbo.config下,加上此注解的服务为提供的服务
在spring配置中添加(端口号不要和dubbo监控的端口号相同)
spring.dubbo.application.name=provider
spring.dubbo.registry.address=zookeeper://127.0.0.1:2181
spring.dubbo.protocol.name=dubbo
spring.dubbo.protocol.port=20880
spring.dubbo.scan=com.example.provider.Service
server.port=8888
springboot启动类
@EnableDubboConfiguration这个注解用来开启dubbo服务,表示其为dubbo服务提供者,开启完成后,在dubbo监控平台上显示提供者
2.服务消费者(dubbo-consumer)项目搭建
pom文件
<dependency>
<groupId>com.example</groupId>
<artifactId>dubbo-provider</artifactId>
<version>0.0.1-SNAPSHOT</version>
</dependency>
<dependency>
<groupId>com.alibaba.spring.boot</groupId>
<artifactId>dubbo-spring-boot-starter</artifactId>
<version>2.0.0</version>
</dependency>
controller层调用服务
@Controller
public class TestController {
@Reference
private TestService testService;
@RequestMapping("/home")
@ResponseBody
public String home() {
return testService.sayHello("hi");
}
}
@Reference用来注入提供服务(
import com.alibaba.dubbo.config.annotation.Reference
)
spring配置文件
spring.dubbo.application.name=consumer
spring.dubbo.registry.address=zookeeper://127.0.0.1:2181
spring.dubbo.protocol.port=20800
spring.dubbo.protocol.name=dubbo
dubbo.protocol.id=dubbo
server.port=8889
启动类
import com.alibaba.dubbo.spring.boot.annotation.EnableDubboConfiguration;
import org.springframework.boot.SpringApplication;
import org.springframework.boot.autoconfigure.SpringBootApplication;
import org.springframework.context.ConfigurableApplicationContext;
@SpringBootApplication
@EnableDubboConfiguration
public class DubboConsumerApplication {
public static void main(String[] args) {
ConfigurableApplicationContext run = SpringApplication.run(DubboConsumerApplication.class, args);
}
}
启动完成后监控平台显示
访问接口调用成功