SpringBoot+Dubbo+Zookeeper整合搭建简单的分布式应用
为什么要使用分布式系统?
容错
减少延迟/提高性能
可用性
负载均衡
总而言之,其实目的只有一个,”用户体验“。
什么是分布式系统?
分布式系统是由使用分发中间件连接的自治计算机组成的网络。它们有助于共享不同的资源和功能,为用户提供单一且集成的连贯网络。
搭建一个简单的分布式系统
1)在服务器(虚拟机)上安装zookeeper(我这里使用docker安装)。
(1)去docker-cn.com获取镜像加速地址
(2)使用docker pull registry.docker-cn.com/library/zookeeper命令下载zookeeper
(3)使用docker run --name zk01 -p 2181 --restart always -d zookeeper命令安装zookeeper
(4)使用docker ps命令查看进程,至此zookeeper已安装完成,具体的安装文档请参照https://hub.docker.com/_/zookeeper
2)创建服务提供者,服务消费者(我使用的开发工具是idea)。
(1)new project 选择 empty project
(2)创建一个子工程作为服务提供者。
2.1 new model 选择spring initalizr为了测试方便引入web模块。
2.2 创建一个service
package com.example.ticket.service; public interface ticketservice { public string getticket(); }
2.3 创建serviceimpl,注意引入的包
package com.example.ticket.service; import com.alibaba.dubbo.config.annotation.service; import org.springframework.stereotype.component; @component @service //将服务发布出去 public class ticketserviceimpl implements ticketservice { @override public string getticket() { return "《厉害了,我的国》"; } }
2.4 引入dubbo和zklient相关依赖
<!--引入dubbo--> <dependency> <groupid>com.alibaba.boot</groupid> <artifactid>dubbo-spring-boot-starter</artifactid> <version>0.1.0</version> </dependency> <!--引入zookeeper--> <!-- https://mvnrepository.com/artifact/com.github.sgroschupf/zkclient --> <dependency> <groupid>com.github.sgroschupf</groupid> <artifactid>zkclient</artifactid> <version>0.1</version> </dependency>
2.5 配置dubbo的扫描包和注册中心地址
#当前应用的名称 dubbo.application.name=provider-ticket #注册中心的地址 dubbo.registry.address=zookeeper://地址:2181 #扫描哪些包(发布什么内容) dubbo.scan.base-packages=com.example.ticket.service
(3)子工程作为服务消费者。
3.1 new model 选择spring initalizr为了测试方便引入web模块。
3.2 创建一个userservice
3.3 引入dubbo和zklient相关依赖
<!--引入dubbo--> <dependency> <groupid>com.alibaba.boot</groupid> <artifactid>dubbo-spring-boot-starter</artifactid> <version>0.1.0</version> </dependency> <!--引入zookeeper--> <!-- https://mvnrepository.com/artifact/com.github.sgroschupf/zkclient --> <dependency> <groupid>com.github.sgroschupf</groupid> <artifactid>zkclient</artifactid> <version>0.1</version> </dependency>
3.4 配置dubbo的注册中心地址
#应用名称 dubbo.application.name=consumer-user #注册中心的地址 dubbo.registry.address=zookeeper://地址:2181
3.5 将所需服务提供者工程的service copy过来(一定要全类名相同),之后的目录结构如下图
3.6 编写userservice
package com.example.user.service; import com.alibaba.dubbo.config.annotation.reference; import com.example.ticket.service.ticketservice; import org.springframework.stereotype.service; @service public class userservice { @reference ticketservice ticketservice; public void hello(){ string ticket = ticketservice.getticket(); system.out.println("买到票了:"+ticket); } }
至此,一个简单的分布式系统就搭建完毕。
推荐阅读
-
SpringBoot+Dubbo+Zookeeper整合搭建简单的分布式应用
-
SpringBoot整合SpringCloud搭建分布式应用
-
python的正则表达式以及django的搭建和简单应用
-
如何利用IDEA搭建SpringBoot项目整合mybatis实现简单的登录功能
-
asp.net mvc 简单项目框架的搭建(二)—— Spring.Net在Mvc中的简单应用
-
springmvc整合dubbo分布式系统的搭建小例子
-
springmvc整合dubbo分布式系统的搭建小例子
-
javascript 简单的3d网页应用(3d网页可视化编辑器), 搭建几何体 选配材质 纹理 , 导入 导出 示例 ( three.js 初探 六)
-
Docker搭建简单的应用栈与容器Hello World访问详解
-
MFS(moosefs)分布式文件系统最简单的搭建