SpringBoot + zookeeper+ dubbo 项目搭建

1.使用springBoot 框架;

2.本地搭建zookeeper;

3.本地搭建dubbo-admin 查看服务内容;

4.springBoot集成 dubbo 远程调用服务;

现在开始完整的部署流程

一、部署zookeeper

Zookeeper是一个分布式的服务框架,是树型的目录服务的数据存储,能做到集群管理数据 ,这里能很好的作为Dubbo服务的注册中心。

Dubbo能与Zookeeper做到集群部署,当提供者出现断电等异常停机时,Zookeeper注册中心能自动删除提供者信息,当提供者重启时,能自动恢复注册数据,以及订阅请求

从官网下载安装包,解压。修改cong目录下的zoo-sample.cfg文件,此文件为示例文件,重命名为zoo.cfg。点击zkServer.cmd启动;

这里也给下链接 https://download.csdn.net/download/zjcool2012/14935273

二、部署dubbo-admin

下载dubbo-admin-2.6.0源码,打war包。

   https://github.com/apache/incubator-dubbo/releases

这里也给下打成的war链接 https://download.csdn.net/download/zjcool2012/14935258

放到tomcat的webapps下,运行tomcat自动解压文件,并启动

访问http://127.0.0.1:8081/dubbo-admin-2.6.0/,结果启动如下

三、搭建springboot项目

这里为简易开发和启动快捷,使用项目多模块,也是现在比较流行的。

dubbo(模块层级如下)

  • interface 暴露外部的接口
  • service   具体实现和提供服务,web工程
  • entity      实体类
  • client      客户端,调用方,web工程

IDEA搭建多模块项目的,有个文档写的不错,大家借鉴一下。https://segmentfault.com/a/1190000011367492

然后就是各个模块具体引入的maven和代码层级的实现。

1. zj-interface

该模块较简单,定义暴露的接口即可。

如:

package zj.test.zjinterface;

public interface UserService {
    String getUserName(Integer id);
}

2.zj-service

提供接口的实现,和dubbo服务能力

2.1 先看该模块的maven配置

<?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.4.2</version>
		<relativePath/> <!-- lookup parent from repository -->
	</parent>
	<groupId>zj.test</groupId>
	<artifactId>zj-service</artifactId>
	<version>0.0.1-SNAPSHOT</version>
	<name>zj-service</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>zj.test</groupId>
			<artifactId>zj-interface</artifactId>
			<version>0.0.1-SNAPSHOT</version>
		</dependency>
		<dependency>
			<groupId>zj.test</groupId>
			<artifactId>zj-entity</artifactId>
			<version>0.0.1-SNAPSHOT</version>
		</dependency>
		<dependency>
			<groupId>org.apache.dubbo</groupId>
			<artifactId>dubbo-spring-boot-starter</artifactId>
			<version>2.7.3</version>
			<exclusions>
				<exclusion>
					<groupId>org.slf4j</groupId>
					<artifactId>slf4j-log4j12</artifactId>
				</exclusion>
			</exclusions>
		</dependency>

		<dependency>
			<groupId>org.apache.dubbo</groupId>
			<artifactId>dubbo</artifactId>
			<version>2.7.3</version>
		</dependency>

		<dependency>
			<groupId>org.apache.curator</groupId>
			<artifactId>curator-framework</artifactId>
			<version>4.0.1</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.13</version>
			<type>pom</type>
			<exclusions>
				<exclusion>
					<groupId>org.slf4j</groupId>
					<artifactId>slf4j-log4j12</artifactId>
				</exclusion>
			</exclusions>
		</dependency>

		<dependency>
			<groupId>com.101tec</groupId>
			<artifactId>zkclient</artifactId>
			<version>0.10</version>
		</dependency>
	</dependencies>

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

</project>

2.2 配置文件,配置dubbo的相关参数

#spring项目名
spring.application.name=dubbo_auto_configuration_provider_demo
#Dubbo provider configuration
dubbo.application.name=dubbo_provider
dubbo.registry.protocol=zookeeper
dubbo.registry.address=zookeeper://127.0.0.1:2181
dubbo.protocol.name=dubbo
dubbo.protocol.port=20880
#扫描注解包通过该设置将服务注册到zookeeper
dubbo.scan.base-packages=zj.test.zjservice

server.port=8090

2.3 实现类

package zj.test.zjservice;

import org.apache.dubbo.config.annotation.Service;
import zj.test.zjinterface.UserService;

@Service(version = "1.0.0",interfaceClass = UserService.class)
public class UserServiceImpl implements UserService {
    @Override
    public String getUserName(Integer id) {
        System.out.println("------123-------");
        return "123";
    }
}

3. zj-entity

实体类模块,可暂不用

4. zj-client

调用服务方,可编写接口测试功能。

4.1 maven配置

同2.1节中

4.2 配置文件

#dubbo configuration
dubbo.application.name=dubbo_consumer
dubbo.registry.protocol=zookeeper
dubbo.registry.address=zookeeper://127.0.0.1:2181

#避免端口冲突
server.port=8085

4.3 接口调用

package zj.test.zjclient;

import org.apache.dubbo.config.annotation.Reference;
import org.springframework.web.bind.annotation.RequestMapping;
import org.springframework.web.bind.annotation.RestController;
import zj.test.zjinterface.UserService;

@RestController
public class TestController {
    @Reference(version = "1.0.0")
    private UserService testServiceImpl;

    @RequestMapping("/tt")
    public String ins(){
        String re = testServiceImpl.getUserName(1);
        System.out.println(re);
        return "ins";
    }
}

四、完整操作

1.启动zookeeper, tomcat中启动dubbo-admin。

2.可在springboot项目中分别启动 zj-service, zj-client

3.请求测试接口http://localhost:8085/tt,得到结果 

同时,zj-service中也有打印方法中的语句,执行成功。

4.同时我们看下dubbo-admin的界面,发现有新增的服务方和消费方,如图

 

评论 2
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值