首页 > 其他分享 >Spingboot整合Dubbo+zookeeper

Spingboot整合Dubbo+zookeeper

时间:2023-12-26 20:22:57浏览次数:28  
标签:Dubbo java Spingboot dubbo zookeeper springframework org import

前言:

2023-12-26 19:38:05

最近学习分布式技术:Dubbo+zookeeper,准备写一个demo用springboot整合dubbo和zookeeper。但是看了网上一些教程都是几年前的,试着跟着写了几个demo没一个跑起来,基本是maven依赖方面的问题。

版本信息:

springboot:2.7.6
Dubbo:2.7.3
zookeeper:3.8.0
jdk:1.8
idea:2021.3.2

Maven坐标:

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

        <dependency>
            <groupId>org.projectlombok</groupId>
            <artifactId>lombok</artifactId>
            <optional>true</optional>
        </dependency>
    
        <dependency>
            <groupId>org.springframework.boot</groupId>
            <artifactId>spring-boot-starter-test</artifactId>
            <scope>test</scope>
        </dependency>
    
        <dependency>
            <groupId>org.apache.dubbo</groupId>
            <artifactId>dubbo-spring-boot-starter</artifactId>
            <version>2.7.3</version>
        </dependency>

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

        <dependency>
            <groupId>org.apache.curator</groupId>
            <artifactId>curator-framework</artifactId>
            <version>2.12.0</version>
        </dependency>

        <dependency>
            <groupId>org.apache.curator</groupId>
            <artifactId>curator-recipes</artifactId>
            <version>2.8.0</version>
        </dependency>
    
        <dependency>
            <groupId>org.apache.zookeeper</groupId>
            <artifactId>zookeeper</artifactId>
            <version>3.4.14</version>
            <exclusions>
                <exclusion>
                    <groupId>org.slf4j</groupId>
                    <artifactId>slf4j-log4j12</artifactId>
                </exclusion>
            </exclusions>
        </dependency>
    </dependencies>

Demo项目:

项目准备:

1、点击创建一个springboot项目

2、勾选web和lombok

3、创建

4、修改IDEA的Maven配置

5、刷新Maven

6、运行测试

7、修改pom配置文件

8、刷新maven

项目结构:

src:
├─main
│ ├─java
│ │ └─com
│ │ └─example
│ │ └─dubbo
│ │ │ DubboApplication.java
│ │ │ TimeService.java
│ │ │
│ │ ├─consumer
│ │ │ │ ConsumerApplication.java
│ │ │ │
│ │ │ └─controller
│ │ │ indexController.java
│ │ │
│ │ └─provider
│ │ │ ProviderApplication.java
│ │ │
│ │ └─impl
│ │ TimeServiceImpl.java
│ │
│ └─resources
│ │ application-consumer.properties
│ │ application-provider.properties
│ │ application.properties
│ │
│ ├─static
│ └─templates

生产者:

ProviderApplication.java

import org.apache.dubbo.config.spring.context.annotation.EnableDubbo;
import org.springframework.boot.SpringApplication;
import org.springframework.boot.autoconfigure.SpringBootApplication;

@SpringBootApplication
@EnableDubbo
public class ProviderApplication {
    public static void main(String[] args) {
        SpringApplication.run(ProviderApplication.class,args);
    }
}

TimeServiceImpl.java


import com.example.dubbo.TimeService;
import org.apache.dubbo.config.annotation.Service;


@Service //注意引入的是dubbo包下的Service
public class TimeServiceImpl implements TimeService {

    @Override
    public String getTime() {
        System.out.println("provider被调用啦!");
        return "Hello,Dubbo!";
    }
}

注意要将ProviderApplication.java的运行配置文件改为provider!

application-provider.properties

server.port=8082
dubbo.application.name=provider-app

消费者:

ConsumerApplication.java

import com.example.dubbo.TimeService;
import org.springframework.boot.SpringApplication;
import org.springframework.boot.autoconfigure.SpringBootApplication;
import org.springframework.web.bind.annotation.GetMapping;
import org.springframework.web.bind.annotation.RestController;

import java.time.format.DateTimeFormatter;

@SpringBootApplication
public class ConsumerApplication {
    public static void main(String[] args) {
        SpringApplication.run(ConsumerApplication.class,args);
    }
}

indexController.java

import com.example.dubbo.TimeService;
import org.apache.dubbo.config.annotation.Reference;
import org.springframework.web.bind.annotation.GetMapping;
import org.springframework.web.bind.annotation.RestController;


@RestController
public class indexController {

    @Reference//Duboo包下的
    private TimeService timeService;

    @GetMapping("/")
    public String getTime(){
        System.out.println("consumer被调用啦!");
        return timeService.getTime();
    }
}

注意要将ConsumerApplication.java的运行配置文件改为consumer!

application-consumer.properties:

server.port=8081
dubbo.application.name=consumer-app

公共配置:

application.properties:

# 换成你自己zookeeper服务的地址
dubbo.registry.address=zookeeper://localhost:2181

启动:

依次启动zookeeper、ProviderApplication.java、ConsumerApplication.java

项目地址:

百度网盘:https://pan.baidu.com/s/1dyxzUGJaiQUF0ibXGKBITA
提取码:ex2s

gitee:https://gitee.com/qinglianguzhou/dbuuo-demo.git

标签:Dubbo,java,Spingboot,dubbo,zookeeper,springframework,org,import
From: https://www.cnblogs.com/CooperCode/p/17929281.html

相关文章

  • SpringCloud与Dubbo的区别(九)
    前言参看链接:https://blog.csdn.net/huangtenglong/article/details/131144602一、SpringCloud与Dubbo的区别初始定位不同:SpringCloud定位为微服务架构下的一站式解决方案;Dubbo是SOA时代的产物,它的关注点主要在于服务的调用和治理生态环境不同:SpringCloud依托于Spring平台,具......
  • APISIX dubbo-proxy 实战
    APISIXAPISIX声称支持DubboProxy实践主要是APISIX官方网站上的这篇博客写的问题很大。博客上写的HTTP2DubboService实现类@ComponentpublicclassHTTP2DubboServiceImplimplementsHTTP2DubboService{@AutowiredprivateApplicationContextappContext......
  • jdk和dubbo的SPI机制
    jdk和dubbo的SPI机制转载自:https://www.cnblogs.com/wyq178/p/12171881.html前言:开闭原则一直是软件开发领域中所追求的,开闭原则中的"开"是指对于组件功能的扩展是开放的,是允许对其进行功能扩展的,“闭”,是指对于原有代码的修改是封闭的,即不应该修改原有的代码。对......
  • Linux Zookeeper在Docker 安装与简单通信
    一、在本地计算机上安装Docker1.安装Docker(安装最新的Docker版本)yuminstalldocker-cedocker-ce-clicontainerd.iodocker-bulidx-plugindocker-compose-plugin2.查看Docker版本并启动Dockerdockerversion安装成功的Docker版本为24.0.6systemctlstartdockerDock......
  • Dubbo本地调试方法
    方法一:用版本号来区分比如,开发环境上跑的服务版本是1.0.0,那么为了在本地打断点调试某个服务,可以在本地启动,将version设置为2.0.0服务提供者@DubboService(version="2.0.0")publicclassDemoServiceImplimplementsDemoService{@OverridepublicStringsayHello......
  • dubbo服务环境隔离
    环境背景dubbo(版本:2.7.22)服务注册在zookeeper,目前只部署一套zookeeper的前提下,需要部署多套系统,但是多套系统之间的dubbo服务需要隔离备选方案 dubbo直连dubbo服务消费者,在注入的提供者api上添加:@DubboReference(version="1.0.0", url="dubbo://ip:port/com.xxx.xxx......
  • Zookeeper-快速入门、服务搭建、集群搭建教程
    官网:https://zookeeper.apache.org/zookeeper常用用途:集群管理,zookeeper作为注册中心,管理服务提供方的ip地址端口号url信息,并在服务消费方请求需要时发送给服务消费方。配置中心(不过一般用阿波罗apollo或者阿里的Nacos来做)多个app中的配置是从zookeeper中拉取配置,而不是一个......
  • DataSophon更换zookeeper版本
    DataSophon更换zookeeper版本平台默认集成的zookeeper版本为:zookeeper-3.5.10.tar.gz更换为:zookeeper-3.8.0.tar.gz下载地址:https://archive.apache.org/dist/zookeeper/zookeeper-3.8.0/apache-zookeeper-3.8.0-bin.tar.gz修改服务service_ddl.json配置{"name":"ZOOKEE......
  • 《Java架构师的第一性原理》31分布式计算之微服务RPC(Dubbo)
    1 互联网架构,究竟为啥要做服务化互联网架构,究竟为啥要做服务化?2 微服务架构,多“微”才合适?微服务架构,多“微”才合适? 3 离不开的微服务架构,脱不开的RPC细节离不开的微服务架构,脱不开的RPC细节3.1服务化解决的问题1)服务化需要解决的问题:一套序列化、反序列化、网络框......
  • 《Java架构师的第一性原理》32分布式计算之分布式锁(Redis、Zookeeper)
    1 这才是真正的分布式锁技术领域,我觉得了解来龙去脉,了解本质原理,比用什么工具实现更重要:(1)进程多线程如何互斥?(2)一个手机上两个APP访问一个文件如何互斥?(3)分布式环境下多个服务访问一个资源如何互斥?归根结底,是利用一个互斥才能访问的公共资源来实现分布式锁,具体这个公共资源是r......