从零开始搭建zookeeper+dubboAdmin+dubbo遇到的情况

news/2025/6/27 2:35:37

文章目录

  • 前言
  • 下载zookeeper
    • 解压
    • 修改配置文件
    • 启动zookeeper
    • 下载dubboAdmin
    • 解压dubbo-admin-develop.zip
    • 修改配置
    • mvn打包
    • 启动dubbo-admin服务器
    • 登录dubbo-admin
  • 使用dubbo
    • 简单构建
    • 负载均衡

前言

博主使用了虚拟机搭建了zookeeper集群,但是dubboAdmin在宿主机运行,无法连接到虚拟机里面的zookeeper集群,配置了防火墙也没用,但在宿主机上搭建zookeeper服务器,可以秒连接,可能是由于dubboAdmin设置了连接超时,如果dubboAdmin无法连接zookeeper就无法启动,所以这里是在window环境下使用zookeeper,如果想看linux如何搭建zookeeper集群可以看我这篇文章 Linux 从零开始部署zookeeper集群遇到的问题

下载zookeeper

在浏览器运行如下地址就可以下载apache-zookeeper-3.7.0-bin.tar.gz包了
https://dlcdn.apache.org/zookeeper/zookeeper-3.7.0/apache-zookeeper-3.7.0-bin.tar.gz

解压

下载后就是解压了,windows解压使用专门的解压软件即可如WinRAR,解压后得到如下文件夹
在这里插入图片描述

修改配置文件

将conf文件夹下的zoo_sample.cfg名称修改为zoo.cfg,并修改其内容,将dataDir改为如下,其他就无须改变了

dataDir=E:\apache-zookeeper-3.7.0-bin\data

启动zookeeper

最好下个git,这样右键后就有git bush命令行工具了,如果没有下载使用window命令行也可以,window键+R出现运行,然后输入cmd回车,如下
在这里插入图片描述

cd E:\apache-zookeeper-3.7.0-bin
cd bin
./zkServer.cmd

出现如下情况,则启动成功
在这里插入图片描述

下载dubboAdmin

进入网址https://gitcode.net/mirrors/apache/dubbo-admin,点克隆下载zip文件,得到dubbo-admin-develop.zip,这是新版的dubboAdmin,老版本的dubboAdmin打包成war需要部署在tomcat服务器中,然后我试过很多版本的tomcat都无法配置成功

在这里插入图片描述

解压dubbo-admin-develop.zip

得到如下文件夹
在这里插入图片描述

修改配置

打开如下路径dubbo-admin-develop\dubbo-admin-server\src\main\resources下的application.properties,修改其配置,修改端口即可,其他不用变,因为windows下的zookeeper会占用8080端口,而dubbo-admin-develop默认启动端口为8080,下面就是zookeeper服务器的地址,如果是虚拟机将127.0.0.1改为虚拟机中运行ifconfig显示的ip地址,但是很有可能连接不上
在这里插入图片描述

mvn打包

使用mvn必须安装maven并配置好mvn环境变量,使用dubbo必须有jdk,在dubbo-admin-develop目录下运行mvn package -Dmaven.test.skip=true,打包的时候可能会出现问题,因为需要安装node,此时会卡住,但是没关系,解决方法就是关闭命令行,重新运行如下命令打包即可

mvn package -Dmaven.test.skip=true

在这里插入图片描述
打包成功出现如下信息
在这里插入图片描述

启动dubbo-admin服务器

将命令行移动到dubbo-admin-develop\dubbo-admin-server\target目录下,执行如下代码,注意dubbo-admin-server-0.4.0.jar名称以你自己的电脑上名字为准,因为以后可能版本不同

java -jar dubbo-admin-server-0.4.0.jar

出现如下信息,且没有报错则启动成功
在这里插入图片描述

登录dubbo-admin

输入http://localhost:8081/就会默认跳转到登录界面,默认登录的账户是root密码是root,如果不对则在dubbo-admin-develop\dubbo-admin-server\src\main\resources下的application.properties这个配置文件查看,如下配置就是决定账号和密码
在这里插入图片描述

在这里插入图片描述
登录成功出现如下界面,表示dubboAdmin启动成功
在这里插入图片描述

使用dubbo

简单构建

按照如下目录结构创建,且只有6个文件有内容,在下面会一一列出
在这里插入图片描述
pmx.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><groupId>com.lolxxs</groupId><artifactId>springboot_dubbo</artifactId><version>1.0-SNAPSHOT</version><parent><groupId>org.springframework.boot</groupId><artifactId>spring-boot-starter-parent</artifactId><version>2.4.1</version><relativePath/> <!-- lookup parent from repository --></parent><dependencies><dependency><groupId>org.springframework.boot</groupId><artifactId>spring-boot-starter-web</artifactId></dependency><!-- 整合dubbo --><dependency><groupId>io.dubbo.springboot</groupId><artifactId>spring-boot-starter-dubbo</artifactId><version>1.0.0</version></dependency><!-- zookeeper客户端 --><dependency><groupId>com.101tec</groupId><artifactId>zkclient</artifactId><version>0.7</version></dependency></dependencies>
</project>

DubboApplication.java

package com.lolxxs;import org.springframework.boot.SpringApplication;
import org.springframework.boot.autoconfigure.SpringBootApplication;@SpringBootApplication
public class DubboApplication {public static void main(String[] args) {SpringApplication.run(DubboApplication.class);}
}

TestService.java

package com.lolxxs.service;public interface TestService {String testDubbo();
}

TestService.java

package com.lolxxs.service.impl;import com.alibaba.dubbo.config.annotation.Service;
import com.alibaba.dubbo.rpc.RpcContext;
import com.lolxxs.service.TestService;@Service(version = "1.0.0", timeout = 3000)
public class TestServiceImpl implements TestService {@Overridepublic String testDubbo() {System.out.println("调用了");return  "远程地址"+ RpcContext.getContext().getRemoteAddress()+" 本地地址"+ RpcContext.getContext().getLocalAddress();}
}

TestController.java

package com.lolxxs.controller;import com.alibaba.dubbo.config.annotation.Reference;
import com.alibaba.dubbo.rpc.RpcContext;
import com.lolxxs.service.TestService;
import org.springframework.web.bind.annotation.GetMapping;
import org.springframework.web.bind.annotation.RequestMapping;
import org.springframework.web.bind.annotation.RestController;@RestController
@RequestMapping("/consumer")
public class TestController {@Reference(version = "1.0.0", timeout = 300)private TestService testService;@GetMapping("/test")public String getTest() {return testService.testDubbo();}
}

application.yml

server:port: 9000
spring:dubbo:application:name: springboot-dubbo-demoregistry:address: zookeeper://127.0.0.1port: 2181protocol:name: dubboport: 20890scan: com.lolxxs.service

创建好直接运行DubboApplication类
在这里插入图片描述
出现如下信息说明启动了dubbo服务,并且dubbo服务成功连接zookeeper


点击搜索,会发现多出了一个,就是我们刚刚创建的服务,也就是服务器的提供者
在这里插入图片描述
点击最后一个详情,出现如下,说明只有一个dubbo服务
在这里插入图片描述
我们启动好了服务提供者(生产者),也就要启动服务消费者,只需要改动配置文件后application.yml,再次点击DubboApplication类中的按钮启动即可,注意之前的服务器不能关闭,idea可以启动多个服务器,eclipse我以前用过好像没法启动多个服务器,配置文件修改端口和包扫描scan改为扫描controller包
application.yml

server:port: 9002
spring:dubbo:application:name: springboot-dubbo-consumerregistry:address: zookeeper://127.0.0.1port: 2181protocol:name: dubboport: 20890scan: com.lolxxs.controller

启动成功后,有两种方法测试,一种是直接在浏览器输入http://localhost:9002/consumer/test,第二种就是使用postman,在postman输入http://localhost:9002/consumer/test,使用get请求,这里为了简单使用浏览器输入,如下,可以看到收到响应
在这里插入图片描述
并且可以看到,第一个服务器是服务器提供者,第二个服务器是服务器消费者,我们访问的是服务器消费者,但是却是服务器提供者执行的代码,这就是RPC(Remote Procedure Call)
在这里插入图片描述

负载均衡

观察负载均衡我们需要启动两个服务器提供者,修改配置文件即可,两个服务提供者的端口不能相同,并且protocol下面的端口也不能相同,服务消费者和上面配置一模一样。注意两个服务提供者的application.name必须相同,要不然它们就是两种服务了,不是一种服务的两个服务器提供者

服务提供者1
application.yml

server:port: 9000
spring:dubbo:application:name: springboot-dubbo-demoregistry:address: zookeeper://127.0.0.1port: 2181protocol:name: dubboport: 20890scan: com.lolxxs.service

服务提供者2
application.yml

server:port: 9001
spring:dubbo:application:name: springboot-dubbo-demoregistry:address: zookeeper://127.0.0.1port: 2181protocol:name: dubboport: 20891scan: com.lolxxs.service

服务消费者
application.yml

server:port: 9002
spring:dubbo:application:name: springboot-dubbo-consumerregistry:address: zookeeper://127.0.0.1port: 2181protocol:name: dubboport: 20890scan: com.lolxxs.controller

然后依次启动三个服务器,查看dubboAdmin,可以发现消费者和服务提供者都注册成功了
在这里插入图片描述
点击服务提供者的详情,可以发现该服务现在有两个提供者了,所以就可以使用负载均衡策略了
在这里插入图片描述

在浏览器多次输入http://localhost:9002/consumer/test,会发现请求同一个地址,访问的服务器可能不同,本地地址不同,也就是我们上面配置的dubbo暴露端口
在这里插入图片描述
在这里插入图片描述
查看idea中服务器运行情况,也可以发现两个服务提供者服务器都运行了,且运行次数不同

文章来源:https://blog.csdn.net/weixin_45754452/article/details/123128065
本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:https://dhexx.cn/news/show-764091.html

相关文章

ORACLE常用系统查询SQL

为什么80%的码农都做不了架构师&#xff1f;>>> 1 查询系统所有对象 SELECT OWNER, OBJECT_NAME, OBJECT_TYPE, CREATED, LAST_DDL_TIME, TIMESTAMP, STATUS FROM DBA_OBJECTS WHERE OWNERUPPER(SCOTT)2 查看系统所有表 SELECT OWNER, TABLE_NAME, TABLESPACE_NA…

世纪前线网络质量测试工具 是什么_软件质量保证与测试教与学(教学大纲)...

中文名称&#xff1a; 软件质量保证与测试英文名称&#xff1a; Software QualityAssurance and Testing开课学院&#xff1a; 计算机科学学院总学时&#xff1a; 64学分&#xff1a; 3先修课程&#xff1a; C语言程序设计、面向对象程序设计…

关于Dubbo的mock=true降级无法调用降级类ServiceMock的解决方案

问题 消费者使用mock“true”&#xff0c;想调用TestServiceMock进行服务降级无法调用 原因 我的项目结构如下&#xff0c;首先要知道服务降级代码应该是谁执行的&#xff0c;服务降级是服务消费者也就是controller包处对应的服务执行的&#xff0c;因为我只是测试dubbo怎么…

如何让EditText禁止调用小键盘

需求&#xff1a;&#xff08;1&#xff09;EditText在获取焦点的时候访问服务器返回信息列表&#xff08;2&#xff09;EditText当不失去焦点的情况再次点击访问服务器返回信息列表&#xff08;3&#xff09;EditText在任何时候都不能调用小键盘&#xff0c;因为此处不能手动输…

12864液晶8x16ascii点阵_Arduino基础入门篇31—LCD1602液晶显示

LCD1602显示LCD1602也叫1602字符型液晶&#xff0c;是一种专门用来显示字母、数字、符号的点阵型液晶模块&#xff0c;能同时显示16X2即32个字符。本篇我们来认识LCD1602&#xff0c;驱动它显示「Hello World」。1. LCD1602介绍对于单片机爱好者和电子爱好者来说&#xff0c;或…

从零开始搭建RabbitMQ集群遇到的问题

文章目录安装RabbitMQ安装el环境安装RabbitMQ启动RabbitMQ启动RabbitMQ管理界面宿主机连接RabbitMQ管理界面RabbitMQ集群普通模式镜像模式安装RabbitMQ 安装el环境 RabbitMQ运行在el环境&#xff0c;所以安装RabbitMQ之前必须安装el环境并且版本一定要对应&#xff0c;不能安…

什么格式的照片可以是透明的

在我们常用图片的格式中&#xff0c;像BMP、JPG格式的图片是不能保存透明信息的,系统会默认为白色背景。GIF格式的图片可以保存透明信息&#xff0c;但GIF格式的图片最多只能有256种颜色&#xff0c;因而只能使用在对图片要求不高的场合。另一种格式&#xff1a;PNG格式&#x…

台式电脑耳机插孔在哪_充电听歌两不误手机耳机转接头分线器推荐

现如今&#xff0c;手机配件越来越丰富&#xff0c;功能也越来越强大&#xff0c;但总有一些场景始终无法实现在一个产品上面实现&#xff0c;边充电边吃鸡边语音&#xff0c;一边听歌边充电边通话等等。而在耳机转接头和分线器这类的手机配件产品&#xff0c;很多时候没有统一…

@HystrixCommand注解不起作用

问题 服务层加了HystrixCommand&#xff0c;在我主动关闭消费者时不执行降级逻辑&#xff0c;而直接报错 Service public class RibbonService {AutowiredRestTemplate restTemplate;HystrixCommand(fallbackMethod "addServiceFallback")public String addServic…

1.java程序启动参数配置

2019独角兽企业重金招聘Python工程师标准>>> JAVA_OPTS" -Xss1024k -Xms8192m -Xmx8192m -Xmn3072m -XX:PermSize64m -XX:MaxPermSize300m " 参数说明&#xff1a; -server:一定要作为第一个参数&#xff0c;在多个CPU时性能 -Xss&#xff1a;每个线程的堆…