Springboot+dubbo+zookeeper简单项目的使用。

2022-06-16 22:26:06 浏览数 (1)

项目全部源码及其zookeeper安装包,

公众号:知识浅谈 后台回复“springboot集成dubbo”获取下载连接。

  • 第一步:获取完上边的项目之后,先安装zookeeper,
    • 安装zookeeper,只需要在zookeeper的跟文件夹下创建一个data文件夹,然后在conf文件夹下复制zoo_sample.cfg,粘贴到和zoo_sample 相同目录下重命名为zoo.cfg

    然后修改zoo.cfg中的dataDir后边的地址为你刚才创建的data文件夹的绝对路径

    然后就可以在bin文件夹下的zkServer.cmd,启动注册中心了,当然,等你下边项目写完之后,先运行这个文件,再运行项目就ok了

  • 第二步,项目部署
  • 先给出我的文件夹结构,结合着创建项目

第一个项目:建立对应的用于接口的项目,因为接口在服务提供者和服务消费者都用的到(服务提供者用接口实现,服务消费者使用接口调用服务提供者实现的方法) 不选哪个create直接点击下一步创建即可,名字结合我项目中的或者上边文件结构中的。

该项目中就一个文件service的接口,而且pom.xml不用改变

代码语言:javascript复制
package com.englishcode.springboot.service;

/**
 * @author cyl
 * @version 1.0
 * @date 2020/10/27 11:26
 */
public interface StudentService {
    Integer queryAllStudentCount();
}

第二个项目21服务提供者:使用springboot创建

名字同样参考文件结构 对应的pom.xml文件:

代码语言:javascript复制
<?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.3.4.RELEASE</version>
		<relativePath/> <!-- lookup parent from repository -->
	</parent>
	<groupId>com.englishcode.springboot</groupId>
	<artifactId>021-springboot-dubbo-provider</artifactId>
	<version>1.0.0</version>

	<properties>
		<java.version>1.8</java.version>
	</properties>

	<dependencies>
		<dependency>
			<groupId>org.springframework.boot</groupId>
			<artifactId>spring-boot-starter-web</artifactId>
		</dependency>
		<!--dubbo集成springboot依赖-->
		<dependency>
			<groupId>com.alibaba.spring.boot</groupId>
			<artifactId>dubbo-spring-boot-starter</artifactId>
			<version>2.0.0</version>
		</dependency>

		<!--注册中心-->
		<dependency>
			<groupId>com.101tec</groupId>
			<artifactId>zkclient</artifactId>
			<version>0.10</version>
		</dependency>

		<!--接口工程-->
		<dependency>
			<groupId>com.englishcode.springboot</groupId>
			<artifactId>020-springboot-dubbo-interface</artifactId>
			<version>1.0.0</version>
		</dependency>
	</dependencies>

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

</project>

对应的application.properties

代码语言:javascript复制
#设置内嵌tomcat端口号
server.port=8081
#设置上下文
server.servlet.context-path=/

#设置dubbo的配置
spring.application.name=021-springboot-provider

#设置当前工程是一个服务提供者
spring.dubbo.server=true

#设置注册中心
spring.dubbo.registry=zookeeper://127.0.0.1:2181

对应的启动文件:

代码语言:javascript复制
package com.englishcode.springboot;

import com.alibaba.dubbo.spring.boot.annotation.EnableDubboConfiguration;
import org.springframework.boot.SpringApplication;
import org.springframework.boot.autoconfigure.SpringBootApplication;

@SpringBootApplication
@EnableDubboConfiguration   //开启dubbo配置
public class Application {

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

}

对应的service实现文件

代码语言:javascript复制
package com.englishcode.springboot.service.impl;

import com.alibaba.dubbo.config.annotation.Service;
import com.englishcode.springboot.service.StudentService;
import org.springframework.stereotype.Component;

/**
 * @author cyl
 * @version 1.0
 * @date 2020/10/27 11:28
 */
@Component   //加载到spring容器中
@Service(interfaceClass = StudentService.class,version = "1.0.0",timeout = 15000)              //这个即使最后要暴漏出去的类名
public class StudentServiceImpl implements StudentService {
    @Override
    public Integer queryAllStudentCount() {
        return 12;
    }
}
  • 对于第三个项目22服务消费者:
    • pom.xml和上边的差不多,以来都一样,把对应的名字什么改一下就行,源码如下
代码语言:javascript复制
<?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.3.4.RELEASE</version>
		<relativePath/> <!-- lookup parent from repository -->
	</parent>
	<groupId>com.englishcode.springboot</groupId>
	<artifactId>022-springboot-dubbo-consumer</artifactId>
	<version>1.0.0</version>

	<properties>
		<java.version>1.8</java.version>
	</properties>

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

		<!--dubbo集成springboot框架起步依赖-->
		<dependency>
			<groupId>com.alibaba.spring.boot</groupId>
			<artifactId>dubbo-spring-boot-starter</artifactId>
			<version>2.0.0</version>
		</dependency>
		<!--注册中心-->
		<dependency>
			<groupId>com.101tec</groupId>
			<artifactId>zkclient</artifactId>
			<version>0.10</version>
		</dependency>

		<!--接口工程,只有有这个才能知道提供者要提供哪些工程,消费者需要哪些工程-->
		<dependency>
			<groupId>com.englishcode.springboot</groupId>
			<artifactId>020-springboot-dubbo-interface</artifactId>
			<version>1.0.0</version>
		</dependency>
	</dependencies>

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

</project>

对应的application.properties

代码语言:javascript复制
#设置内嵌tomcat端口号
server.port=8082
server.servlet.context-path=/

#dubbo配置
spring.application.name=022-springboot-dubbo-consumer
#指定注册中心,使用的是zookeeper
spring.dubbo.registry=zookeeper://127.0.0.1:2181

对应的启动文件:

代码语言:javascript复制
package com.englishcode.springboot;

import com.alibaba.dubbo.spring.boot.annotation.EnableDubboConfiguration;
import org.springframework.boot.SpringApplication;
import org.springframework.boot.autoconfigure.SpringBootApplication;

@SpringBootApplication
@EnableDubboConfiguration   //开启dubo的配置
public class Application {

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

}

对应的controller

代码语言:javascript复制
package com.englishcode.springboot.service;

import com.alibaba.dubbo.config.annotation.Reference;
import org.springframework.stereotype.Controller;
import org.springframework.web.bind.annotation.RequestMapping;
import org.springframework.web.bind.annotation.ResponseBody;

/**
 * @author cyl
 * @version 1.0
 * @date 2020/10/27 11:21
 */
@Controller
public class StudentController {

    @Reference(interfaceClass = StudentService.class,version = "1.0.0",check = false)  //相当于从注册中心要引用哪个方法
    private StudentService studentService;
    @RequestMapping("")
    public @ResponseBody Object studentCount(){
        Integer all = studentService.queryAllStudentCount();
        return "学生总人数:" all;
    }
}

注意:在配置文件中设置的那个server.port不能相同会冲突,代码中已经设置为不相同了。

开始运行: 运行步骤:注册中心(zookeeper)运行,然后运行服务提供者,最后运行服务消费者,然后通过网页访问查看是否成功。 第一步,zookeeper运行起来如下:

这就代表运行成功了

第二步:运行服务提供者:

第三步:运行服务消费者

最后一步:访问网页

完美结束,你,学会了吗

0 人点赞