dubbo+zookeeper 二(demo)

项目demo 下载链接 https://gitee.com/leonzhang2013/dubbo-demo

第一步安装启动 zookeeper (为了方便试验,这里使用 window环境,在linux 方式启动配置方式是一样的,只是最后启动的 方法不同)
1、 zookeeper 官网下载地址 https://mirrors.tuna.tsinghua.edu.cn/apache/zookeeper/stable/
2、这里下载的是 stable (稳定版) 版本下载。在这里插入图片描述
下载完成后,解压后。
开始配置。(这里我解压到了 F:/server)
进入 zookeeper/conf目录下,
1、复制 zoo_sample.cfg 并重命名为:zoo.cfg
2、打开 zoo.cfg。编辑dataDir 为对应zookeeper目录下。方便查找,然后保存。
dataDir=F:/server/zookeeper/data
3、启动 cmd ,cd 到 F:/server/zookeeper/bin 目录下
输入 zkServer.cmd 启动 zookeeper .(在linux 下命令为 zkServer.sh start )

恭喜你单机版的 zookeeper 部署并启动成功。

第二步:使用 dubbo 构架一个简单的分布式项目。
工程目录如下。dubbo-demo2
在这里插入图片描述

第一步 首先创建 dubbo-demo 外部工程

1、创建一个 spring boot 工程。修改 pom
外部工程用户 统一管理项目的依赖包。

<?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 http://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.1.3.RELEASE</version>
		<relativePath/> <!-- lookup parent from repository -->
	</parent>
	<groupId>com.example</groupId>
	<artifactId>dubbo-demo2</artifactId>
	<version>0.0.1-SNAPSHOT</version>
	<packaging>pom</packaging>
	
	<!--工程内所有版本在这里配置 -->
	<properties>
		<java.version>1.8</java.version>
		<spring.my.version>2.1.3.RELEASE</spring.my.version>
		<zk.version>0.10</zk.version>
		<dubbo.version>2.0.0</dubbo.version>
	</properties>
	
	<!--所有继承自该工程的,共享下面的依赖包,不用再次引入-->
	<dependencies>
		<dependency>
			<groupId>org.springframework.boot</groupId>
			<artifactId>spring-boot-starter-web</artifactId>
		</dependency>

		<!--dubbo 依赖-->
		<dependency>
			<groupId>com.alibaba.spring.boot</groupId>
			<artifactId>dubbo-spring-boot-starter</artifactId>
		</dependency>

		<!--zookeeper -->
		<dependency>
			<groupId>com.101tec</groupId>
			<artifactId>zkclient</artifactId>
		</dependency>

		<!--my interface-->
		<dependency>
			<groupId>com.example</groupId>
			<artifactId>myinterface</artifactId>
		</dependency>

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

   <!--依赖管理,这里每个依赖都需要配置版本号,其他工程引入时,就不需要在加入版本号了,统一使用这里的版本号 -->
	<dependencyManagement>
		<dependencies>
			<!--dubbo-->
			<dependency>
				<groupId>com.alibaba.spring.boot</groupId>
				<artifactId>dubbo-spring-boot-starter</artifactId>
				<version>${dubbo.version}</version>
			</dependency>

			<!--zookeeper -->
			<dependency>
				<groupId>com.101tec</groupId>
				<artifactId>zkclient</artifactId>
				<version>${zk.version}</version>
			</dependency>

			<dependency>
				<groupId>org.springframework.boot</groupId>
				<artifactId>spring-boot-starter-test</artifactId>
				<version>${spring.my.version}</version>
				<scope>test</scope>
			</dependency>

			<dependency>
				<groupId>com.example</groupId>
				<artifactId>myinterface</artifactId>
				<version>0.0.1-SNAPSHOT</version>
			</dependency>

		</dependencies>
	</dependencyManagement>
</project>

第二步 创建 myinterface。

创建一个 module-> maven 不需要任何依赖。
只写一个项目共用的接口类,

/**
 * @Author: zll
 * @Date @{DATE} 22:58
 */
public interface HelloService {

    String sayHello(String name);
}

第三步,创建 provider 服务提供者:

创建一个 module-> spring initializr 只需要 web 依赖。(可以不用,只是用它帮我生成的 application)
pom 如下:

<?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 http://maven.apache.org/xsd/maven-4.0.0.xsd">
	<modelVersion>4.0.0</modelVersion>
	<parent>
		<groupId>com.example</groupId>
		<artifactId>dubbo-demo2</artifactId>
		<version>0.0.1-SNAPSHOT</version>
	</parent>
	<groupId>com.zll</groupId>
	<artifactId>provider</artifactId>
	<version>0.0.1-SNAPSHOT</version>
	<name>provider</name>

	<dependencies>
		<!--继承了父类的依赖,如果不是共享的,就单独加入。-->
	</dependencies>
	<build>
		<plugins>
			<plugin>
				<groupId>org.springframework.boot</groupId>
				<artifactId>spring-boot-maven-plugin</artifactId>
			</plugin>
		</plugins>
	</build>
</project>

application添加 dubbo 注解

@SpringBootApplication
@EnableDubboConfiguration //开启dubbo 配置
public class ProviderApplication {
	public static void main(String[] args) {
		SpringApplication.run(ProviderApplication.class, args);
	}
}

编写 service 实现类:

import com.alibaba.dubbo.config.annotation.Service;  //不要导错了

@Component
@Service(interfaceClass = HelloService.class) // 千万注意这里servier 要使用 dubbo 的。
public class HelloServiceImpl implements HelloService {
    @Override
    public String sayHello(String name) {
        return "hello dubbo~!!"+name;
    }
}

application.properties

server.port=8000  #随便写,只要不冲突就行
# 用于名称,会显示在dubbo 上,一定要见名知意
spring.application.name=dubbo-demo-provider
#表示注册该模块为服务提供者。默认是true
spring.dubbo.server=true
#注册 zookeeper 的地址
spring.dubbo.registry=zookeeper://localhost:2181

第四步,创建consumer 服务消费。

和第三步一样。创建一个 module-> spring initializr 只需要 web 依赖。
pom.xml

<?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 http://maven.apache.org/xsd/maven-4.0.0.xsd">
	<modelVersion>4.0.0</modelVersion>
	<parent>
		<groupId>com.example</groupId>
		<artifactId>dubbo-demo2</artifactId>
		<version>0.0.1-SNAPSHOT</version>
	</parent>
	<groupId>com.zll</groupId>
	<artifactId>consumer</artifactId>
	<version>0.0.1-SNAPSHOT</version>
	<name>consumer</name>

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

application

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

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

controller

import com.alibaba.dubbo.config.annotation.Reference;//这个别导错了,不然helloService 为null

/**
 * @Author: zll
 * @Date @{DATE} 23:14
 */
@RestController
@RequestMapping("dubbo")
public class HelloCntroller {
    @Reference //这里会自动去dubbo 找 HelloService 的服务实现类。
    public HelloService helloService;

    @RequestMapping("hello/{name}")
    public String getHello(@PathVariable("name") String name){
        return helloService.sayHello(name);
    }
}

application.properties

server.port=8001
spring.application.name=dubbo-demo-cousumer
spring.dubbo.registry=zookeeper://127.0.0.1:2181

好了简单的工程搭建完成。
下面先运行 provider ,在运行 consumer .

输入:http://localhost:8001/dubbo/hello/zll

这里如果有个 dubbo的 可视化界面。
下载路径

  • 0
    点赞
  • 1
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值