内容简介:搭建一个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鱼书项目实战二
本站部分资源来源于网络,本站转载出于传递更多信息之目的,版权归原作者或者来源机构所有,如转载稿涉及版权问题,请联系我们。
Data Structures and Algorithms in Java
Robert Lafore / Sams / 2002-11-06 / USD 64.99
Data Structures and Algorithms in Java, Second Edition is designed to be easy to read and understand although the topic itself is complicated. Algorithms are the procedures that software programs use......一起来看看 《Data Structures and Algorithms in Java》 这本书的介绍吧!