背景:只是自己使用单机版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. CSS制作导航栏

    最终效果: 代码: <!DOCTYPE html> <html> <head> <title>#练习册二</title> <style ...

  2. flutter:Could not download kotlin-gradle-plugin.jar

    我们可以看到是flutter的外部依赖:kotlin-gradle-plugin-1.2.71 下载不了,下面我介绍使用手动下载的方式去解决: 首先,看到flutter项目目录,注意我标出的是运行项目 ...

  3. 4.Vue双向绑定

    1.什么是双向数据绑定 Vue.js 是一个 MVVM 框架,即数据双向绑定,即当数据发生变化的时候,视图也就发生变化,当视图发生变化的时候,数据也会跟着同步变化.这也算是 Vue.js 的精髓之处了 ...

  4. Vue实际中的应用开发【分页效果与购物车】

    作者 | Jeskson 来源 | 达达前端小酒馆 分页组件 首先来创建项目: 分页组件,做项目不要写动手写代码,要想想业务逻辑,怎么写,如何写才是最好的呈现方式,做项目不急,要先想好整体的框架,从底 ...

  5. [LeetCode] 780. Reaching Points 到达指定点

    A move consists of taking a point (x, y) and transforming it to either (x, x+y) or (x+y, y). Given a ...

  6. [LeetCode] 406. Queue Reconstruction by Height 根据高度重建队列

    Suppose you have a random list of people standing in a queue. Each person is described by a pair of ...

  7. 配置中心Apollo实战

    Apollo(阿波罗)是携程框架部门研发的分布式配置中心,能够集中化管理应用不同环境.不同集群的配置,配置修改后能够实时推送到应用端,并且具备规范的权限.流程治理等特性,适用于微服务配置管理场景. 服 ...

  8. Django初见

    什么市WEB应用? 所谓的web应用就是我们基于浏览器打开的一个个网页(对应网址得到的内容) 软件开发架构 C/S架构: 客户端/服务端 B/S架构:浏览器/服务器 所有的B/S架构本质上就是C/S架 ...

  9. 【网络知识之二】HTTP协议

    HTTP协议(Hypertext Transfer Protocol,超文本传输协议),一种无状态的.应用层的.以请求/应答方式运行的协议,它使用可扩展的语义和自描述消息格式,与基于网络的超文本信息系 ...

  10. Azure DevOps Server 经验分享(国内重型工程公司)

    受邀在上海为国内著名的重型工程公司的软件研发团队分享了Azure DevOps Server 的经验. http://www.cnblogs.com/danzhang/  DevOps MVP 张洪君 ...