springboot 整合dubbo\zookeeper

话不多说,先来代码:https://github.com/wushidong125/springboot-dubbo   欢迎fork一起学习。

一、为啥整合 Dubbo 实现 SOA

Dubbo 不单单只是高性能的 RPC 调用框架,更是 SOA 服务治理的一种方案。
核心
1. 远程通信,向本地调用一样调用远程方法。
2. 集群容错
3. 服务自动发现和注册,可平滑添加或者删除服务提供者。

我们常常使用 Springboot 暴露 HTTP 服务,并走 JSON 模式。但慢慢量大了,一种 SOA 的治理方案。这样可以暴露出 Dubbo 服务接口,提供给 Dubbo 消费者进行 RPC 调用。下面我们详解下如何集成 Dubbo。

二、项目搭建

项目是一个maven的聚合项目如下:其中dubbo-clinet,dubbo-service是springboot-dobbo的一个模块。


先看一个父项目需要的依赖配置,这个将一个公共的依赖包都放在父项目的pom文件中。注意这个的

<packaging>pom</packaging>

说明是一个聚合的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 http://maven.apache.org/xsd/maven-4.0.0.xsd">
	<modelVersion>4.0.0</modelVersion>

	<groupId>org.spring.springboot</groupId>
	<artifactId>springboot-dubbo</artifactId>
	<version>0.0.1-SNAPSHOT</version>
	<packaging>pom</packaging>

	<name>springboot-dubbo</name>
	<description>Demo project for Spring Boot</description>

	<modules>
		<module>dubbo-server</module>
		<module>dubbo-client</module>
	</modules>

	<parent>
		<groupId>org.springframework.boot</groupId>
		<artifactId>spring-boot-starter-parent</artifactId>
		<version>1.5.10.RELEASE</version>
		<relativePath/> <!-- lookup parent from repository -->
	</parent>

	<properties>
		<project.build.sourceEncoding>UTF-8</project.build.sourceEncoding>
		<project.reporting.outputEncoding>UTF-8</project.reporting.outputEncoding>
		<java.version>1.8</java.version>
		<dubbo-spring-boot>1.0.0</dubbo-spring-boot>
	</properties>

	<dependencies>

		<!-- Spring Boot Dubbo 依赖 -->
		<dependency>
			<groupId>io.dubbo.springboot</groupId>
			<artifactId>spring-boot-starter-dubbo</artifactId>
			<version>${dubbo-spring-boot}</version>
		</dependency>

		<!-- Spring Boot Web 依赖 -->
		<dependency>
			<groupId>org.springframework.boot</groupId>
			<artifactId>spring-boot-starter-web</artifactId>
		</dependency>

		<!-- Spring Boot Test 依赖 -->
		<dependency>
			<groupId>org.springframework.boot</groupId>
			<artifactId>spring-boot-starter-test</artifactId>
			<scope>test</scope>
		</dependency>


		<!-- Junit -->
		<dependency>
			<groupId>junit</groupId>
			<artifactId>junit</artifactId>
			<version>4.12</version>
		</dependency>

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

	</dependencies>

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


</project>

三、Zookeeper 环境搭建

这个需要zookeeper 作为服务的注册中心。ZooKeeper 是一个分布式的,开放源码的分布式应用程序协调服务。它是一个为分布式应用提供一致性服务的软件,提供的功能包括:配置维护、域名服务、分布式同步、组服务等

zookeeper在Dubbo中扮演了一个什么角色,起到了什么作用啊?

流程:

1、服务提供者启动时,向/dubbo/org.spring.springboot.dubbo.CityDubboService/providers 目录下写入URI

2、服务消费者启动时,订阅/dubbo/org.spring.springboot.dubbo.CityDubboService/providers 目录下的URI

并向/dubbo/org.spring.springboot.dubbo.CityDubboService/consumers目录下写下自己的URI

3、监控中心启动时订阅/dubbo/org.spring.springboot.dubbo.CityDubboService 目录下所有的提供者和消费者的URI。

支持下面的功能:

1、当提供者出现断电等服务异常停机时,注册中心能够自动删除提供者的信息。

2、当注册中心重启时,能自动恢复注册数据,已经订阅请求

3、当回话过期是,能自动恢复注册数据,已经订阅请求

这里就不具体说zookeeper的搭建了,可以参照我的这篇贫博客:

http://blog.csdn.net/wusd1256/article/details/79292362


看一下dubbo配置的

这里 ZK 配置的地址和端口,就是上面本机搭建的 ZK 。如果有自己的 ZK 可以修改下面的配置。配置解释如下:
spring.dubbo.application.name 应用名称
spring.dubbo.registry.address 注册中心地址
spring.dubbo.protocol.name 协议名称
spring.dubbo.protocol.port 协议端口
spring.dubbo.scan dubbo 服务类包目录


三、项目运行 

上面的环境搭建好了之后,开始运行项目了。首先运行的是服务提供者工程;dubbo-server,这是springboot项目直接运行main方法就可以了。console中出现下面的日志说明,服务者启动成功,并且已经注册到ZK中了。


接下来在运行dubbo-client,最后成功打印出信息,就是通过dubbo服务RPC接口调用获取的。




  • 3
    点赞
  • 2
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值