springboot整合dubbo和zookeeper

瘦头陀      2022-04-10     598

关键词:

Spring Boot 整合 Dubbo和Zookeeper

 

 

环境介绍

  • zookeeper 安装
  • dubbo-admin 查看管理注册中心服务提供者和消费者

Zookeeper 安装

http://zookeeper.apache.org/releases.html

下载最新安装包,文件格式是tar.gz,可见Apache还是推荐在Linux上使用,但也提供了在windows上使用的脚本。 
解压之后,修改数据和日志配置,注意在3.5.3版本上,conf文件夹里不在直接提供zoo.cfg,而是提供了一个example,zoo_sample.cfg。复制重命名为zoo.cfg,然后修改data位置新增log位置。注意,windows目录要用//分割。

dataDir=D:softwarezookeeper-3.5.3-betazookeeperdata
dataLogDir=D:softwarezookeeper-3.5.3-betazookeeperlog
  • 修改zkEnv.cmd 
    防止win10 闪退,注意双引号的位置
if not exist "%JAVA_HOME%inJava.exe"

set JAVA="%JAVA_HOME%injava"

 

启动

使用zkServer.cmd启动Zookeeper即可。注意Zookeeper是运行在8080端口,服务接口是2181

Dubbo admin 搭建

https://github.com/alibaba/dubbo

https://github.com/dangdangdotcom/dubbox

下载dubbo,执行

mvn install -D maven.test.skip=true

 

然后在dubbo-admin下执行

mvn package -D maven.skip.test=true

打war包,发布到tomcat下,注意修改tomcat端口8081

创建主maven项目

技术分享图片

pom.xml

<?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 http://maven.apache.org/xsd/maven-4.0.0.xsd">
    <modelVersion>4.0.0</modelVersion>

    <groupId>com.rencc.dubbo</groupId>
    <artifactId>dubbo-spring-study</artifactId>
    <version>0.0.1-SNAPSHOT</version>
    <packaging>pom</packaging>

    <modules>
        <module>dubbo-provider</module>
        <module>dubbo-consumer</module>
    </modules>

    <properties>
        <project.build.sourceEncoding>UTF-8</project.build.sourceEncoding>
        <java.version>1.8</java.version>
    </properties>

</project>

 

创建子spring boot项目

  • dubbo-provider 服务提供者

在application.properties 里设置端口,目前8080和8081已被使用

server.port=8090

 

添加dubbo的配置文件

<?xml version="1.0" encoding="UTF-8"?>
<beans xmlns="http://www.springframework.org/schema/beans"
    xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" xmlns:dubbo="http://code.alibabatech.com/schema/dubbo"
    xsi:schemaLocation="http://www.springframework.org/schema/beans
       http://www.springframework.org/schema/beans/spring-beans.xsd
       http://code.alibabatech.com/schema/dubbo
       http://code.alibabatech.com/schema/dubbo/dubbo.xsd">

    <!-- 配置可参考 http://dubbo.io/User+Guide-zh.htm -->
    <!-- 服务提供方应用名,用于计算依赖关系 -->
    <dubbo:application name="dubbo-provider" owner="dubbo-provider" />

    <!-- 定义 zookeeper 注册中心地址及协议 -->
    <dubbo:registry protocol="zookeeper" address="127.0.0.1:2181" client="zkclient" />

    <!-- 定义 Dubbo 协议名称及使用的端口,dubbo 协议缺省端口为 20880,如果配置为 -1 或者没有配置 port,则会分配一个没有被占用的端口 -->
    <dubbo:protocol name="dubbo" port="-1" />

    <!-- 声明需要暴露的服务接口 -->
    <dubbo:service interface="com.rencc.dubbo.provider.service.DemoService"
        ref="demoService" timeout="10000" />

    <!-- 和本地 bean 一样实现服务 -->
    <bean id="demoService" class="com.rencc.dubbo.provider.serviceImpl.DemoServiceImpl" />

</beans>

 

DemoService 接口和实现类

package com.rencc.dubbo.provider.service;

public interface DemoService {
    String sayHello(String name);
}





package com.rencc.dubbo.provider.serviceImpl;

import com.rencc.dubbo.provider.service.DemoService;

public class DemoServiceImpl implements DemoService {

    public String sayHello(String name) {
        return "Welcome to Dubbo, Hello " + name;
    }

}

 

pom.xml

<?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 http://maven.apache.org/xsd/maven-4.0.0.xsd">
    <modelVersion>4.0.0</modelVersion>

    <groupId>com.rencc.dubbo.provider</groupId>
    <artifactId>dubbo-provider</artifactId>
    <packaging>jar</packaging>

    <name>dubbo-provider</name>
    <description>Demo project for Spring Boot</description>

    <parent>  
        <groupId>com.rencc.dubbo</groupId>
        <artifactId>dubbo-spring-study</artifactId>
        <version>0.0.1-SNAPSHOT</version>
    </parent>

    <properties>
        <project.build.sourceEncoding>UTF-8</project.build.sourceEncoding>
        <project.reporting.outputEncoding>UTF-8</project.reporting.outputEncoding>
        <java.version>1.8</java.version>
    </properties>

    <dependencies>
        <dependency>
            <groupId>org.springframework.boot</groupId>
            <artifactId>spring-boot-starter-web</artifactId>
            <version>1.5.2.RELEASE</version>
        </dependency>

        <dependency>
            <groupId>org.springframework.boot</groupId>
            <artifactId>spring-boot-starter</artifactId>
            <version>1.5.2.RELEASE</version>
        </dependency>

        <dependency>
            <groupId>org.springframework.boot</groupId>
            <artifactId>spring-boot-starter-test</artifactId>
            <scope>test</scope>
            <version>1.5.2.RELEASE</version>
        </dependency>

        <dependency>
            <groupId>com.alibaba</groupId>
            <artifactId>dubbo</artifactId>
            <version>2.4.10</version>
            <exclusions>
                <exclusion>
                    <artifactId>spring</artifactId>
                    <groupId>org.springframework</groupId>
                </exclusion>
            </exclusions>
        </dependency>

        <dependency>
            <groupId>org.apache.zookeeper</groupId>
            <artifactId>zookeeper</artifactId>
            <version>3.4.6</version>
            <exclusions>
                <exclusion>
                    <artifactId>slf4j-log4j12</artifactId>
                    <groupId>org.slf4j</groupId>
                </exclusion>
            </exclusions>
        </dependency>

        <dependency>
            <groupId>com.github.sgroschupf</groupId>
            <artifactId>zkclient</artifactId>
            <version>0.1</version>
        </dependency>

    </dependencies>

    <build>
        <plugins>
            <plugin>
                <groupId>org.springframework.boot</groupId>
                <artifactId>spring-boot-maven-plugin</artifactId>
                <version>1.5.2.RELEASE</version>
            </plugin>
        </plugins>
    </build>


</project>
  • dubbo-consumer 服务消费者 
    在此仅贴出dubbo代码配置。
<?xml version="1.0" encoding="UTF-8"?>
<beans xmlns="http://www.springframework.org/schema/beans"
    xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" xmlns:dubbo="http://code.alibabatech.com/schema/dubbo"
    xsi:schemaLocation="http://www.springframework.org/schema/beans
       http://www.springframework.org/schema/beans/spring-beans.xsd
       http://code.alibabatech.com/schema/dubbo
       http://code.alibabatech.com/schema/dubbo/dubbo.xsd">

    <!-- 配置可参考 http://dubbo.io/User+Guide-zh.htm -->
    <!-- 消费方应用名,用于计算依赖关系,不是匹配条件,不要与提供方一样 -->
    <dubbo:application name="dubbo-consumer" owner="dubbo-consumer" />

    <!-- 定义 zookeeper 注册中心地址及协议 -->
    <dubbo:registry protocol="zookeeper" address="127.0.0.1:2181" client="zkclient" />

    <!-- 生成远程服务代理,可以和本地 bean 一样使用 testService -->
    <dubbo:reference id="demoService" interface="com.rencc.dubbo.provider.service.DemoService" />

</beans>



springboot整合dubbo+zookeeper

dockerpullzookeeperdockerrun--namezk01-p2181:2181--restartalways-d2e30cac00aca 表明zookeeper已成功启动 Zookeeper和Dubbo•ZooKeeperZooKeeper是一个分布式的,开放源码的分布式应用程序协调服务。它是一个为分布式应用提供一致性服务的软件,... 查看详情

springboot整合dubbo

SpringBoot整合Dubbo一、Dubbo  Dubbo是一款高性能、轻量级的开源JavaRPC框架,  它提供了三大核心能力:面向接口的远程方法调用,智能容错和负载均衡,以及服务自动注册和发现。    关键点介绍:  1.注册与发现  ... 查看详情

springboot整合dubbo+zookeeper——实现发布并访问远程服务

前言什么是Dubbo?——开源分布式服务框架Dubbo(读音[ˈdʌbəʊ])是阿里巴巴公司开源的一个高性能优秀的服务框架,使得应用可通过高性能的RPC实现服务的输出和输入功能,可以和Spring框架无缝集成。Dubbo是一款高性能、轻量级的... 查看详情

springboot初步整合dubbo+zookeeper项目

provider服务端application.properties配置server.port=8070spring.datasource.url=jdbc:mysql://127.0.0.1:3306/product?characterEncoding=UTF-8spring.datasource.username=rootspring.datasource.password=654321#驼峰标 查看详情

springboot整合dubbox与zookeeper

springboot中dubbo依赖的引入和配置(application.properties)参见:https://blog.csdn.net/wohaqiyi/article/details/72967805。需要注意的是在消费方工程里,controller包可以不必放到service包下(我认为也不应该),只要在application.properties里合理配置s... 查看详情

springboot和dubbo+zookeeper组合案例

SpringBoot融合了maven的特点,所以可以和maven完美整合接下来要做一个分布式项目,首先要有共享的接口先建一个maven项目 详情:UserAddress.javapackagecom.changping.bean;importjava.io.Serializable;publicclassUserAddressimplementsSerializable{ private 查看详情

《springboot+dubbo+zookeeper整合搭建简单的分布式应用》(代码片段)

为什么要使用分布式系统?容错减少延迟/提高性能可用性负载均衡总而言之,其实目的只有一个,”用户体验“。什么是分布式系统?分布式系统是由使用分发中间件连接的自治计算机组成的网络。它们有助于共享不同的资源... 查看详情

springboot整合dubbo(yml格式配置)

yml文件如果只作为服务的消费者不用暴露端口号,扫描的包名根据自己service改dubbo:application:name:springboot-dubbo-demo#应用名registry:address:zookeeper://127.0.0.1:2181#zookeeper地址#port:2181#提供注册的端口protocol:name:dubboport:"20889"#dubbo服 查看详情

duboo3.0+springboot+zookeeper整合例子(附源码)(代码片段)

dubbo整合SpringBoot例子dubbo新版本(3.0以上)在相对于dubbo旧版本(2.5、2.6、2.7),有很多的不相同的地方。官方文档也说了新版本的特性:https://dubbo.apache.org/zh/docs/v3.0/new-in-dubbo3本文就来使用dubbo新版本搭建... 查看详情

dubbo学习——springboot整合dubbo(代码片段)

...中获取到所有的提供者/消费者进行配置管理。Dubboadminisaspringbootapplicat 查看详情

dubbo学习——springboot整合dubbo(代码片段)

...中获取到所有的提供者/消费者进行配置管理。Dubboadminisaspringbootapplicat 查看详情

duboo3.0+springboot+zookeeper整合例子(附源码)(代码片段)

dubbo3.0整合SpringBoot例子dubbo新版本(3.0以上)在相对于dubbo旧版本(2.5、2.6、2.7),有很多的不相同的地方。官方文档也说了新版本的特性:https://dubbo.apache.org/zh/docs/v3.0/new-in-dubbo3本文就来使用dubbo3.0新版本... 查看详情

springboot2整合dubbox全注解

前题  dubbox是dubbo的一个升级版,简单说就是本来dubbo是阿里开发的,现在阿里不维护了,当当网拿过去继续开发。本来阿里的dubbo维护到2.6版本,而再高版本的都是当当网维护的就叫成dubbox了。  dubbo的机制是这样... 查看详情

2020最新ideaspringboot整合dubbo(zookeeper版)(代码片段)

2020最新IDEASpringBoot整合Dubbo(zookeeper版)首先,要在电脑上安装配置好zookeeper哦~这是我云服务器上的zookeeper状态接下来,开始整合1.准备一个dubbo-api的SpringBoot项目用来存储Entity类和Server接口的项目,配置文件无须改动。e... 查看详情

springboot与dubbo整合遇到的坑

整合环境:dubbo2.6.2springboot2.1.5遇到的问题:服务一直无法注册到zookeeper注册中心项目结构:使用application.properties文件:配置都没问题,启动的时候也没有明显的错误;然后就去百度看到大部分都是这种配置,之后在一篇博客中... 查看详情

springboot和dubbo整合

创建3个项目dubbo-api新建一个maven项目,这个项目只有接口(或实体类)dubbo-service和dubbo-web这两个依赖于dubbo-api<groupId>com.zhang</groupId><artifactId>dubbo-api</artifactId><version>1.0</version>& 查看详情

9.2springboot使用zookeeper和dubbo

一.项目搭建1.步骤建立一个空项目,添加两个springboot模块:provide-server和consumer-server 一个提供服务另一个消费服务(略)两个模块的pom.xml中都导入依赖编写provide-server代码编写consumer-server代码启动dubbo和zookeeper(略)启动prov... 查看详情

springboot整合dubbo+zookeeper实现分布式消费者与服务者的业务调用

📢📢📢📣📣📣哈喽!大家好,我是【Bug终结者】,【CSDN新星创作者】🏆,阿里云技术博主🏆,51CTO人气博主🏆,INfoQ写作专家🏆一位上进心十足 查看详情