内容简介:搭建一个SpringBoot+Dubbo+zookeeper的demo完整代码见:搭建 zookeeper 之前要确保当前的服务器已经有 JDK 环境。
前言
搭建一个SpringBoot+Dubbo+zookeeper的demo
完整代码见: github.com/Caizhenhao/…
1. 安装zookeeper环境
搭建 zookeeper 之前要确保当前的服务器已经有 JDK 环境。
我使用的是阿里云服务器
注意:如果你也使用的是云服务器必须配置一个安全组,开放你的zookeeper端口。
1.1 首先下载zookeeper的安装包
自行去网上下载zookeeper的安装包后在服务器上解压
1.2 解压
tar -zxvf zookeeper-3.4.11.tar.gz复制代码
解压完毕之后修改一下解压之后所得的文件夹名
mv zookeeper-3.4.11 zookeeper复制代码
删除 zookeeper 安装包
rm -rf zookeeper-3.4.11.tar.gz复制代码
1.3 进入zookeeper目录,创建data文件夹。
mkdir data复制代码
进入 data 文件夹 然后执行pwd命令,复制所得的当前目录位置
1.4 进入/zookeeper/conf目录下,复制zoo_sample.cfg,命名为zoo.cfg
cp zoo_sample.cfg zoo.cfg复制代码
1.5 修改配置文件
使用 vim zoo.cfg
命令修改配置文件
修改配置文件中的 dataDir 属性:
dataDir=/usr/local/zookeeper/data复制代码
1.6 启动测试
进入 /zookeeper/bin 目录然后执行下面的命令启动zookeeper
./zkServer.sh start复制代码
查看当前 zookeeper 状态
./zkServer.sh status复制代码
或者运行 netstat -lntup 命令查看网络状态,可以看到 zookeeper 的端口号 2181 已经被占用
到这里zookeeper的环境就搭建完成了,开始搭建项目
2. 开始搭建项目
项目我这里采用maven搭建,使用springboot+dubbo+zookeeper
项目分成三个模块
三个模块的功能:
- dubbo-api 服务提供者的接口
- dubbo-provider 服务提供者
- dubbo-consumer 服务消费者
关键依赖
<dependency> <groupId>com.alibaba.spring.boot</groupId> <artifactId>dubbo-spring-boot-starter</artifactId> <version>2.0.0</version> </dependency>复制代码
3. dubbo-api
抽象服务提供者的接口供服务消费者调用
package com.czh.provider.dubboprovider.serviceImpl.service; public interface HelloService { String sayHello(String name); }复制代码
4. dubbo-provider
主要分为下面几步:
- 创建 springboot 项目;
- 加入接口的相关依赖 jar 包;
- 在 application.properties 配置文件中配置 dubbo 相关信息;
- 实现接口类;
- 服务提供者启动类编写
项目结构:
4.1 dubbo-provider 项目创建
创建一个 SpringBoot 项目,注意勾选上 web 模块。
4.2 pom 文件引入相关依赖
需要引入接口的相关依赖 jar 包。注意将本项目和 dubbo-api 项目的 dependency 依赖的 groupId 和 artifactId 改成自己的。
<dependencies> <dependency> <groupId>com.czh.api</groupId> <artifactId>dubbo-api</artifactId> <version>0.0.1-SNAPSHOT</version> </dependency> </dependencies>复制代码
4.3 在 application.properties 配置文件中配置 dubbo 相关信息
配置很简单,这主要得益于 dubbo 的@EnableDubbo注解。详情可以参考dubbo官方说明 dubbo.apache.org/zh-cn/blog/…
# 配置端口 spring.application.name = dubbo-provider server.port = 9090 #指定当前服务/应用的名字(同样的服务名字相同,不要和别的服务同名) dubbo.application.name = dubbo-provider demo.service.version = 1.0.0 dubbo.protocol.name = dubbo dubbo.protocol.port = 20880 #指定注册中心的位置 dubbo.registry.address = zookeeper://ip:2181 #统一设置服务提供方的规则 dubbo.provider.timeout = 1000复制代码
4.4 实现接口
注意: @Service 注解使用的时 Dubbo 提供的而不是 Spring 提供的。
服务提供者,包含真正的服务实现代码
package com.czh.provider.dubboprovider.serviceImpl; import com.alibaba.dubbo.config.annotation.Service; import com.czh.provider.dubboprovider.serviceImpl.service.HelloService; @Service(version = "${demo.service.version}") public class HelloServiceImpl implements HelloService { @Override public String sayHello(String name) { return "Hello " + name + ",This is springboot-dubbo test"; } }复制代码
4.5 服务提供者启动类编写
注意:不要忘记加上 @EnableDubbo 注解开启Dubbo 的自动配置。
package com.czh.provider; import com.alibaba.dubbo.config.spring.context.annotation.EnableDubbo; import org.springframework.boot.SpringApplication; import org.springframework.boot.autoconfigure.SpringBootApplication; @SpringBootApplication @EnableDubbo public class DubboProviderApplication { public static void main(String[] args) { SpringApplication.run(DubboProviderApplication.class, args); } } 复制代码
5. dubbo-consumer
主要分为下面几步:
- 创建 springboot 项目;
- 加入接口的相关依赖 jar 包;
- 在 application.properties 配置文件中配置 dubbo 相关信息;
- 服务消费者调用接口编写
- 服务消费者启动类编写
项目结构:
前两步与之前的服务提供者一样,这里我直接从第三步开始说起
5.3 在 application.properties 配置文件中配置 dubbo 相关信息
与服务提供者基本一致
spring.application.name = dubbo-consumer server.port = 9091 #指定当前服务/应用的名字(同样的服务名字相同,不要和别的服务同名) dubbo.application.name = dubbo-consumer demo.service.version = 1.0.0 dubbo.protocol.name = dubbo dubbo.protocol.port = 20880 #指定注册中心的位置 dubbo.registry.address = zookeeper://ip:2181 #统一设置服务提供方的规则 dubbo.consumer.timeout = 5000复制代码
5.4 编写一个简单的Controller调用远程服务
package com.czh.consumer.controller; import com.alibaba.dubbo.config.annotation.Reference; import com.czh.api.service.HelloService; import org.springframework.web.bind.annotation.PathVariable; import org.springframework.web.bind.annotation.RequestMapping; import org.springframework.web.bind.annotation.RestController; @RestController public class HelloConsumerController { @Reference(version = "${demo.service.version}") private HelloService helloService; @RequestMapping("/sayHello/{name}") public String sayHello(@PathVariable("name") String name) { return helloService.sayHello(name); } }复制代码
5.5 服务消费者启动类编写
package com.czh.consumer; import com.alibaba.dubbo.config.spring.context.annotation.EnableDubbo; import org.springframework.boot.SpringApplication; import org.springframework.boot.autoconfigure.SpringBootApplication; @SpringBootApplication @EnableDubbo public class DubboConsumerApplication { public static void main(String[] args) { SpringApplication.run(DubboConsumerApplication.class, args); } } 复制代码
6. 测试结果
可以看到消费者调用服务提供者正常
查看zookeeper下发现有我们注册的服务节点
7. 小结
使用springboot+dubbo+zookeeper进行搭建 dubbo 的项目应该说是比较简单的,官方也有集成Springboot的依赖,这里就不多说了,实践出真知~
完整代码见: github.com/Caizhenhao/…
以上就是本文的全部内容,希望对大家的学习有所帮助,也希望大家多多支持 码农网
猜你喜欢:- 「Flask实战」鱼书项目实战一
- 「Flask实战」鱼书项目实战三
- 「Flask实战」鱼书项目实战四
- 「Flask实战」鱼书项目实战六
- RocketMQ实战系列从理论到实战
- 「Flask实战」flask鱼书项目实战二
本站部分资源来源于网络,本站转载出于传递更多信息之目的,版权归原作者或者来源机构所有,如转载稿涉及版权问题,请联系我们。
Pro HTML5 and CSS3 Design Patterns
Michael Bowers / Apress / 2011-11-15 / GBP 35.50
Pro HTML5 and CSS3 Design Patterns is a reference book and a cookbook on how to style web pages using CSS3 and HTML5. It contains 350 ready--to--use patterns (CSS3 and HTML5 code snippets) that you ca......一起来看看 《Pro HTML5 and CSS3 Design Patterns》 这本书的介绍吧!