背景:只是自己使用单机版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简单案例的更多相关文章

  1. springboot整合dubbo的简单案例

    使用框架: jdk 1.8 springboot-2.1.3 dubbo-2.6 spring-data-jpa-2.1.5 一.开发dubbo服务接口: 按照Dubbo官方开发建议,创建一个接口项目 ...

  2. springboot整合dubbo+zookeeper最新详细

    引入 最近和小伙伴做一个比赛,处于开发阶段,因为涉及的服务比较多,且服务需要分开部署在不同的服务器上,讨论之后,打算采用分布式来做,之前学习springboot的时候,部分章节涉及到了springbo ...

  3. Springboot 整合 Dubbo/ZooKeeper 详解 SOA 案例

    摘要: 原创出处:www.bysocket.com 泥瓦匠BYSocket 希望转载,保留摘要,谢谢!   “看看星空,会觉得自己很渺小,可能我们在宇宙中从来就是一个偶然.所以,无论什么事情,仔细想一 ...

  4. MAC环境下idea:maven+Spring+Dubbo+Zookeeper简单工程搭建

    : 一:安装软件:tomcatZookeeperDubbo+admin 二:工程: 总工程  API    Pom.xml:不用引用任何东西  Provider    Pom.xml:要denpend ...

  5. springboot整合dubbo\zookeeper做注册中心

    springboot整合dubbo发布服务,zookeeper做注册中心.前期的安装zookeeper以及启动zookeeper集群就不说了. dubbo-admin-2.5.4.war:dubbo服 ...

  6. Java代码搭建Dubbo+ZooKeeper 的示例

    .personSunflowerP { background: rgba(51, 153, 0, 0.66); border-bottom: 1px solid rgba(0, 102, 0, 1); ...

  7. Dubbo + Zookeeper 简单配置

    Dubbo + Zookeeper Zookeeper 下载及配置 下载到本机/usr/local目录 wget https://mirrors.tuna.tsinghua.edu.cn/apache ...

  8. dubbo+zookeeper简单环境搭建

    dubbo+zoopeeper例子 [TOC] 标签(空格分隔): 分布式 dubbo dubbo相关 dubbo是目前国内比较流行的一种分布式服务治理方案.还有一种就是esb了.一般采用的是基于Ap ...

  9. SpringBoot分布式 - Dubbo+ZooKeeper

    一:介绍 ZooKeeper是一个分布式的,开放源码的分布式应用程序协调服务.它是一个为分布式应用提供一致性服务的软件,提供的功能包括:配置维护.域名服务.分布式同步.组服务等. Dubbo是Alib ...

随机推荐

  1. Python DataFrame 按条件筛选数据

    原始数据如下. 比如我想查看id等于11396的数据. pdata1[pdata1['id']==11396] 查看时间time小于25320的数据. pdata1[pdata1['time']< ...

  2. 各大开源rpc 框架 比较

    各大开源rpc 框架 比较   1. 前言 随着现在互联网行业的发展,越来越多的框架.中间件.容器等开源技术不断地涌现,更好地来服务于业务,解决实现业务的问题.然而面对众多的技术选择,我们要如何甄别出 ...

  3. Codeforces Round #549 (Div. 2) E 倍增处理按排列顺序的上一个位置

    https://codeforces.com/contest/1143/problem/E 题意 p为n的一个排列,给出有m个数字的数组a,q次询问,每次询问a数组区间[l,r]中是否存在子序列为p的 ...

  4. 可以在shell脚本中使用哪些类型的变量?

    在shell脚本,我们可以使用两种类型的变量: 系统定义变量 用户定义变量 系统变量是由系统系统自己创建的.这些变量通常由大写字母组成,可以通过“set”命令查看. 用户变量由系统用户来生成和定义,变 ...

  5. oracle-DBlink基本操作

    01,查询 查询DBLINK信息 select * from dba_db_links; select owner,object_name from dba_objects where object_ ...

  6. Java 并发编程-不懂原理多吃亏(送书福利)

    作者 | 加多 关注阿里巴巴云原生公众号,后台回复关键字"并发",即可参与送书抽奖!** 导读:并发编程与 Java 中其他知识点相比较而言学习门槛较高,从而导致很多人望而却步.但 ...

  7. 洛谷疯狂coding~

    1.关于数学建模思想在coding之中的应用. 将马路作为一条数轴,每棵树的位置作为数轴上的坐标点,再将坐标点与数组的下标联系到一起,完成建模. 2.本题坑点在于对“其中有多少个数,恰好等于集合中另外 ...

  8. 『快乐链覆盖 树形dp』

    快乐链覆盖 Description 给定一棵 n 个点的树,你需要找至多 k 条互不相交的路径,使得它们的长度之和最大 定义两条路径是相交的:当且仅当存在至少一个点,使得这个点在两条路径中都出现 定义 ...

  9. Java8 Lamda的基本使用

    Lamda的基本使用 https://www.cnblogs.com/htyj/p/10133883.html https://segmentfault.com/q/1010000011200292 ...

  10. Visual Studio 2019 正式版今日发布 key

     Visual Studio 2019 EnterpriseBF8Y8-GN2QH-T84XB-QVY3B-RC4DFVisual Studio 2019 ProfessionalNYWVH-HT4X ...