搭建dubbo+zookeeper+dubboadmin分布式服务框架(windows平台下)
1.zookeeper注册中心的配置安装
- 1.1 下载zookeeper包(zookeeper-3.4.6.tar.gz),ZooKeeper是一个分布式的,开放源码的分布式应用程序协调服务,是Google的Chubby一个开源的实现,是Hadoop和Hbase的重要组件。它是一个为分布式应用提供一致性服务的软件,提供的功能包括:配置维护、名字 服务、分布式同步、组服务等。
- 1.2 将下载的包解压,然后在.\zookeeper-3.4.6\conf\路径下找到:zoo_sample.cfg文件,这个是配置的实例文件,参考这个文件建立zoo.cfg文件
1 2 3 4 5 6 7 8 9 10 11 12 | # The number of milliseconds of each tick //ZK中的一个时间单元2000ms tickTime= 2000 # The number of ticks that the initial # synchronization phase can take //Leader允许Follower在initLimit时间内完成初始化工作。 initLimit= 10 # The number of ticks that can pass between # sending a request and getting an acknowledgement syncLimit= 5 # the directory where the snapshot is stored.\\就是把内存中的数据存储成快照文件snapshot的目录 dataDir=E:\\dubbo\\zookeeperB\\data # the port at which the clients will connect clientPort= 2181 |
1.3
然后点击E:\software\zookeeper-3.4.6\bin路径下面的zkServer.cmd启动zookeeper
2.dubboadmin监控中心的安装配置
首先下载tomacat,安装配置(略)
下载dubbo-admin包(dubbo-admin-2.8.4.war)
找到 tomcat安装路径下的 .\webapps\ROOT目录,然后清空里面的所有文件
将dubbo-admin包(dubbo-admin-2.8.4.war)解压到此文件中
在解压的文件中找到\WEB-INF文件夹下的dubbo.properties文件,然后进行配置,默认属性配置如下:
1 2 3 | dubbo.registry.address=zookeeper: //127.0.0.1:2181 dubbo.admin.root.password=root dubbo.admin.guest.password=guest |
然后启动tomcat(zookeeper已启动,此步tomcat要访问zookeeper,如果zk没有启动,tomcat会一直等待其启动)。在浏览器中输入http://127.0.0.1:8080/dubbo-admin-2.8.4,进入监控中心的管理界面(默认管理员账户密码为:root,root)。
3.编写生产者和消费者
- 3.1 定义生产者需要提供给消费者调用的服务接口
1 2 3 4 5 | public interface PmsUserFacade{ public PmsUser getById(Long userId); } |
- 3.2 生产者实现接口
1 2 3 4 5 6 7 8 9 10 11 | @Service ( "pmsUserFacade" ) public class PmsUserFacadeImpl implements PmsUserFacade { @Autowired private PmsUserBiz pmsUserBiz; public PmsUser getById(Long userId) { return pmsUserBiz.getById(userId); } } |
- 3.3生产者发布提供给消费者的接口到zookeeper注册中心dubbo-provider.xml
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 | <?xml version= "1.0" encoding= "UTF-8" ?> <beans xmlns= "http://www.springframework.org/schema/beans" xmlns:xsi= "http://www.w3.org/2001/XMLSchema-instance" xmlns:dubbo= "http://code.alibabatech.com/schema/dubbo" xsi:schemaLocation="http: //www.springframework.org/schema/beans http: //www.springframework.org/schema/beans/spring-beans.xsd http: //code.alibabatech.com/schema/dubbo http: //code.alibabatech.com/schema/dubbo/dubbo.xsd"> <!-- 提供方应用信息,用于计算依赖关系 --> <dubbo:application name= "gw-service-user" /> <!-- 使用zookeeper注册中心暴露服务地址 --> <dubbo:registry protocol= "zookeeper" address= "192.168.152.1:2181" /> <!-- 用dubbo协议在 20880 端口暴露服务 --> <dubbo:protocol name= "dubbo" port= "20880" /> <!-- 暴露的用户服务接口 --> <dubbo:service interface = "lgs.user.service.PmsUserFacade" ref= "pmsUserFacade" /> </beans> |
- 3.4 消费者通过dubbo配置文件获取生产者发布到zookeeper注册中心的服务接口dubbo-consumer.xml
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 | <?xml version= "1.0" encoding= "UTF-8" ?> <beans xmlns= "http://www.springframework.org/schema/beans" xmlns:xsi= "http://www.w3.org/2001/XMLSchema-instance" xmlns:dubbo= "http://code.alibabatech.com/schema/dubbo" xsi:schemaLocation="http: //www.springframework.org/schema/beans http: //www.springframework.org/schema/beans/spring-beans.xsd http: //code.alibabatech.com/schema/dubbo http: //code.alibabatech.com/schema/dubbo/dubbo.xsd"> <!-- 消费方应用名,用于计算依赖关系,不是匹配条件,不要与提供方一样 --> <dubbo:application name= "edu-web-boss" /> <!-- 使用zookeeper注册中心暴露服务地址 --> <!-- 注册中心地址 --> <dubbo:registry protocol= "zookeeper" address= "192.168.152.1:2181" /> <!-- 需要从zookeeper注册中心获取用户服务接口 check= "false" 表示访问的时候才检测接口是否存在,启动时不检测 --> <dubbo:reference interface = "lgs.user.service.PmsUserFacade" id= "pmsUserFacade" check= "false" /> </beans> |
- 3.5 消费者获取到zookeeper注册中心的接口以后调用生产者获取数据
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 | @Scope ( "prototype" ) public class PmsUserAction extends BaseAction { public String viewPmsUserUI() { try { Long userId = getLong( "id" ); PmsUser pmsUser = pmsUserFacade.getById(userId); if (pmsUser == null ) { return operateError( "无法获取要查看的数据" ); } this .putData( "UserStatusEnumList" , UserStatusEnum.values()); this .putData( "UserStatusEnum" , UserStatusEnum.toMap()); this .putData( "UserTypeEnumList" , UserTypeEnum.values()); this .putData( "UserTypeEnum" , UserTypeEnum.toMap()); this .pushData(pmsUser); return "PmsUserView" ; } catch (Exception e) { log.error( "== viewPmsUserUI exception:" , e); return operateError( "获取数据失败" ); } } } |
- 3.6 分别启动生产者和消费者就能在dubboadmin监控中心看到对应的服务,也可以看到生产者服务暴露的接口,这里要注意:消费者要通过页面访问以后才能在dubboadmin监控中心看到
分类:
zookeeper
【推荐】国内首个AI IDE,深度理解中文开发场景,立即下载体验Trae
【推荐】编程新体验,更懂你的AI,立即体验豆包MarsCode编程助手
【推荐】抖音旗下AI助手豆包,你的智能百科全书,全免费不限次数
【推荐】轻量又高性能的 SSH 工具 IShell:AI 加持,快人一步
· 从 HTTP 原因短语缺失研究 HTTP/2 和 HTTP/3 的设计差异
· AI与.NET技术实操系列:向量存储与相似性搜索在 .NET 中的实现
· 基于Microsoft.Extensions.AI核心库实现RAG应用
· Linux系列:如何用heaptrack跟踪.NET程序的非托管内存泄露
· 开发者必知的日志记录最佳实践
· winform 绘制太阳,地球,月球 运作规律
· 超详细:普通电脑也行Windows部署deepseek R1训练数据并当服务器共享给他人
· TypeScript + Deepseek 打造卜卦网站:技术与玄学的结合
· AI 智能体引爆开源社区「GitHub 热点速览」
· 写一个简单的SQL生成工具