背景:只是自己使用单机版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. Associatively Segmenting Instances and Semantics in Point Clouds

    论文引入一个简单且灵活的框架同时分割点云中的实例和语义,进一步提出两种方法让两个任务从彼此受益. 代码: https://github.com/WXinlong/ASIS 论文: https://ar ...

  2. Ubuntu16.04安装deb包

    在Ubuntu下安装deb包需要使用dpkg命令.Dpkg 的普通用法: 1.sudo dpkg -i <package.deb> 安装一个 Debian 软件包,如你手动下载的文件. 2 ...

  3. 【java】@SuppressWarnings

    作用:用于抑制编译器产生警告信息. 示例1——抑制单类型的警告: 示例2——抑制多类型的警告: 示例3——抑制所有类型的警告: 三.注解目标 通过 @SuppressWarnings 的源码可知,其注 ...

  4. Linux学习笔记-第6天 - 问题的根本

    这些知识其实看起来很简单,之前不管是在学习C语言还是bat批处理,类似结构早已熟知. 但其实运用起来并不算好,可能真正的原因还 是在于得多练习吧.希望明年的今天自己不要再纠结与这些基础性的知识.

  5. 数据结构——顺序队列(sequence queue)

    /* sequenceQueue.c */ /* 顺序队列 */ #include <stdio.h> #include <stdlib.h> #include <std ...

  6. ASP.NET Core 中的 Main 方法

    ASP.NET Core 中的 Main 方法 在 ASP.NET Core 项目中,我们有一个名为Program.cs的文件.在这个文件中,我们有一个public static void Main( ...

  7. [LeetCode] 828. Unique Letter String 独特字符串

    A character is unique in string S if it occurs exactly once in it. For example, in string S = " ...

  8. 文件夹如何添加备注(保证可以WIN7 WIN10测试通过)

    网上很多方法都有人说试过了,不可以.其实不是不可以,他们都没有说完整 今天自己弄了下,弄出来了,废话不多说先上图 如果需要用备注排序,那么就需要把排序的选项加上备注的分类 1.获得desktop.in ...

  9. java web开发入门十二(idea创建maven SSM项目需要解决的问题)基于intellig idea(2019-11-09 11:23)

    一.spring mvc action返回string带双引号问题 解决方法: 在springmvc.xml中添加字符串解析器 <!-- 注册string和json解析适配器 --> &l ...

  10. c#中怎样取得某坐标点的颜色

    // x,y 分别为x轴,y轴坐标 返回System.Drawing.Color 可以直接显示 public System.Drawing.Color GetPixelColor(int x, int ...