springboot+Zookeeper+Dubbo入门

最近想学习dubbo,就利用周末写了一个特别简单的demo,不知道有没有用,先记录一下。

1、安装zookeeper并启动(安装看我上一篇博客https://www.cnblogs.com/huangzhang/p/9219319.html)

2、下载dubbo源码,安装dubbo-admin(安装看我之前的博客https://www.cnblogs.com/huangzhang/p/9219296.html)

这些准备工作做好之后开始写demo代码:

这里用的开发工具是Intellij IDEA,所以利用idea的智能生成一个spring boot项目,这里就不细说了。

搭建好spring boot项目之后,pom.xml文件中引入依赖

<!--引入dubbot-->
        <dependency>
            <groupId>com.alibaba</groupId>
            <artifactId>dubbo</artifactId>
            <version>2.5.10</version>
        </dependency>
        <!--引入zookeeper-->
        <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>
        <!--引入zookeeper客户端-->
        <dependency>
            <groupId>com.github.sgroschupf</groupId>
            <artifactId>zkclient</artifactId>
            <version>0.1</version>
        </dependency>

这里是生产者

写测试接口:

package com.example.demo01.service;
/**
 * @description 声明服务接口
 * @date 2018/06/23
 * @author huangzhang
 */
public interface DubboServiceProvider {
    //声明服务方法
    public String sayHello(String name);
}

实现该接口:

package com.example.demo01.service.Impl;

import com.example.demo01.service.DubboServiceProvider;
import org.springframework.stereotype.Component;

/**
 * @author huangzhang
 * @description
 * @date Created in 2018/6/23 18:13
 */
@Component("dubboServiceProvider")
public class DubboServiceProviderImpl implements DubboServiceProvider {
    @Override
    public String sayHello(String name) {
        return "------hello  " + name + "------";
    }
}

在resource目录下面加入一个dubbo.xml配置文件

<?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">
    <!--配置服务名称-->
    <dubbo:application name="dubboproviderhello" />
    <!--配置服务注册中心,dubbo不仅仅支持zookeeper-->
    <dubbo:registry address="zookeeper://127.0.0.1:2181" />
    <!--声明对外暴露的服务-->
    <dubbo:service interface="com.example.demo01.service.DubboServiceProvider" ref="dubboServiceProvider" />
    <bean id="demoService" class="com.example.demo01.service.Impl.DubboServiceProviderImpl"></bean>
</beans>

启动类加入注解:

package com.example.demo01;

import org.springframework.boot.SpringApplication;
import org.springframework.boot.autoconfigure.SpringBootApplication;
import org.springframework.context.annotation.ComponentScan;
import org.springframework.context.annotation.ImportResource;

@SpringBootApplication
@ImportResource("classpath:/dubbo.xml")
public class Demo01Application {

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

编写controller:

package com.example.demo01.controller;

import org.springframework.stereotype.Controller;
import org.springframework.web.bind.annotation.RequestMapping;
import org.springframework.web.bind.annotation.ResponseBody;

@Controller
public class HelloController {
    @RequestMapping("/index")
    @ResponseBody
    public String index(){
        return "hello world";
    }
}

这里项目默认端口是8080,zookeeper默认端口也是8080,所以到application.properties中配置端口

server.port: 8082

然后启动项目,Dubbo-admin管理平台中的注册列表中显示有一个生产者以注册,但是没有消费者,如下图

生产者完成了,然后就是消费者

搭建一个spring boot项目,pom.xml、启动类、service接口都跟生产这一样,在application.properties中配置端口8081

这里配置dubbo.xml的时候有点不一样,不用注入bean

<?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">
    <!--配置服务名称-->
    <dubbo:application name="dubboproviderhello" />
    <!--配置服务注册中心,dubbo不仅仅支持zookeeper-->
    <dubbo:registry address="zookeeper://127.0.0.1:2181" />
    <!--声明服务引用,与服务声明接口类型一致-->
    <dubbo:reference interface="com.example.demo01.service.DubboServiceProvider" id="dubboServiceProvider" />
</beans>

编写controller

import org.springframework.stereotype.Controller;
import org.springframework.web.bind.annotation.RequestMapping;
import org.springframework.web.bind.annotation.ResponseBody;

import javax.annotation.Resource;

/**
 * @author huangzhang
 * @description
 * @date Created in 2018/6/23 20:13
 */
@Controller
public class HelloController {
    @Resource
    private DubboServiceProvider dubboServiceProvider;
    @RequestMapping("/index")
    @ResponseBody
    public String index(){return dubboServiceProvider.sayHello("tom");
    }
}

之后Dubbo-admin管理平台就这样了,有了一个消费者

启动消费者,访问消费者提供的index接口,浏览器直接调用就可以了http://localhost:8081/index

这样一个简单的生产者-消费者demo就搭建完成了,这里消费者通过RPC调用了生产者在Dubbo-admin管理平台注册的服务接口。

原文地址:https://www.cnblogs.com/huangzhang/p/9226714.html

时间: 2024-10-12 06:13:31

springboot+Zookeeper+Dubbo入门的相关文章

IDEA上创建 Maven SpringBoot + zookeeper +dubbo 实例

概述 首先声明,本文是学习总结类型的博客内容,如有雷同纯属学习.本位主要结合zookeeper和dubbo做个简单实例.目前来说,一般网站架构随着业务的发展,逻辑越来越复杂,数据量越来越大,交互越来越多之后的常规方案演进历程. 其次,当服务越来越多之后,我们需要做哪些服务治理? Dubbo主要处理服务,约束服务提供者和消费者之间的关系.Dubbo处理消费者.提供者以及注册的关系如下: Zookeeper使用 ZooKeeper 虽然是一个针对分布式系统的协调服务,但它本身也是一个分布式应用程序.

springboot与dubbo整合入门(三种方式)

Springboot与Dubbo整合三种方式详解 整合环境: jdk:8.0 dubbo:2.6.2 springboot:2.1.5 项目结构: 1.搭建项目环境: (1)创建父项目与三个子项目,创建项目时,都使用spring initializr,创建时,父项目中注意的一点: (2)创建三个子项目,在已有的父项目上右键,新建模块: (3)创建完成后:将三个子项目在父项目pom.xml中配置: (4)修改所有子项目中的parent标签:(删掉之前parent中的springboot)修改为:

dubbo入门学习(三)-----dubbo整合springboot

springboot节省了大量的精力去配置各种bean,因此通过一个简单的demo来整合springboot与dubbo 一.创建boot-user-service-provider 本篇博文基于上篇中的dubbo项目,整体工程如下: 1.pom.xml <?xml version="1.0" encoding="UTF-8"?> <project xmlns="http://maven.apache.org/POM/4.0.0"

Springboot整合Dubbo和Zookeeper

Dubbo是一款由阿里巴巴开发的远程服务调用框架(RPC),其可以透明化的调用远程服务,就像调用本地服务一样简单.截至目前,Dubbo发布了基于Spring Boot构建的版本,版本号为0.2.0,这使得其与Spring Boot项目整合变得更为简单方便.而Zookeeper在这里充当的是服务注册中心的角色,我们将各个微服务提供的服务通过Dubbo注册到Zookeeper中,然后服务消费者通过Dubbo从Zookeeper中获取相应服务并消费.本文案例的架构图可以简单用下图表示: 本文案例最终项

springboot使用dubbo和zookeeper

2019-11-17 yls 创建服务接口模块 接口工程只提供接口,不提供实现,在后面的提供者和消费者中使用 在使用接口的模块中只需要写具体实现类,避免了在每个模块中重复编写接口 在接口中引入依赖包 <dependency> <groupId>org.projectlombok</groupId> <artifactId>lombok</artifactId> <optional>true</optional> </

Dubbo入门---搭建一个最简单的Demo框架

Dubbo背景和简介 Dubbo开始于电商系统,因此在这里先从电商系统的演变讲起. 单一应用框架(ORM) 当网站流量很小时,只需一个应用,将所有功能如下单支付等都部署在一起,以减少部署节点和成本. 缺点:单一的系统架构,使得在开发过程中,占用的资源越来越多,而且随着流量的增加越来越难以维护 垂直应用框架(MVC) 垂直应用架构解决了单一应用架构所面临的扩容问题,流量能够分散到各个子系统当中,且系统的体积可控,一定程度上降低了开发人员之间协同以及维护的成本,提升了开发效率. 缺点:但是在垂直架构

Dubbo入门实例

现在用到了分布式框架Dubbo,随笔谢谢Dubbo入门的实例 解释:注册中心,服务注册的地方,通俗的说就是服务所在的位置 我这里的是在192.168.2.168上面 需要用到的jar包 这是客服端和服务端都需要的jar包,我们新建Maven工程. 项目结构图: 服务端: 一个接口(接口中的方法在实现时方法名开始不能以get开头,莫名报错):     public interface UserService { public void daoGet(); } 实现类(这里必须要实现Serieali

SpringBoot整合Dubbo案例

使用框架: jdk 1.8 springboot-2.1.3 dubbo-2.6 spring-data-jpa-2.1.5 一.开发dubbo服务接口: 按照Dubbo官方开发建议,创建一个接口项目,该项目只定义接口和model类: 1.创建springboot工程 spring-boot-demo-dubbo-interface 坐标: <groupId>com.example</groupId> <artifactId>spring-boot-demo-dubbo

zookeeper+dubbo+demo

zookeeper下载地址 https://archive.apache.org/dist/zookeeper/ zookeeper安装和使用 windows环境 https://blog.csdn.net/tlk20071/article/details/52028945 当当Dubbox https://github.com/dangdangdotcom/dubbox http://dangdangdotcom.github.io/dubbox/ Dubbo入门---搭建一个最简单的Demo