spring-boot + dubbo + zookeeper

1.前言

博客上偶然看到 spring-boot + duboo 开发, 自己一直没有接触过分布式,手痒的做了一次搭建,记录下心得.

2.zookeeper启动

https://www.apache.org/dyn/closer.cgi/zookeeper/ 下载 zookeeper

修改 conf  下的  zoo_sample.cfg 名称为  zoo.cfg

在bin目录下启动 zkServer.cmd 命令脚本.

这样注册中心就搭建好了.

3. dubbo 服务接口

   3.1 新建spring boot 项目

  名称为

    <groupId>com.example</groupId>
    <artifactId>spring-boot-demo-dubbo-interface</artifactId>
    <version>0.0.1-SNAPSHOT</version>
    <name>spring-boot-demo-dubbo-interface</name>

  pom文件 为

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

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

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

  3.2 新建 model 类


package com.dubbo.test.model;


import java.io.Serializable;
import java.util.Objects;


import javax.persistence.Entity;
import javax.persistence.GeneratedValue;
import javax.persistence.Id;

@Entity
public class User implements Serializable {
    private static final long serialVersionUID = 1L;

    @Id
    @GeneratedValue
    private long id;
    private String userName;
    private String password;
    private int age;
}

  建议使用 lombok

  3.3 建立服务接口

package com.dubbo.test.service;

import com.dubbo.test.model.User;

public interface UserService {

    public void save(User user);

    public String sayHello(String word);
}

  3.4 maven clean  + maven install 打包成 jar包

(注意 :  需要删除 src/test/java 下的 默认生成的测试类, 否则会报错.  因为这个差点放弃搭建 )

4. 导入 jar 包到maven 仓库

虽然命令行也可以使用 , 不过我这里推荐使用eclipse导入jar包,图形化界面操控起来方便. 点击 install or deploy an artifact to a Maven repository

直接导入即可.

5. 搭建生产者

  5.1 pom 文件

  

<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>
           <!-- 加入springboot与dubbo集成的起步依赖 -->
        <dependency>
            <groupId>com.alibaba.boot</groupId>
            <artifactId>dubbo-spring-boot-starter</artifactId>
            <version>0.2.0</version>
        </dependency>

        <!-- 由于使用了zookeeper作为注册中心,则需要加入zookeeper的客户端jar包: -->
        <dependency>
            <groupId>com.101tec</groupId>
            <artifactId>zkclient</artifactId>
            <version>0.10</version>
        </dependency>

         <!-- spring-data-jpa -->
        <dependency>
            <groupId>org.springframework.boot</groupId>
            <artifactId>spring-boot-starter-data-jpa</artifactId>
        </dependency>

    <dependency>
        <groupId>mysql</groupId>
        <artifactId>mysql-connector-java</artifactId>
        <scope>runtime</scope>
    </dependency>

     <!-- 添加接口服务 -->
        <dependency>
            <groupId>com.example</groupId>
            <artifactId>spring-boot-demo-dubbo-interface</artifactId>
            <version>0.0.1-SNAPSHOT</version>
        </dependency>
    </dependencies>

  5.2 application.properties 配置

  

spring.datasource.driver-class-name=com.mysql.cj.jdbc.Driver
spring.datasource.url=jdbc:mysql://localhost:3306/test_1?serverTimezone=UTC&useUnicode=true&characterEncoding=utf-8&useSSL=true
spring.datasource.username=root
spring.datasource.password=zhongyi2017!

spring.jpa.properties.hibernate.hbm2ddl.auto=create
spring.jpa.properties.hibernate.dialect=org.hibernate.dialect.MySQL5InnoDBDialect
spring.jpa.properties.hibernate.format_sql=true
spring.jpa.show-sql=true

# 访问端口
server.port=8080
# dubbo配置
dubbo.application.name=springboot-dubbo-provider
dubbo.registry.address=zookeeper://61.149.178.123:2181

  5.3  新建dao 层

package com.dubbo.test.dao;

import org.springframework.data.jpa.repository.JpaRepository;

import com.dubbo.test.model.User;

public interface UserRepository extends JpaRepository<User, Integer>{

}

  5.4 新建 service 实现层

  

package com.dubbo.test.service;

import org.springframework.beans.factory.annotation.Autowired;
import org.springframework.stereotype.Component;

import com.alibaba.dubbo.config.annotation.Service;
import com.dubbo.test.dao.UserRepository;
import com.dubbo.test.model.User;

@Service
@Component
public class UserServiceImpl implements UserService{
    @Autowired
    private UserRepository userRepository;

    @Override
    public void save(User user) {
        userRepository.save(user);
    }

    @Override
    public String sayHello(String word) {
        return word;
    }

}

  @Service  使用的 dubbo提供的注解

  5.5 启动类中添加 @EnableDubbo

  

package com.dubbo.test;

import org.springframework.boot.SpringApplication;
import org.springframework.boot.autoconfigure.SpringBootApplication;

import com.alibaba.dubbo.config.spring.context.annotation.EnableDubbo;
import com.dubbo.test.model.User;

@SpringBootApplication
@EnableDubbo
public class SpringBootDemoDubboProviderApplication {

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

}

  5.6 启动

6. 搭建消费者

  6.1 pom 文件  同 生产者一样

  6.2 application.properties 配置

  

spring.datasource.driver-class-name=com.mysql.cj.jdbc.Driver
spring.datasource.url=jdbc:mysql://localhost:3306/test_1?serverTimezone=UTC&useUnicode=true&characterEncoding=utf-8&useSSL=true
spring.datasource.username=root
spring.datasource.password=zhongyi2017!

# WEB\u670D\u52A1\u7AEF\u53E3
server.port=8081
# dubbo\u914D\u7F6E
dubbo.application.name=springboot-dubbo-consumer
dubbo.registry.address=zookeeper://61.149.178.123:2181 

  6.3 新建 controller 层

  

package com.dubbo.test.controller;

import org.springframework.web.bind.annotation.RequestMapping;
import org.springframework.web.bind.annotation.RestController;

import com.alibaba.dubbo.config.annotation.Reference;
import com.dubbo.test.model.User;
import com.dubbo.test.service.UserService;

@RestController
public class UserController {
    @Reference // 该注解是dubbo提供的
    private UserService userService;

    @RequestMapping("/say")
    public String sayHello(String name) {
        return userService.sayHello(name);
    }

    @RequestMapping("/save")
    public void save() {
        User u = new User();
        u.setAge(20);
        u.setPassword("123");
        u.setUserName("zheng");
        userService.save(u);
    }
}

  6.4 添加 @EnableDubbo 注解

  

package com.dubbo.test;

import org.springframework.boot.SpringApplication;
import org.springframework.boot.autoconfigure.SpringBootApplication;

import com.alibaba.dubbo.config.spring.context.annotation.EnableDubbo;

@SpringBootApplication
@EnableDubbo
public class SpringBootDemoDubboConsumerApplication {

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

}

  6.5 启动

7. 测试

8.总结

就是一些工具,可能我把分布式想简单了吧,这只是自己写的demo,没有真正经历生产环境.

希望自己能一直保持学习的态度学习下去.

原文地址:https://www.cnblogs.com/lishuaiqi/p/10984992.html

时间: 2024-10-12 06:16:52

spring-boot + dubbo + zookeeper的相关文章

spring boot集成zookeeper注册中心

ZooKeeper是一个分布式服务框架,是Apache Hadoop 的一个子项目,它主要是用来解决分布式应用中经常遇到的一些数据管理问题,如:统一命名服务.状态同步服务.集群管理.分布式应用配置项的管理等 ZooKeeper是一个树形结构的目录服务,支持变更推送 在ZooKeeper中,节点分为两类: 机器节点: 指构成集群的机器 数据节点ZNode: 指数据模型中的数据单元 ZooKeeper将所有数据存储在内存中,数据模型是一棵树(ZNode Tree),由斜杠(/)进行分割的路径,就是一

Spring Boot Dubbo applications.properties 配置清单

参考链接:http://blog.csdn.net/jeffli1993/article/details/71480627

Springboot 整合 Dubbo/ZooKeeper

本文提纲 一.为啥整合 Dubbo 实现 SOA 二.运行 springboot-dubbo-server 和 springboot-dubbo-client 工程 三.springboot-dubbo-server 和 springboot-dubbo-client 工程配置详解 一.为啥整合 Dubbo 实现 SOA Dubbo 不单单只是高性能的 RPC 调用框架,更是 SOA 服务治理的一种方案. 核心: 1. 远程通信,向本地调用一样调用远程方法. 2. 集群容错 3. 服务自动发现和

spring boot(spring)

一:spring的介绍 Spring是一个开源框架,它由Rod Johnson创建.它是为了解决企业应用开发的复杂性而创建的. 它是一个容器框架,用来装javabean(java对象),中间层框架(万能胶)可以起一个连接作用,比如说把Struts和hibernate粘合在一起运用.简单来说,Spring是一个轻量级的控制反转(IoC)和面向切面(AOP)的容器框架. 二:spring boot 1. Spring Boot简介Spring 诞生时是 Java 企业版(Java Enterpris

适合初学者的一个分布式环境搭建过程(spring boot + zookeeper + dubbo + mybatis + mysql)

本人也是才开始接触 阿里巴巴的开源分布式框架 dubbo,因为现在微服务框架 spring boot也非常的火,然后结合dubbo的官网搭建这个开发环境. 一.首先 zookeeper作为集群管理服务器,安装和配置在这里就不说了 划分为 4个项目 项目目录如下: 4个项目的依赖关系是:common里面暂时存放的只有user一个实体类,后面陆续会加上其他的公共类,分页,验证等,这个项目不依赖其他的项目,其他3个项目都需要依赖它,所有这个项目需要先打包(相信做个maven项目的人应该都会-----如

Spring Boot 整合 Dubbo和Zookeeper

Spring Boot 整合 Dubbo和Zookeeper Spring Boot 整合 Dubbo和Zookeeper 环境介绍 Zookeeper 安装 启动 Dubbo admin 搭建 创建主maven项目 创建子spring boot项目 环境介绍 zookeeper 安装 dubbo-admin 查看管理注册中心服务提供者和消费者 Zookeeper 安装 http://zookeeper.apache.org/releases.html 下载最新安装包,文件格式是tar.gz,可

构建 Zookeep + Dubbo + Spring Boot 的分布式调用项目(一)

一.写在前头 在开始构建前,默认你已经能够成功安装并启动 Zookeeper 注册中心,能够成功安装并启动 Dubbo 控制台: 在本例中,我的 Zookeeper 注册中心 IP 地址为 192.168.10.41,端口号为 4183,Dubbo 控制台的访问地址为 http://192.168.10.41:8080: 为了体现分布式调用,本例中创建了以下两个项目,dubbo-consumer 远程调用 dubbo-provider 提供的服务: dubbo-provider        

Spring Boot/Spring Cloud、ESB、Dubbo

如何使用Spring Boot/Spring Cloud 实现微服务应用spring Cloud是一个基于Spring Boot实现的云应用开发工具,它为基于JVM的云应用开发中的配置管理.服务发现.断路器.智能路由.微代理.控制总线.全局锁.决策竞选.分布式会话和集群状态管理等操作提供了一种简单的开发方式. Spring Cloud与Dubbo对比提到Dubbo,我想顺便提下ESB,目前央视新华社也在用ESB来做任务编排,这里先比较下Dubbo和ESB: ESB(企业数据总线),一般采用集中式

玩转Spring Boot 集成Dubbo

使用Spring Boot 与Dubbo集成,这里我之前尝试了使用注解的方式,简单的使用注解注册服务其实是没有问题的,但是当你涉及到使用注解的时候在服务里面引用事务,注入其他对象的时候,会有一些问题.于是我就果断放弃了注解了,使用的是XML,这里可能介绍的是Dubbo,但是如果使用Dubbox的话,基本上是兼容的.接下来,将说说使用XML的方式与Spring Boot在一起开发. 1.创建工程在pom.xml中加入依赖 创建工程名为: (1)springboot-dubbo-provide (2

spring boot集成dubbo

spring-boot-start-dubbo spring-boot-start-dubbo,让你可以使用spring-boot的方式开发dubbo程序.使dubbo开发变得如此简单. 如何使用 1. clone 代码(可选,已经发布到中央仓库,可以直接依赖中央仓库的稳定版本) git clone [email protected]:teaey/spring-boot-starter-dubbo.git 2. 编译安装(可选) cd spring-boot-starter-dubbo mvn