• 最新版本zookeeper+dubbo-admin


    zookeeper

    下载地址 :https://archive.apache.org/dist/zookeeper/

    1. 修改conf下zoo_sample.cfg - >zoo.cfg
    2. bin下启动zkServer.cmd
    3. 启动成功 :binding to port 0.0.0.0/0.0.0.0:2181

    问题1:zookeper安装

    1.去官网下载apache-zookeeper-3.6.2-bin.tar.gz名字中带有bin的压缩包(就不会出现闪退)
    2.将conf目录下zoo_sample.cfg文件重命名为zoo.cfg
    3.双击zk.Server.cmd启动程序

    问题2:注册中心推荐zookeeper

    下载链接:在3.5.5版本后,官方提供了bin的包,可以不需要配置环境,直接上手查看

    之后以管理员方式启动bin文件夹中的cmd文件

    会报错,我们需要吧conf里的,zoo_simple复制一份,改成zoo.cof

    问题3:修改zookeeper端口号

    zoo.cfg添加

        admin.serverPort=8887
    
    • 1

    问题4:出现ZooKeeper audit is disabled.为日志记录,有无所谓

    修改zkServer.cmd添加"-Dzookeeper.audit.enable=true",以管理员身份运行,

    启动zkCli.cmd查看 ls /

    Dubbo

    下载地址 :https://github.com/apache/dubbo-admin/tree/master,Download-ZIP

    1.dubbo为什么性能高

    rpc框架的速度却决于序列化方式和网络传输方式

    本地对象在网络上传输必须要实现serializable接口,序列化方案有xml,json,二进制流。。

    dubbo采用二进制流(最快),并且dubbo采用socket通信能建立长连接,不用像http需要七步(三握手四挥手)

    dubbo可视化管理,dubboAdmin和minitor。

    dubbo-admin

    链接:https://github.com/apache/dubbo-admin

    下载好之后,这个是dubbo的一个服务管理中心,可以看到我们注册的服务
    在这里插入图片描述

    用cmd打开,mvn clean package -Dmaven.test.skip=true,打成jar包[如果maven打出的包有问题,需要指定apache-maven-3.8.3\conf配置]

    过程可能有点慢,耐心等待

    完成之后,把打包好的jar放入zookeeper根目录
    在这里插入图片描述

    之后先启动zookeeper,再跑jar包:cmd java -jar dubbo-admin-0.5.0.jar

    访问:http://localhost:7001/

    查看是否连接成功, 账号密码 :root/root
    在这里插入图片描述
    注意端口号,8080,如果提示冲突,就是跟zookeeper服务端冲突,用上面zoo.cfg修改端口号即可

    zookeeper:注册中心

    dubbo-admin:是一个监控管理后台


    举例

    provider,服务端server
    在这里插入图片描述

    package com.tang.service;
    
    import org.apache.dubbo.config.annotation.Service;
    import org.springframework.stereotype.Component;
    
    @Service//在项目一启动就注册到注册中心,导入dubbo包内的
    @Component//为什么不加service注解,应为dubbo的注册service,用于区分
    public class TicketServiceImpl implements TicketService{
    
        @Override
        public String getTicket() {
            return "好好学习,天天向上";
        }
    }
    
    
    • 1
    • 2
    • 3
    • 4
    • 5
    • 6
    • 7
    • 8
    • 9
    • 10
    • 11
    • 12
    • 13
    • 14
    • 15
    package com.tang.service;
    
    public interface TicketService {
        public String getTicket();
    }
    
    
    • 1
    • 2
    • 3
    • 4
    • 5
    • 6

    application.properties

    server.port=8001
    
    #注册中心地址
    dubbo.registry.address=zookeeper://127.0.0.1:2181
    #服务名字
    dubbo.application.name=privoder1
    #那些服务要注册
    dubbo.scan.base-packages=com.tang.service
    # dubbo端口号修改,跟admin监控页面冲突
    dubbo.protocol.port=20881
    
    • 1
    • 2
    • 3
    • 4
    • 5
    • 6
    • 7
    • 8
    • 9
    • 10

    启动,启动后查看dubbo-admin
    在这里插入图片描述

    启动过程可能遇到端口冲突问题

    windows查询端口占用命令 :netstat -ano | findstr 8080
    干掉端口进程 :taskkill /f /pid 28808
    linux相关命令 :netstat -anp | grep 8080
    ps -ef | grep java
    kill -9

    pom.xml 依赖不能错

    
    <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 https://maven.apache.org/xsd/maven-4.0.0.xsd">
        <modelVersion>4.0.0modelVersion>
        <parent>
            <groupId>org.springframework.bootgroupId>
            <artifactId>spring-boot-starter-parentartifactId>
            <version>2.7.1version>
            <relativePath/> 
        parent>
        <groupId>com.tanggroupId>
        <artifactId>provider-serverartifactId>
        <version>0.0.1-SNAPSHOTversion>
        <name>provider-servername>
        <description>Demo project for Spring Bootdescription>
        <properties>
            <java.version>8java.version>
        properties>
        <dependencies>
            
            <dependency>
                <groupId>org.apache.dubbogroupId>
                <artifactId>dubbo-spring-boot-starterartifactId>
                <version>2.7.3version>
            dependency>
            <dependency>
                
                <groupId>com.github.sgroschupfgroupId>
                <artifactId>zkclientartifactId>
                <version>0.1version>
            dependency>
            
            <dependency>
                <groupId>org.apache.curatorgroupId>
                <artifactId>curator-frameworkartifactId>
                <version>2.12.0version>
            dependency>
            <dependency>
                <groupId>org.apache.curatorgroupId>
                <artifactId>curator-recipesartifactId>
                <version>2.12.0version>
            dependency>
            <dependency>
                <groupId>org.apache.zookeepergroupId>
                <artifactId>zookeeperartifactId>
                <version>3.4.14version>
                
                <exclusions>
                    <exclusion>
                        <groupId>org.slf4jgroupId>
                        <artifactId>slf4j-log4j12artifactId>
                    exclusion>
                exclusions>
            dependency>
    
    
            <dependency>
                <groupId>org.springframework.bootgroupId>
                <artifactId>spring-boot-starter-webartifactId>
            dependency>
    
            <dependency>
                <groupId>org.springframework.bootgroupId>
                <artifactId>spring-boot-starter-testartifactId>
                <scope>testscope>
            dependency>
    
        dependencies>
    
        <build>
            <plugins>
                <plugin>
                    <groupId>org.springframework.bootgroupId>
                    <artifactId>spring-boot-maven-pluginartifactId>
                plugin>
            plugins>
        build>
    
    project>
    
    
    • 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
    • 26
    • 27
    • 28
    • 29
    • 30
    • 31
    • 32
    • 33
    • 34
    • 35
    • 36
    • 37
    • 38
    • 39
    • 40
    • 41
    • 42
    • 43
    • 44
    • 45
    • 46
    • 47
    • 48
    • 49
    • 50
    • 51
    • 52
    • 53
    • 54
    • 55
    • 56
    • 57
    • 58
    • 59
    • 60
    • 61
    • 62
    • 63
    • 64
    • 65
    • 66
    • 67
    • 68
    • 69
    • 70
    • 71
    • 72
    • 73
    • 74
    • 75
    • 76
    • 77
    • 78
    • 79
    • 80

    customer,客户端server:

    package com.tang.service;
    
    import org.apache.dubbo.config.annotation.Reference;
    import org.springframework.stereotype.Service;
    
    @Service//这里要用spring的注解哟,只有spring可以字自动装配
    public class UserService {
        //想拿到票,需要调用远程服务,拿到我们服务之者的方法,要去注册中心拿服务
        @Reference//引用 Pom坐标可以定义路径相同的接口名
        TicketService ticketService;
        public  void buyTicket(){
            String getTicket = ticketService.getTicket();
            System.out.println("注册中心zk拿到==> "+getTicket);
        }
    }
    
    • 1
    • 2
    • 3
    • 4
    • 5
    • 6
    • 7
    • 8
    • 9
    • 10
    • 11
    • 12
    • 13
    • 14
    • 15
    package com.tang.service;
    
    public interface TicketService {
        public String getTicket();
    }
    
    
    • 1
    • 2
    • 3
    • 4
    • 5
    • 6
    package com.tang;
    
    import com.tang.service.UserService;
    import org.junit.jupiter.api.Test;
    import org.springframework.beans.factory.annotation.Autowired;
    import org.springframework.boot.test.context.SpringBootTest;
    
    @SpringBootTest
    class ConsumerServerApplicationTests {
    
        @Autowired
        UserService userService;
        @Test
        void contextLoads() {
            userService.buyTicket();
        }
    
    }
    
    
    • 1
    • 2
    • 3
    • 4
    • 5
    • 6
    • 7
    • 8
    • 9
    • 10
    • 11
    • 12
    • 13
    • 14
    • 15
    • 16
    • 17
    • 18
    • 19

    在这里插入图片描述

    步骤:
    前提:zookeeper服务已开启!

    1. 提供者服务
      1. 导入依赖
      2. 配置文件,注册中心地址,服务发现名和要扫描的服务
      3. 想要被注册的服务上加上dubbo的service注解和spring的compent注解
    2. 消费者如何消费
      1. 导入依赖
      2. 配置文件,服务发现名,注册中心地址
      3. 我们需要在客户端建立一个一样的服务者接口,直接远程注入就可以使用这个服务的方法了,远程调用注解dubbo的@Reference
  • 相关阅读:
    计算机毕业设计之java+SSM酒店客房预定管理系统
    5G-A,未来已来
    【Seata】深入解读分布式事务解决方案
    【scikit-learn基础】--『预处理』之 缺失值处理
    搭建安信可小安派Windows 开发环境
    JAVA基础知识Fundamental
    算法篇 滑动窗口 leetcode 长度最小的子数组
    【Cocos2D -x | C++】CCNODe学习 |几个常见报错解决 |cocos2d-x“无法打开源文件”
    挑战100天 AI In LeetCode Day05(热题+面试经典150题)
    Qt中简单的并发方式QtConcurrent::run() 方法
  • 原文地址:https://blog.csdn.net/u013080870/article/details/128176705