SpringBoot整合Zookeeper和Dubbo
一、Dubbo
1、 Dubbo定义
Dubbo是Alibaba开源的分布式服务框架,它最大的特点是按照分层的方
式来架构,使用这种方式可以使各个层之间解耦合(或者最大限度地松耦
合)。从服务模型的角度来看,Dubbo采用的是一种非常简单的模型,要
么是提供方提供服务,要么是消费方消费服务,所以基于这一点可以抽象
出服务提供方(Provider)和服务消费方(Consumer)两个角色。
Dubbo就是资源调度和治理中心的管理工具。
2、Dubbo架构
节点角色说明:
Provider: 暴露服务的服务提供方。
Consumer: 调用远程服务的服务消费方。
Registry: 服务注册与发现的注册中心。
Monitor: 统计服务的调用次调和调用时间的监控中心。
Container: 服务运行容器。
调用关系说明:
0. 服务容器负责启动,加载,运行服务提供者。
1. 服务提供者在启动时,向注册中心注册自己提供的服务。
2. 服务消费者在启动时,向注册中心订阅自己所需的服务。
3. 注册中心返回服务提供者地址列表给消费者,如果有变更,注册中心将基于长连接推送变更数据给消费者。
4. 服务消费者,从提供者地址列表中,基于软负载均衡算法,选一台提供者进行调用,如果调用失败,再选另一台调用。
5. 服务消费者和提供者,在内存中累计调用次数和调用时间,定时每分钟发送一次统计数据到监控中心。
二、注册中心
1. Zookeeper介绍
官方推荐使用zookeeper注册中心。
注册中心负责服务地址的注册与查找,相当于目录服务,服务提供者和消费者只在启动时与注册中心交互,注册中心不转发请求,压力较小。使用dubbo-2.3.3以上版本,建议使用zookeeper注册中心。
Zookeeper是Apacahe Hadoop的子项目,是一个树型的目录服务,支持变更推送,适合作为Dubbo服务的注册中心,工业强度较高,可用于生产环境,并推荐使用
Zookeeper:
1、可以作为集群的管理工具使用。
2、可以集中管理配置文件。
三、SpringBoot整合Dubbo
1、新建provider模块 springboot-dubbo-server
引入依赖
<!-- Spring Boot 启动父依赖 -->
<parent>
<groupId>org.springframework.boot</groupId>
<artifactId>spring-boot-starter-parent</artifactId>
<version>2.0..RELEASE</version>
<relativePath/>
</parent>
<dependencies>
<dependency>
<groupId>org.springframework.boot</groupId>
<artifactId>spring-boot-starter-web</artifactId>
</dependency>
<!--dubbo依赖-->
<dependency>
<groupId>com.alibaba.boot</groupId>
<artifactId>dubbo-spring-boot-starter</artifactId>
<version>0.2.</version>
</dependency>
<dependency>
<groupId>com.alibaba.spring.boot</groupId>
<artifactId>dubbo-spring-boot-starter</artifactId>
<version>2.0.</version>
</dependency>
<!--zkclient依赖-->
<dependency>
<groupId>com.101tec</groupId>
<artifactId>zkclient</artifactId>
<version>0.10</version>
</dependency> <dependency>
<groupId>org.springframework.boot</groupId>
<artifactId>spring-boot-starter-test</artifactId>
<scope>test</scope>
</dependency>
<!--mybatis起步依赖-->
<dependency>
<groupId>org.mybatis.spring.boot</groupId>
<artifactId>mybatis-spring-boot-starter</artifactId>
<version>1.1.</version>
</dependency>
<!--mysql依赖-->
<dependency>
<groupId>mysql</groupId>
<artifactId>mysql-connector-java</artifactId>
<scope>runtime</scope>
</dependency>
</dependencies>
application.properties
#应用名称
dubbo.application.name=provider
#注册中心地址
dubbo.registry.address=zookeeper://localhost:2181
#服务类包目录
dubbo.scan.base-packages=com.yehui.service
##协议名称
#dubbo.protocol.name=dubbo
##协议端口
#dubbo.protocol.port=
server.port= spring.datasource.password=root
spring.datasource.username=root
spring.datasource.url=jdbc:mysql://localhost:3306/study
spring.datasource.driver-class-name=com.mysql.jdbc.Driver
mybatis.mapper-locations=classpath:mapper/*.xml #spring.dubbo.application.name 应用名称
#spring.dubbo.registry.address 注册中心地址
#spring.dubbo.protocol.name 协议名称
#spring.dubbo.protocol.port 协议端口
#spring.dubbo.scan dubbo 服务类包目录
#spring.dubbo.scan 扫描包
创建接口
public interface DubboService {
public List<TbUser> selectList();
}
实现类
@Component
@Service
public class DubboServiceImpl implements DubboService {
@Autowired
private DubboMapper dubboMapper;
@Override
public List<TbUser> selectList() {
return dubboMapper.selectList();
}
}
mapper接口
@Mapper
public interface DubboMapper {
public List<TbUser> selectList(); }
实体类
public class TbUser implements Serializable {
private Integer id;
private String username;
private String age;
mapper.xml
<!DOCTYPE mapper PUBLIC "-//mybatis.org//DTD Mapper 3.0//EN"
"http://mybatis.org/dtd/mybatis-3-mapper.dtd">
<mapper namespace="com.yehui.mapper.DubboMapper">
<select id="selectList" resultType="com.yehui.entity.TbUser">
select * from tb_user
</select>
</mapper>
启动类
@SpringBootApplication
@EnableDubboConfiguration//注解必须有否则否则会报错
public class DubboApplication {
public static void main(String[] args) {
SpringApplication.run(DubboApplication.class,args);
}
}
启动zookeeper之后在启动主启动类
2、消费者模块springboot-dubbo-client
引入依赖
<!-- Spring Boot 启动父依赖 这个依赖也不少 -->
<parent>
<groupId>org.springframework.boot</groupId>
<artifactId>spring-boot-starter-parent</artifactId>
<version>2.0.6.RELEASE</version>
</parent>
<dependencies> <dependency>
<groupId>com.yehui</groupId>
<artifactId>springboot-dubbo-server</artifactId>
<version>1.0-SNAPSHOT</version>
</dependency>
</dependencies>
application.properties文件
## Dubbo 服务提供者配置
dubbo.application.name=cutomer
dubbo.registry.address=zookeeper://192.168.1.8:2181 server.port=8088 spring.datasource.password=root
spring.datasource.username=root
spring.datasource.url=jdbc:mysql://localhost:3306/study
spring.datasource.driver-class-name=com.mysql.jdbc.Driver
mybatis.mapper-locations=classpath:mapper/*.xml
controller类
@RestController
public class DubboController { @Reference
private DubboService dubboService; @RequestMapping("/findAll")
public List<TbUser> findAll(){
return dubboService.selectList();
}
}
主启动类
@SpringBootApplication
@EnableDubboConfiguration //这个注解不能少
public class StartAppClient {
public static void main(String[] args) {
SpringApplication.run(StartAppClient.class);
}
}
启动主启动类测试
SpringBoot整合Zookeeper和Dubbo的更多相关文章
- java springboot整合zookeeper入门教程(增删改查)
java springboot整合zookeeper增删改查入门教程 zookeeper的安装与集群搭建参考:https://www.cnblogs.com/zwcry/p/10272506.html ...
- springboot整合zookeeper
在springboot中所有的整合都是以bean的形式注入对象,从数据库coon.redis conn.再到整合的zookeeper,依然是依照bean注入连接对象,通过zookeeper api对z ...
- springboot整合最新版dubbo以及dubbo-admin的安装
一.安装前准备 由于dubbo被阿里捐献给了apache,这次安装admin时,参考网上的资料,地址还是停留在之前的链接,踩了不少坑,这里记录下. dubbo-admin下载地址: 地址一:https ...
- SpringBoot 整合 Zookeeper 接入Starring微服务平台
背景 最近接的一个项目是基于公司产品Starring做的微服务支付平台,纯后台项目,实现三方支付公司和银行接口来完成用户账户扣款,整合成通用支付接口发布给前端调用. 但是扯蛋了,这边前端什么都不想做, ...
- springboot整合zookeeper实现分布式锁
目录 01 安装并允许zookeeper 02 springboot应用配置CuratorFramework 03 使用zookeeper实现集群只一个应用实例执行定时任务 04 使用zookeepe ...
- (十七)整合 Zookeeper组件,管理架构中服务协调
整合 Zookeeper组件,管理架构中服务协调 1.Zookeeper基础简介 1.1 基本理论 1.2 应用场景 2.安全管理操作 2.1 操作权限 2.2 认证方式: 2.3 Digest授权流 ...
- Springboot 整合 Dubbo/ZooKeeper 详解 SOA 案例
摘要: 原创出处:www.bysocket.com 泥瓦匠BYSocket 希望转载,保留摘要,谢谢! “看看星空,会觉得自己很渺小,可能我们在宇宙中从来就是一个偶然.所以,无论什么事情,仔细想一 ...
- springboot整合dubbo\zookeeper做注册中心
springboot整合dubbo发布服务,zookeeper做注册中心.前期的安装zookeeper以及启动zookeeper集群就不说了. dubbo-admin-2.5.4.war:dubbo服 ...
- Springboot整合Dubbo和Zookeeper
Dubbo是一款由阿里巴巴开发的远程服务调用框架(RPC),其可以透明化的调用远程服务,就像调用本地服务一样简单.截至目前,Dubbo发布了基于Spring Boot构建的版本,版本号为0.2.0,这 ...
随机推荐
- 【APUE】Chapter7 Process Environment
这一章内容是Process的基础准备篇章.这一章的内容都是基于C Programm为例子. (一)进程开始: kernel → C start-up rountine → main function ...
- python学习总结---面向对象1
面向对象 - 与面向过程对比 - 面向过程:数学逻辑的映射,学会做个好员工. - 面向对象:生活逻辑的映射,学会做个好领导. - 生活实例 - 类: 人 手机 电脑 - 对象: 习大大.普京 二狗的i ...
- 【视觉SLAM14讲】ch3课后题答案
1.验证旋转矩阵是正交矩阵 感觉下面这篇博客写的不错 http://www.cnblogs.com/caster99/p/4703033.html 总结一下:旋转矩阵是一个完美的矩阵——正交矩阵.①行 ...
- MySQL事物相关学习
总结下最近对MySQL数据库的认识 Q:在手动开启事物后,commit失败是否需要显示的rollback? A:在网上查了不少资料,没有查到明确的答案.问了身边的朋友,朋友也不太了解,不过均表示显示的 ...
- python与MySQL数据库
python与MySQL数据库 慕课网连接 我使用的软件:python2.7 + MySQL+ Navicat for MySQL + Atom 注意:你的数据库表格类型的引擎为:InnoDB :字符 ...
- NetScaler的cookieinsert和sourceip联合保持机制
NetScaler的cookieinsert和sourceip联合保持机制 使用NetScaler的cookieinsert和sourceip联合进行session保持机制即主用cookieinser ...
- [CF1045C]Hyperspace Highways
题目大意:给一张$n$个点$m$条边的图,保证若有一个环,一定是完全子图,多次询问两个点之间的最短路径长度 题解:把完全子图缩成一个点,圆方树,方点权值设成$1$,圆点设成$0$即可. 卡点:数组开小 ...
- [AT2699]Flip and Rectangles
题目大意:有一个$n\times m$的$01$矩阵,可以把任意行或列反转,问最大的全为一的子矩阵的面积 题解:有一个结论:若一个子矩形$S$中的任意一个$2\times 2$的子矩形都含有偶数个$1 ...
- 使用C#创建windows服务程序
创建windows服务项目 一.创建服务 1.文件->新建->项目->windows桌面->windows服务,修改你要的项目名称.我这不改名,仍叫WindowsService ...
- 解决:dubbo找不到dubbo.xsd报错
构建dubbo项目的时候会遇到: Multiple annotations found at this line: - cvc-complex-type.2.4.c: The matching wil ...