Springboot整合Dubbo/ZooKeeper demo
2017-03-28 16:07
831 查看
同样的这篇文章很大程度上参考了下面这篇文章:
Springboot 整合 Dubbo/ZooKeeper 详解 SOA 案例
所以我也是当做转载了。
1、首先是安装与部署zookeeper
下载、解压、修改zoo.cfg、启动。
本demo采用单点模式。
详细内容可以参考下面的文章:
zookeeper 集群安装(单点与分布式成功安装)摘录
2、监控
集群:
推荐使用taokeeper(好吧,其实我也没用过其他什么比较高级的监控工具,这个也并不是那么好用,当然功能还是比较全面的,性能检测也很棒)
具体安装可以参考下面的文章:
ZooKeeper监控
PS:其中第四步在tomcat启动脚本中添加JAVA_OPTS应该是这样的。windows下的。在tomcat的启动文件startup.bat中添加一句:set JAVA_OPTS=-DconfigFilePath="D:\2\taokepper\taokeeper-monitor-config.properties",位置在end和call前面,如下图所示:
单点:
就是之后截图中出现的工具——ZooInspector 。
下载:https://issues.apache.org/jira/secure/attachment/12436620/ZooInspector.zip
运行: 解压缩后点击ZooInspector\build\zookeeper-dev-ZooInspector.jar
点击左上角的绿色按钮,输入ZK Server的地址和端口,连接成功后就能看到ZK的节点数据信息。
如下图所示:
3、最重要的demo
服务者Provider:
pom.xml依赖的jar包:
接下去是项目结构:
接口CityService是我们要注册的服务!
服务的实现类:CityServiceImpl.java:
配置文件application.properties:
在这里会惊奇的发现服务类包目录我选择扫描的是serviceimpl这个包,但是运行之后发现注册的服务如下图:
仍然是CityService,这点就要设计Spring对bean这一概念了,这里我就不多赘述了,我想说的是平时impl放在service目录下,然后扫描service包可能会更好理解一点。
但是本例中扫描service包将不会注册服务,究其原因,在于@Service这一注解,当然其中参数不止version,这边我做了最简单的处理。
(另外,domain中的实体类记得序列化。)
之后运行Application.java(默认占用端口8080),当初出现下图内容或者在监控中出现了服务说明注册成功了(记得先运行zookeeper服务端):
监控的图就如上面显示的那样,出现了服务名就行。
消费者Consumer:
依赖同服务者相同。
项目结构如下:
配置文件application.properties:
MyCityServiceImpl.java:
两个项目中CityService.java,即注册和消费的服务的类的相对路径必须相同,这是由于Spring的自动注入导致的,如果不同则需要手动配置r
4000
eferences。
启动类Application.java:
这时候可以看看监控。
当服务者断开后,因为是单点模式,消费者立刻接收到消息:
而当消费者重启之后,监控中可以看到消费记录多了一条(consumers目录下):
当然,由于超时的原因,可能这条记录过一会就消失了。但这也不失为可以监控的一个点~~
有点头昏,感觉写的不是很好,将就下吧。最后附上demo文件:
下载地址
Springboot 整合 Dubbo/ZooKeeper 详解 SOA 案例
所以我也是当做转载了。
1、首先是安装与部署zookeeper
下载、解压、修改zoo.cfg、启动。
本demo采用单点模式。
详细内容可以参考下面的文章:
zookeeper 集群安装(单点与分布式成功安装)摘录
2、监控
集群:
推荐使用taokeeper(好吧,其实我也没用过其他什么比较高级的监控工具,这个也并不是那么好用,当然功能还是比较全面的,性能检测也很棒)
具体安装可以参考下面的文章:
ZooKeeper监控
PS:其中第四步在tomcat启动脚本中添加JAVA_OPTS应该是这样的。windows下的。在tomcat的启动文件startup.bat中添加一句:set JAVA_OPTS=-DconfigFilePath="D:\2\taokepper\taokeeper-monitor-config.properties",位置在end和call前面,如下图所示:
单点:
就是之后截图中出现的工具——ZooInspector 。
下载:https://issues.apache.org/jira/secure/attachment/12436620/ZooInspector.zip
运行: 解压缩后点击ZooInspector\build\zookeeper-dev-ZooInspector.jar
点击左上角的绿色按钮,输入ZK Server的地址和端口,连接成功后就能看到ZK的节点数据信息。
如下图所示:
3、最重要的demo
服务者Provider:
pom.xml依赖的jar包:
<!-- Spring Boot 启动父依赖 --> <parent> <groupId>org.springframework.boot</groupId> <artifactId>spring-boot-starter-parent</artifactId> <version>1.5.1.RELEASE</version> </parent> <properties> <dubbo-spring-boot>1.0.0</dubbo-spring-boot> </properties> <dependencies> <!-- Spring Boot Dubbo 依赖 --> <dependency> <groupId>io.dubbo.springboot</groupId> <artifactId>spring-boot-starter-dubbo</artifactId> <version>${dubbo-spring-boot}</version> </dependency> <!-- Spring Boot Web 依赖 --> <dependency> <groupId>org.springframework.boot</groupId> <artifactId>spring-boot-starter-web</artifactId> </dependency> <!-- Spring Boot Test 依赖 --> <dependency> <groupId>org.springframework.boot</groupId> <artifactId>spring-boot-starter-test</artifactId> <scope>test</scope> </dependency> <!-- Junit --> <dependency> <groupId>junit</groupId> <artifactId>junit</artifactId> <version>4.12</version> </dependency> </dependencies>
接下去是项目结构:
接口CityService是我们要注册的服务!
服务的实现类:CityServiceImpl.java:
@Service(version = "1.0.0") public class CityServiceImpl implements CityService { @Override public City findCityByName(String cityname) { return new City(1L,2L,"温岭","是我的故乡"); } }
配置文件application.properties:
## 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=dubbodemo.serviceimpl
在这里会惊奇的发现服务类包目录我选择扫描的是serviceimpl这个包,但是运行之后发现注册的服务如下图:
仍然是CityService,这点就要设计Spring对bean这一概念了,这里我就不多赘述了,我想说的是平时impl放在service目录下,然后扫描service包可能会更好理解一点。
但是本例中扫描service包将不会注册服务,究其原因,在于@Service这一注解,当然其中参数不止version,这边我做了最简单的处理。
(另外,domain中的实体类记得序列化。)
之后运行Application.java(默认占用端口8080),当初出现下图内容或者在监控中出现了服务说明注册成功了(记得先运行zookeeper服务端):
监控的图就如上面显示的那样,出现了服务名就行。
消费者Consumer:
依赖同服务者相同。
项目结构如下:
配置文件application.properties:
## 避免和 server 工程端口冲突 server.port=8081 ## Dubbo 服务消费者配置 spring.dubbo.application.name=consumer spring.dubbo.registry.address=zookeeper://127.0.0.1:2181 spring.dubbo.scan=dubbodemo.service
MyCityServiceImpl.java:
@Component public class MyCityServiceImpl implements MyCityService{ @Reference(version = "1.0.0") private CityService cityService; public void printCity() { String cityName="温岭"; City city = cityService.findCityByName(cityName); System.out.println(city.toString()); } }本例中,服务的作用简单来说,就是远程实例化cityService这个bean,让他调用的方法如同在本地调用一样。所以在配置文件中扫描dubbodemo.service包,其实扫描dubbodemo.serviceimpl也可以,但我不知为什么。。。
两个项目中CityService.java,即注册和消费的服务的类的相对路径必须相同,这是由于Spring的自动注入导致的,如果不同则需要手动配置r
4000
eferences。
启动类Application.java:
@SpringBootApplication public class Application { public static void main(String[] args) { // 程序启动入口 // 启动嵌入式的 Tomcat 并初始化 Spring 环境及其各 Spring 组件 ConfigurableApplicationContext run=SpringApplication.run(Application.class,args); MyCityService cityService = run.getBean(MyCityServiceImpl.class); cityService.printCity(); } }启动之后,发现City{id=1, provinceId=2, cityName='温岭', description='是我的故乡'}这么条输出语句,说明消费了该项服务。
这时候可以看看监控。
当服务者断开后,因为是单点模式,消费者立刻接收到消息:
而当消费者重启之后,监控中可以看到消费记录多了一条(consumers目录下):
当然,由于超时的原因,可能这条记录过一会就消失了。但这也不失为可以监控的一个点~~
有点头昏,感觉写的不是很好,将就下吧。最后附上demo文件:
下载地址
相关文章推荐
- Springboot 整合 Dubbo/ZooKeeper 详解 SOA 案例
- Springboot Dubbo ZooKeeper整合
- spring boot+dubbo+zookeeper(SOA详细整合)
- dubbo+zookeeper+spring整合(注解式demo)
- Springboot 整合 Dubbo/ZooKeeper 详解 SOA 案例
- springboot整合dubbo(注册中心zookeeper)无xml
- Springboot 整合 Dubbo/ZooKeeper 详解 SOA 案例
- Spring Boot整合Dubbo框架demo
- Spring Boot整合Dubbo框架demo
- 用springBoot与dubbo、 zookeeper、redis整合做了一个弹幕网站
- Springboot 整合 Dubbo/ZooKeeper 详解 SOA 案例
- Springboot 整合 Dubbo/ZooKeeper 详解 SOA 案例
- Dubbo+Zookeeper+Spring整合入门Demo
- Spring Boot整合Dubbo框架demo
- springboot 整合dubbo\zookeeper
- Springboot 整合 Dubbo/ZooKeeper 实现 SOA 案例解析
- Spring boot 整合dubbo+zookeeper
- 一个简单的Dubbo+Zookeeper+Spring整合Demo,附带源码
- Springboot 整合 Dubbo/ZooKeeper 详解 SOA 案例
- Springboot 整合 Dubbo/ZooKeeper 详解 SOA 案例