springboot搭建dubbo+zookeeper简单案例
背景:只是自己使用单机版zookeeper搭建dubbo的一个学习案例,记录成功的过程
1.搭建zookeeper坏境
使用docker来构建环境
1.1 拉取镜像:docker pull zookeeper:3.4
1.2 启动一个容器: docker run -d -v /home/docker/zookeeperhost/zookeeperDataDir:/data -v /home/docker/zookeeperhost/zookeeperDataLogDir:/datalog -e ZOO_MY_ID=1 -e ZOO_SERVERS='server.1=172.16.0.194:2888:3888' -p 2181:2181 -p 2888:2888 -p 3888:3888 --name zookeeper --privileged zookeeper
2. 创建接口项目,因为在服务方和消费方都要使用到这个接口,所以单独拿出来,就是一个简单的springboot项目,然后在里面写了个接口
2.创建服务提供方项目,一个springboot项目,然后pom文件中引入两个依赖,一个是dubbo的,一个是我们步骤一创建的接口项目
<?xml version="1.0" encoding="UTF-8"?>
<project xmlns="http://maven.apache.org/POM/4.0.0" xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"
xsi:schemaLocation="http://maven.apache.org/POM/4.0.0 https://maven.apache.org/xsd/maven-4.0.0.xsd">
<modelVersion>4.0.0</modelVersion>
<parent>
<groupId>org.springframework.boot</groupId>
<artifactId>spring-boot-starter-parent</artifactId>
<version>2.1.7.RELEASE</version>
<relativePath/> <!-- lookup parent from repository -->
</parent>
<groupId>com.example</groupId>
<artifactId>spring-dubbo-provider</artifactId>
<version>0.0.1-SNAPSHOT</version>
<name>spring-dubbo-provider</name>
<description>Demo project for Spring Boot</description> <properties>
<java.version>1.8</java.version>
</properties> <dependencies>
<dependency>
<groupId>org.springframework.boot</groupId>
<artifactId>spring-boot-starter-web</artifactId>
</dependency> <dependency>
<groupId>org.springframework.boot</groupId>
<artifactId>spring-boot-starter-test</artifactId>
<scope>test</scope>
</dependency> <dependency>
<groupId>com.alibaba.boot</groupId>
<artifactId>dubbo-spring-boot-starter</artifactId>
<version>0.2.0</version>
</dependency> <dependency>
<groupId>com.example</groupId>
<artifactId>spring-dubbo-api</artifactId>
<version>0.0.1-SNAPSHOT</version>
</dependency>
</dependencies> <build>
<plugins>
<plugin>
<groupId>org.springframework.boot</groupId>
<artifactId>spring-boot-maven-plugin</artifactId>
</plugin>
</plugins>
</build> </project>
接下来是properties文件中dubbo相关的配置:
server.port=8085 dubbo.application.name=dubbo-provider
dubbo.registry.address=zookeeper://172.16.0.194:2181
dubbo.protocol.name=dubbo
dubbo.protocol.threads=200
dubbo.protocol.port=20880
最后编写服务类:
package com.dubbo.provider.service; import com.alibaba.dubbo.config.annotation.Service;
import com.dubbo.api.HelloService; @Service(loadbalance="random", actives =0, retries=2, timeout=300,version="1.0.0",executes=200)
public class HelloServiceImpl implements HelloService{ @Override
public String hello(String str) {
System.out.println("str :" + str);
return "provider :" + str;
} }
注意:注解service为dubbo提供的,还要启动类上要加上@enableDubbo注解
3.创建consumer项目,也是一个带有web的springboot项目,pom配置文件和provider项目的pom文件一样
properties配置文件如下:
server.port=8084
#dubbo consumer
dubbo.application.name=dubbo-consumer
dubbo.registry.address=zookeeper://172.16.0.194:2181
dubbo.consumer.check=false
接下来是接口调用的编写:
package com.dubbo.consumer; import org.springframework.boot.SpringApplication;
import org.springframework.boot.autoconfigure.SpringBootApplication;
import org.springframework.web.bind.annotation.RequestMapping;
import org.springframework.web.bind.annotation.RestController; import com.alibaba.dubbo.config.annotation.Reference;
import com.alibaba.dubbo.config.spring.context.annotation.EnableDubbo;
import com.dubbo.api.HelloService; @SpringBootApplication
@EnableDubbo
@RestController
public class SpringDubboConsumerApplication { @Reference(version="1.0.0")//注意此处的version要和提供者接口的version对应
private HelloService helloService; public static void main(String[] args) {
SpringApplication.run(SpringDubboConsumerApplication.class, args);
} @RequestMapping("/consumer")
public Object consumer() {
return helloService.hello("consumer");
} }
注意需要在springboot启动类上加上@enablesDubbo的注解
4.访问consumer一下:
可以看到成功了。
提醒:关于dubbo的配置项建议对着dubbo的官方文档来写,地址:http://dubbo.apache.org/zh-cn/docs/user/recommend.html
关于配置调优,官方文档写的还是比较好的。
关于dubbo start,我发现有两个,一个是apach提供的,一个是ali提供的,我这里用的是阿里的,大家可以到maven中心仓库查看,
我也看到有很多的例子里面还引入了什么zookeeper依赖,还有什么zookepeer客户端依赖,其实在dubbo-spring-boot-starter里面
都已经包含了这些依赖,根本就不再需要另外引入这些额外的依赖了,做项目的小伙伴留意一下哦。
最后dubbo还提供了一个后台的功能,需要拉取响应的代码,我使用eclipse直接clone项目 地址是:https://github.com/apache/dubbo-admin.git
然后直接导入到eclipse中,使用maven打包dubbo-admin项目,最后再dubbo--admin的target目录下打开控制台,使用java -jar dubbo-admin-0.0.1-SNAPSHOT.jar 运行起来
然后访问:localhost:7001 输入用户名root,密码root就可以了
如下:
小提示:需要在 application.properties 修改你自己的dubbo的注册中心地址,默认的是本机的2181,如果你的dubbo不是跑在本机上,需要修改为你对应的地址
springboot搭建dubbo+zookeeper简单案例的更多相关文章
- springboot整合dubbo的简单案例
使用框架: jdk 1.8 springboot-2.1.3 dubbo-2.6 spring-data-jpa-2.1.5 一.开发dubbo服务接口: 按照Dubbo官方开发建议,创建一个接口项目 ...
- springboot整合dubbo+zookeeper最新详细
引入 最近和小伙伴做一个比赛,处于开发阶段,因为涉及的服务比较多,且服务需要分开部署在不同的服务器上,讨论之后,打算采用分布式来做,之前学习springboot的时候,部分章节涉及到了springbo ...
- Springboot 整合 Dubbo/ZooKeeper 详解 SOA 案例
摘要: 原创出处:www.bysocket.com 泥瓦匠BYSocket 希望转载,保留摘要,谢谢! “看看星空,会觉得自己很渺小,可能我们在宇宙中从来就是一个偶然.所以,无论什么事情,仔细想一 ...
- MAC环境下idea:maven+Spring+Dubbo+Zookeeper简单工程搭建
: 一:安装软件:tomcatZookeeperDubbo+admin 二:工程: 总工程 API Pom.xml:不用引用任何东西 Provider Pom.xml:要denpend ...
- springboot整合dubbo\zookeeper做注册中心
springboot整合dubbo发布服务,zookeeper做注册中心.前期的安装zookeeper以及启动zookeeper集群就不说了. dubbo-admin-2.5.4.war:dubbo服 ...
- Java代码搭建Dubbo+ZooKeeper 的示例
.personSunflowerP { background: rgba(51, 153, 0, 0.66); border-bottom: 1px solid rgba(0, 102, 0, 1); ...
- Dubbo + Zookeeper 简单配置
Dubbo + Zookeeper Zookeeper 下载及配置 下载到本机/usr/local目录 wget https://mirrors.tuna.tsinghua.edu.cn/apache ...
- dubbo+zookeeper简单环境搭建
dubbo+zoopeeper例子 [TOC] 标签(空格分隔): 分布式 dubbo dubbo相关 dubbo是目前国内比较流行的一种分布式服务治理方案.还有一种就是esb了.一般采用的是基于Ap ...
- SpringBoot分布式 - Dubbo+ZooKeeper
一:介绍 ZooKeeper是一个分布式的,开放源码的分布式应用程序协调服务.它是一个为分布式应用提供一致性服务的软件,提供的功能包括:配置维护.域名服务.分布式同步.组服务等. Dubbo是Alib ...
随机推荐
- <Random> 380 381(hard) 138
380. Insert Delete GetRandom O(1) class RandomizedSet { ArrayList<Integer> nums; HashMap<In ...
- 详解 ASP.NET Core MVC 的设计模式
MVC 是什么?它是如何工作的?我们来解剖它 在本节课中我们要讨论的内容: 什么是 MVC? 它是如何工作的? 什么是 MVC MVC 由三个基本部分组成 - 模型(Model),视图(View)和控 ...
- 测开面试 | Python常问算法
1.排序 从小到大排序:sorted(list) 从大到小排序:sorted(list, reverse=True) sort() 方法,改变原有数组的顺序 sort(reverse=True) #! ...
- 推荐一款手机清理工具App悟空清理
推荐一款手机清理工具App悟空清理 1 介绍 悟空清理是一款完全免费的手机加速与存储空间清理工具软件,强力去除顽固垃圾,使手机运行更畅快. 2 特色功能介绍 悟空在手,清理无忧!悟空清理,人人都在用的 ...
- 实战django(一)--(你也能看懂的)注册与登录(带前端模板)
先是具体目录:(主要是注意templates和static的位置),其中person文件夹是上一期实战的,不用理会,login是本节实战app 项目urls.py from django.contri ...
- com.sun.jdi.InvocationException occurred invoking
调试时候出现com.sun.jdi.InvocationException occurred invoking method 原因:因为hibernate的延迟加载引起 修改:修改hbm映射文件的对象 ...
- Leetcode 344:Reverse String 反转字符串(python、java)
Leetcode 344:Reverse String 反转字符串 公众号:爱写bug Write a function that reverses a string. The input strin ...
- 【转帖】修改Windows网卡的MTU
修改Windows网卡的MTU https://blog.csdn.net/sunny05296/article/details/103438653 原创sunny05296 发布于2019-12-0 ...
- springboot指定注解扫描范围
springboot注解扫描范围是由@ComponentScan指定的;默认情况下为启动程序所在目录及其子包; 如果需要指定扫描路径,在启动程序中添加修改 @ComponentScan(basePac ...
- 简要介绍Active Learning(主动学习)思想框架,以及从IF(isolation forest)衍生出来的算法:FBIF(Feedback-Guided Anomaly Discovery)
1. 引言 本文所讨论的内容为笔者对外文文献的翻译,并加入了笔者自己的理解和总结,文中涉及到的原始外文论文和相关学习链接我会放在reference里,另外,推荐读者朋友购买 Stephen Boyd的 ...