工具之《zookeeper部署集群模式》

一、zookeeper集群模式
系统为CentOS7
采用一主两从
master 192.168.100.1
slave1 192.168.100.2
slave2 192.168.100.3

二、安装
1、建立目录&下载安装

mkdir -p /appserver/software
cd /appserver/software
wget https://downloads.apache.org/zookeeper/zookeeper-3.5.7/apache-zookeeper-3.5.7-bin.tar.gz
tar -zxvf apache-zookeeper-3.5.7-bin.tar.gz -C ../
chown -R root:root /appserver/apache-zookeeper-3.5.7-bin

注:zookeeper从3.5开始将可执行jar文件和源码包分开了,源码包只有代码
如果下错包,启动会报错:Error: Could not find or load main class org.apache.zookeeper.server.quorum.QuorumPeerMain

三、配置集群
1、复制配置文件&建立data目录

cd /appserver/apache-zookeeper-3.5.7-bin/conf
cp zoo_sample.cfg zoo.cfg
mkdir /appserver/apache-zookeeper-3.5.7-bin/data

2、编辑zoo.cfg
三台配置文件一致,leader由zookeeper选举得出

vi zoo.cfg

修改:
1)存储内存中数据库快照的位置

dataDir=/appserver/apache-zookeeper-3.5.7-bin/data

2)指定清理频率,单位是小时,默认是0,表示不开启自己清理功能

autopurge.purgeInterval=6

3)和上面的参数搭配使用,指定需要保留的文件数目,默认是保留3个

autopurge.snapRetainCount=5

4)服务列表

server.0=192.168.100.1:2888:3888
server.1=192.168.100.2:2888:3888
server.2=192.168.100.3:2888:3888

5)修改8080端口
zookeeper3.5.x使用jetty做web容器,会占用8080端口,如已使用可以换成其他的
该服务是Zookeeper AdminServer,主要用于获取服务器状态监控

admin.serverPort=8081

3、配置myid
在dataDir指定的目录下,创建myid文件,填入对应server.x中的数字。用来唯一标识这个服务。

四、启动命令
1、启动命令:
zkServer.sh start
2、停止命令:
zkServer.sh stop
3、重启命令:
zkServer.sh restart
4、查看集群节点状态:
zkServer.sh status
5、访问Zookeeper AdminServer
http://IP:8081/commands

五、启动日志
slaver1日志:

2020-02-21 09:14:11,428 [myid:1] - INFO  [QuorumPeer[myid=1](plain=[0:0:0:0:0:0:0:0]:2181)(secure=disabled):ZooKeeperServer@938] - minSessionTimeout set to 4000
2020-02-21 09:14:11,428 [myid:1] - INFO  [QuorumPeer[myid=1](plain=[0:0:0:0:0:0:0:0]:2181)(secure=disabled):ZooKeeperServer@947] - maxSessionTimeout set to 40000
2020-02-21 09:14:11,429 [myid:1] - INFO  [QuorumPeer[myid=1](plain=[0:0:0:0:0:0:0:0]:2181)(secure=disabled):ZooKeeperServer@166] - Created server with tickTime 2000 minSessionTimeout 4000 maxSessionTimeout 40000 datadir /appserver/apache-zookeeper-3.5.7-bin/data/version-2 snapdir /appserver/apache-zookeeper-3.5.7-bin/data/version-2
2020-02-21 09:14:11,431 [myid:1] - INFO  [QuorumPeer[myid=1](plain=[0:0:0:0:0:0:0:0]:2181)(secure=disabled):Leader@464] - LEADING - LEADER ELECTION TOOK - 28 MS
2020-02-21 09:14:11,445 [myid:1] - INFO  [QuorumPeer[myid=1](plain=[0:0:0:0:0:0:0:0]:2181)(secure=disabled):FileTxnSnapLog@404] - Snapshotting: 0x100000000 to /appserver/apache-zookeeper-3.5.7-bin/data/version-2/snapshot.100000000
2020-02-21 09:14:12,813 [myid:1] - INFO  [LearnerHandler-/192.168.100.1:49222:LearnerHandler@406] - Follower sid: 0 : info : 192.168.100.1:2888:3888:participant
2020-02-21 09:14:13,108 [myid:1] - INFO  [LearnerHandler-/192.168.100.1:49222:ZKDatabase@295] - On disk txn sync enabled with snapshotSizeFactor 0.33
2020-02-21 09:14:13,109 [myid:1] - INFO  [LearnerHandler-/192.168.100.1:49222:LearnerHandler@708] - Synchronizing with Follower sid: 0 maxCommittedLog=0x0 minCommittedLog=0x0 lastProcessedZxid=0x100000000 peerLastZxid=0x0
2020-02-21 09:14:13,112 [myid:1] - INFO  [LearnerHandler-/192.168.100.1:49222:LearnerHandler@463] - Sending snapshot last zxid of peer is 0x0, zxid of leader is 0x200000000, send zxid of db as 0x100000000, 1 concurrent snapshots, snapshot was exempt from throttle
2020-02-21 09:14:13,123 [myid:1] - INFO  [QuorumPeer[myid=1](plain=[0:0:0:0:0:0:0:0]:2181)(secure=disabled):Leader@1296] - Have quorum of supporters, sids: [ [0, 1],[0, 1] ]; starting up and setting last processed zxid: 0x200000000
2020-02-21 09:14:13,134 [myid:1] - INFO  [QuorumPeer[myid=1](plain=[0:0:0:0:0:0:0:0]:2181)(secure=disabled):CommitProcessor@256] - Configuring CommitProcessor with 1 worker threads.
2020-02-21 09:14:13,707 [myid:1] - INFO  [QuorumPeer[myid=1](plain=[0:0:0:0:0:0:0:0]:2181)(secure=disabled):ContainerManager@64] - Using checkIntervalMs=60000 maxPerMinute=10000
2020-02-21 09:15:07,995 [myid:1] - INFO  [/192.168.100.2:3888:QuorumCnxManager$Listener@924] - Received connection request 192.168.100.3:38234
2020-02-21 09:15:08,005 [myid:1] - INFO  [WorkerReceiver[myid=1]:FastLeaderElection@679] - Notification: 2 (message format version), 2 (n.leader), 0x0 (n.zxid), 0x1 (n.round), LOOKING (n.state), 2 (n.sid), 0x1 (n.peerEPoch), LEADING (my state)0 (n.config version)
2020-02-21 09:15:08,012 [myid:1] - INFO  [WorkerReceiver[myid=1]:FastLeaderElection@679] - Notification: 2 (message format version), 1 (n.leader), 0x100000000 (n.zxid), 0x1 (n.round), LOOKING (n.state), 2 (n.sid), 0x1 (n.peerEPoch), LEADING (my state)0 (n.config version)
2020-02-21 09:15:10,489 [myid:1] - INFO  [LearnerHandler-/192.168.100.3:40110:LearnerHandler@406] - Follower sid: 2 : info : 192.168.100.3:2888:3888:participant
2020-02-21 09:15:15,772 [myid:1] - INFO  [LearnerHandler-/192.168.100.3:40110:ZKDatabase@295] - On disk txn sync enabled with snapshotSizeFactor 0.33
2020-02-21 09:15:15,773 [myid:1] - INFO  [LearnerHandler-/192.168.100.3:40110:LearnerHandler@708] - Synchronizing with Follower sid: 2 maxCommittedLog=0x0 minCommittedLog=0x0 lastProcessedZxid=0x200000000 peerLastZxid=0x0
2020-02-21 09:15:15,776 [myid:1] - INFO  [LearnerHandler-/192.168.100.3:40110:LearnerHandler@463] - Sending snapshot last zxid of peer is 0x0, zxid of leader is 0x200000000, send zxid of db as 0x200000000, 1 concurrent snapshots, snapshot was exempt from throttle

slaver2日志:

2020-02-21 09:15:09,388 [myid:2] - INFO  [QuorumPeer[myid=2](plain=[0:0:0:0:0:0:0:0]:2181)(secure=disabled):ZooKeeperServer@938] - minSessionTimeout set to 4000
2020-02-21 09:15:09,388 [myid:2] - INFO  [QuorumPeer[myid=2](plain=[0:0:0:0:0:0:0:0]:2181)(secure=disabled):ZooKeeperServer@947] - maxSessionTimeout set to 40000
2020-02-21 09:15:09,389 [myid:2] - INFO  [QuorumPeer[myid=2](plain=[0:0:0:0:0:0:0:0]:2181)(secure=disabled):ZooKeeperServer@166] - Created server with tickTime 2000 minSessionTimeout 4000 maxSessionTimeout 40000 datadir /appserver/apache-zookeeper-3.5.7-bin/data/version-2 snapdir /appserver/apache-zookeeper-3.5.7-bin/data/version-2
2020-02-21 09:15:09,389 [myid:2] - INFO  [QuorumPeer[myid=2](plain=[0:0:0:0:0:0:0:0]:2181)(secure=disabled):Follower@69] - FOLLOWING - LEADER ELECTION TOOK - 1373 MS
2020-02-21 09:15:15,778 [myid:2] - INFO  [QuorumPeer[myid=2](plain=[0:0:0:0:0:0:0:0]:2181)(secure=disabled):Learner@395] - Getting a snapshot from leader 0x200000000
2020-02-21 09:15:15,800 [myid:2] - INFO  [QuorumPeer[myid=2](plain=[0:0:0:0:0:0:0:0]:2181)(secure=disabled):Learner@546] - Learner received NEWLEADER message
2020-02-21 09:15:17,110 [myid:2] - INFO  [QuorumPeer[myid=2](plain=[0:0:0:0:0:0:0:0]:2181)(secure=disabled):FileTxnSnapLog@404] - Snapshotting: 0x200000000 to /appserver/apache-zookeeper-3.5.7-bin/data/version-2/snapshot.200000000
2020-02-21 09:15:20,901 [myid:2] - INFO  [QuorumPeer[myid=2](plain=[0:0:0:0:0:0:0:0]:2181)(secure=disabled):Learner@529] - Learner received UPTODATE message
2020-02-21 09:15:20,905 [myid:2] - INFO  [QuorumPeer[myid=2](plain=[0:0:0:0:0:0:0:0]:2181)(secure=disabled):CommitProcessor@256] - Configuring CommitProcessor with 1 worker threads.

master日志:

2020-02-21 09:14:11,379 [myid:0] - INFO  [QuorumPeer[myid=0](plain=[0:0:0:0:0:0:0:0]:2181)(secure=disabled):ZooKeeperServer@938] - minSessionTimeout set to 4000
2020-02-21 09:14:11,379 [myid:0] - INFO  [QuorumPeer[myid=0](plain=[0:0:0:0:0:0:0:0]:2181)(secure=disabled):ZooKeeperServer@947] - maxSessionTimeout set to 40000
2020-02-21 09:14:11,379 [myid:0] - INFO  [QuorumPeer[myid=0](plain=[0:0:0:0:0:0:0:0]:2181)(secure=disabled):ZooKeeperServer@166] - Created server with tickTime 2000 minSessionTimeout 4000 maxSessionTimeout 40000 datadir /appserver/apache-zookeeper-3.5.7-bin/data/version-2 snapdir /appserver/apache-zookeeper-3.5.7-bin/data/version-2
2020-02-21 09:14:11,380 [myid:0] - INFO  [QuorumPeer[myid=0](plain=[0:0:0:0:0:0:0:0]:2181)(secure=disabled):Follower@69] - FOLLOWING - LEADER ELECTION TOOK - 30 MS
2020-02-21 09:14:11,392 [myid:0] - WARN  [QuorumPeer[myid=0](plain=[0:0:0:0:0:0:0:0]:2181)(secure=disabled):Learner@282] - Unexpected exception, tries=0, remaining init limit=20000, connecting to /192.168.100.2:2888
java.net.ConnectException: Connection refused (Connection refused)
        at java.net.PlainSocketImpl.socketConnect(Native Method)
        at java.net.AbstractPlainSocketImpl.doConnect(AbstractPlainSocketImpl.java:350)
        at java.net.AbstractPlainSocketImpl.connectToAddress(AbstractPlainSocketImpl.java:206)
        at java.net.AbstractPlainSocketImpl.connect(AbstractPlainSocketImpl.java:188)
        at java.net.SocksSocketImpl.connect(SocksSocketImpl.java:392)
        at java.net.Socket.connect(Socket.java:589)
        at org.apache.zookeeper.server.quorum.Learner.sockConnect(Learner.java:233)
        at org.apache.zookeeper.server.quorum.Learner.connectToLeader(Learner.java:262)
        at org.apache.zookeeper.server.quorum.Follower.followLeader(Follower.java:77)
        at org.apache.zookeeper.server.quorum.QuorumPeer.run(QuorumPeer.java:1253)
2020-02-21 09:14:13,113 [myid:0] - INFO  [QuorumPeer[myid=0](plain=[0:0:0:0:0:0:0:0]:2181)(secure=disabled):Learner@395] - Getting a snapshot from leader 0x100000000
2020-02-21 09:14:13,118 [myid:0] - INFO  [QuorumPeer[myid=0](plain=[0:0:0:0:0:0:0:0]:2181)(secure=disabled):Learner@546] - Learner received NEWLEADER message
2020-02-21 09:14:13,121 [myid:0] - INFO  [QuorumPeer[myid=0](plain=[0:0:0:0:0:0:0:0]:2181)(secure=disabled):FileTxnSnapLog@404] - Snapshotting: 0x100000000 to /appserver/apache-zookeeper-3.5.7-bin/data/version-2/snapshot.100000000
2020-02-21 09:14:13,711 [myid:0] - INFO  [QuorumPeer[myid=0](plain=[0:0:0:0:0:0:0:0]:2181)(secure=disabled):Learner@529] - Learner received UPTODATE message
2020-02-21 09:14:13,720 [myid:0] - INFO  [QuorumPeer[myid=0](plain=[0:0:0:0:0:0:0:0]:2181)(secure=disabled):CommitProcessor@256] - Configuring CommitProcessor with 1 worker threads.
2020-02-21 09:15:07,982 [myid:0] - INFO  [/192.168.100.1:3888:QuorumCnxManager$Listener@924] - Received connection request 192.168.100.3:40460
2020-02-21 09:15:07,994 [myid:0] - INFO  [WorkerReceiver[myid=0]:FastLeaderElection@679] - Notification: 2 (message format version), 2 (n.leader), 0x0 (n.zxid), 0x1 (n.round), LOOKING (n.state), 2 (n.sid), 0x1 (n.peerEPoch), FOLLOWING (my state)0 (n.config version)
2020-02-21 09:15:08,010 [myid:0] - INFO  [WorkerReceiver[myid=0]:FastLeaderElection@679] - Notification: 2 (message format version), 1 (n.leader), 0x100000000 (n.zxid), 0x1 (n.round), LOOKING (n.state), 2 (n.sid), 0x1 (n.peerEPoch), FOLLOWING (my state)0 (n.config version)

 七、安装管理控制台zkui
项目地址https://github.com/DeemOpen/zkui
1、将代码拉下来,编译成jar包
2、创建目录,上传jar包

mkdir -p /appserver/zkui

把zkui-2.0-SNAPSHOT-jar-with-dependencies.jar和代码目录下的config.cfg、zkui.sh上传到服务(任意一台即可,例如192.168.100.1)
3、修改config.cfg

zkServer=192.168.100.1:2181,192.168.100.2:2181,192.168.100.3:2181

4、修改zkui.sh

#!/usr/bin/env bash

PIDFILE=~/zkui.pid
ZKUIBINDIR=$(cd `dirname $0`; pwd)
ZKUICLASSNAME="zkui-2.0-SNAPSHOT-jar-with-dependencies.jar"
ZKUI_DAEMON_OUT=$ZKUIBINDIR/zkui.out

start(){
    echo  "Starting zkui ... $ZKUIBINDIR"
    if [ -f "$PIDFILE" ]; then
        if kill -0 `cat "$PIDFILE"` > /dev/null 2>&1; then
            echo zkui already running as process `cat "$PIDFILE"`. 
            exit 0
        fi
    fi
    nohup java -jar "$ZKUIBINDIR/$ZKUICLASSNAME" > "$ZKUI_DAEMON_OUT" 2>&1 < /dev/null &
    if [ $? -eq 0 ];
    then
        echo $!>$PIDFILE
        if [ $? -eq 0 ];
        then
            sleep 1
            echo STARTED
        else
            echo FAILED TO WRITE PID
            exit 1
        fi
    else
        echo SERVER DID NOT START
        exit 1
    fi
}

stop(){
    echo -n "Stopping zkui ... "
    if [ ! -f "$PIDFILE" ]
    then
        echo "no zkui to stop (could not find file $PIDFILE)"
    else
        kill -9 $(cat "$PIDFILE")
        rm "$PIDFILE"
        echo STOPPED
    fi
    exit 0
}

case "$1" in
start)
    start
    ;;
stop)
    stop
    ;;
restart)
    shift
    "$0" stop
    sleep 3
    "$0" start
    ;;
*)
    echo "Usage: $0 {start|stop|restart}" >&2
esac

5、命令
启动:zkui.sh start
停止:zkui.sh stop
重启:zkui.sh restart
6、访问zkui界面
http://IP:9090/login
默认使用admin/manager登录 

六、参考资料
https://www.cnblogs.com/ysocean/p/9860529.html
https://www.cnblogs.com/yuyijq/p/3438829.html
https://blog.csdn.net/gloriaied/article/details/103188940
https://blog.csdn.net/topc2000/article/details/100704084
https://blog.csdn.net/smartdt/article/details/79885270
 

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
全套微服务架构,视频学习java微服务架构,包括如下 第1章 微服务简介 001构建单体应用 002微服务解决复杂问题 003微服务的优点 004微服务的缺点 第2章 Linux使用 005Linux 简介 006Linux 与 Windows 比较 007安装 Linux 008Linux 远程控制管理 009Linux 目录结构 010操作文件目录 011系统管理命令 012开关机命令 013压缩命令 014Linux 编辑器 015修改数据源 016常用 APT 命令 017Linux 用户和组管理 018查看目录和文件的权限 019更改操作权限 020安装 Java 021安装 Tomcat 022安装 MySQL 023部署项目 第3章 Docker实战开发 042设置镜像标签 024Docker 简介 025Docker 功能特点 026Docker 系统架构 027Docker 安装 028第一个 Docker 应用程序 029运行交互式的容器 030后台运行与停止容器 031Docker 客户端帮助命令 032运行 Web 容器 033指定 Web 容器映射端口 034查看容器进程 035查看容器状态 036批量移除容器 037Docker Hub 镜像仓库 038获取镜像 039查找镜像 040更新镜像 041创建和移除镜像 043安装 Tomcat 044安装 MySQL 045部署项目 046数据卷简介 047创建数据卷 048备份数据卷 049恢复数据卷 050Docker Compose-安装 051Docker Compose-使用 第4章 使用 GitLab 托管代码 055GitLab简介 056GitLab 安装 057GitLab 设置 058GitLab 账户管理 059GitLab 使用-HTTP 060GitLab 使用-SSH 第5章 Spring Boot 061Spring简史 062 Spring Boot 简介 063 第一个 Spring Boot 应用程序 064 Spring Boot 自定义 Banner 065 Spring Boot 配置 066 Spring Boot Starter POM 067 Spring Boot 日志配置 第6章 集成 MyBatis 068Thymeleaf简介 069 第一个 Thymeleaf 模板页 070 集成 Druid 数据源 071 集成 TkMyBatis 简化 MyBatis 操作 072 集成 PageHelper 分页插件 073 使用 MyBatis Maven Plugin 自动生成代码 074 集成 MyBatis-测试查询 第7章 项目实战 075项目简介 076 创建依赖管理项目 077 创建通用工具项目 078 创建数据库管理项目 079 创建领域模型项目 080 创建管理后台接口项目 081 创建管理后台实现项目 082 为什么要使用 Dubbo 083 再谈微服务-背景介绍 084 再谈微服务-面向服务架构与微服务架构 085 再谈微服务-服务框架对比 1 085 再谈微服务-服务框架对比 2 086 再谈微服务-RPC 对比 REST 087 Dubbo 简介 088 Dubbo 服务治理 089 Dubbo 组件角色 090 Zookeeper 简介 091 Zookeeper 应用举例 092 Zookeeper 集群模式 093 Dubbo Admin 管理控制台 094 系统后台管理-修改所需依赖 095 服务提供者 096 服务消费者 097 测试 JRebel 热部署 098 登录页 099 首页1 099 首页2 100 使用 thymeleaf 模板 101 使用 iframe 展示功能页 102 频道管理功能-列表页布局 103 新增频道 104 频道列表 105 选择父级频道1 105 选择父级频道2 106 表单页的树控件 107 列表页的树表格 108 FastDFS 分布式文件系统简介 109 FastDFS 分布式文件系统安装 110 文章管理功能-改造树控件1 110文章管理功能-改造树控件2 111 文章管理功能-新增文章 112 文章管理功能-使用 PageHelper 进行分页查询 113 文章管理功能-前端 Datatable 控件分页处理1
什么是Zookeeper Zookeeper是一个分布式开源框架,提供了协调分布式应用的基本服务,它向外部应用暴露一组通用服务——分布式同步(Distributed Synchronization)、命名服务(Naming Service)、集群维护(Group Maintenance)等,简化分布式应用协调及其管理的难度,提供高性能的分布式服务。ZooKeeper本身可以以单机模式安装运行,不过它的长处在于通过分布式ZooKeeper集群(一个Leader,多个Follower),基于一定的策略来保证ZooKeeper集群的稳定性和可用性,从而实现分布式应用的可靠性。 1、Zookeeper是为别的分布式程序服务的 2、Zookeeper本身就是一个分布式程序(只要有半数以上节点存活,zk就能正常服务) 3、Zookeeper所提供的服务涵盖:主从协调、服务器节点动态上下线、统一配置管理、分布式共享锁、统> 一名称服务等 4、虽然说可以提供各种服务,但是zookeeper在底层其实只提供了两个功能: 管理(存储,读取)用户程序提交的数据(类似namenode中存放的metadata);  并为用户程序提供数据节点监听服务; Zookeeper集群机制 Zookeeper集群的角色: Leader 和 follower  只要集群中有半数以上节点存活,集群就能提供服务 Zookeeper特性 1、Zookeeper:一个leader,多个follower组成的集群 2、全局数据一致:每个server保存一份相同的数据副本,client无论连接到哪个server,数据都是一致的 3、分布式读写,更新请求转发,由leader实施 4、更新请求顺序进行,来自同一个client的更新请求按其发送顺序依次执行 5、数据更新原子性,一次数据更新要么成功,要么失败 6、实时性,在一定时间范围内,client能读到最新数据 Zookeeper数据结构 1、层次化的目录结构,命名符合常规文件系统规范(类似文件系统)    2、每个节点在zookeeper中叫做znode,并且其有一个唯一的路径标识  3、节点Znode可以包含数据和子节点(但是EPHEMERAL类型的节点不能有子节点) 节点类型  a、Znode有两种类型: 短暂(ephemeral)(create -e /app1/test1 “test1” 客户端断开连接zk删除ephemeral类型节点)  持久(persistent) (create -s /app1/test2 “test2” 客户端断开连接zk不删除persistent类型节点) b、Znode有四种形式的目录节点(默认是persistent ) PERSISTENT  PERSISTENT_SEQUENTIAL(持久序列/test0000000019 )  EPHEMERAL  EPHEMERAL_SEQUENTIAL c、创建znode时设置顺序标识,znode名称后会附加一个值,顺序号是一个单调递增的计数器,由父节点维护          d、在分布式系统中,顺序号可以被用于为所有的事件进行全局排序,这样客户端可以通过顺序号推断事件的顺序 Zookeeper应用场景 数据发布与订阅(配置中心) 发布与订阅模型,即所谓的配置中心,顾名思义就是发布者将数据发布到ZK节点上,供订阅者动态获取数据,实现配置信息的集中式管理和动态更新。例如全局的配置信息,服务式服务框架的服务地址列表等就非常适合使用。 负载均衡 这里说的负载均衡是指软负载均衡。在分布式环境中,为了保证高可用性,通常同一个应用或同一个服务的提供方都会部署多份,达到对等服务。而消费者就须要在这些对等的服务器中选择一个来执行相关的业务逻辑,其中比较典型的是消息中间件中的生产者,消费者负载均衡。 消息中间件中发布者和订阅者的负载均衡,linkedin开源的KafkaMQ和阿里开源的 metaq都是通过zookeeper来做到生产者、消费者的负载均衡。这里以metaq为例如讲下: 生产者负载均衡:metaq发送消息的时候,生产者在发送消息的时候必须选择一台broker上的一个分区来发送消息,因此metaq在运行过程中,会把所有broker和对应的分区信息全部注册到ZK指定节点上,默认的策略是一个依次轮询的过程,生产者在通过ZK获取分区列表之后,会按照brokerId和partition的顺序排列组织成一个有序的分区列表,发送的时候按照从头到尾循环往复的方式选择一个分区来发送消息。 消费负载均衡: 在消费过程中,一个消费者会消费一个或多个分区
Java微服务架构l零从基础到精通高清视频教程全套 第1章 微服务简介 001构建单体应用 002微服务解决复杂问题 003微服务的优点 004微服务的缺点 第2章 Linux使用 005Linux 简介 006Linux 与 Windows 比较 007安装 Linux 008Linux 远程控制管理 009Linux 目录结构 010操作文件目录 011系统管理命令 012开关机命令 013压缩命令 014Linux 编辑器 015修改数据源 016常用 APT 命令 017Linux 用户和组管理 018查看目录和文件的权限 019更改操作权限 020安装 Java 021安装 Tomcat 022安装 MySQL 023部署项目 第3章 Docker实战开发 042设置镜像标签 024Docker 简介 025Docker 功能特点 026Docker 系统架构 027Docker 安装 028第一个 Docker 应用程序 029运行交互式的容器 030后台运行与停止容器 031Docker 客户端帮助命令 032运行 Web 容器 033指定 Web 容器映射端口 034查看容器进程 035查看容器状态 036批量移除容器 037Docker Hub 镜像仓库 038获取镜像 039查找镜像 040更新镜像 041创建和移除镜像 043安装 Tomcat 044安装 MySQL 045部署项目 046数据卷简介 047创建数据卷 048备份数据卷 049恢复数据卷 050Docker Compose-安装 051Docker Compose-使用 第4章 使用 GitLab 托管代码 055GitLab简介 056GitLab 安装 057GitLab 设置 058GitLab 账户管理 059GitLab 使用-HTTP 060GitLab 使用-SSH 第5章 Spring Boot 061Spring简史 062 Spring Boot 简介 063 第一个 Spring Boot 应用程序 064 Spring Boot 自定义 Banner 065 Spring Boot 配置 066 Spring Boot Starter POM 067 Spring Boot 日志配置 第6章 集成 MyBatis 068Thymeleaf简介 069 第一个 Thymeleaf 模板页 070 集成 Druid 数据源 071 集成 TkMyBatis 简化 MyBatis 操作 072 集成 PageHelper 分页插件 073 使用 MyBatis Maven Plugin 自动生成代码 074 集成 MyBatis-测试查询 第7章 项目实战 075项目简介 076 创建依赖管理项目 077 创建通用工具项目 078 创建数据库管理项目 079 创建领域模型项目 080 创建管理后台接口项目 081 创建管理后台实现项目 082 为什么要使用 Dubbo 083 再谈微服务-背景介绍 084 再谈微服务-面向服务架构与微服务架构 085 再谈微服务-服务框架对比 1 085 再谈微服务-服务框架对比 2 086 再谈微服务-RPC 对比 REST 087 Dubbo 简介 088 Dubbo 服务治理 089 Dubbo 组件角色 090 Zookeeper 简介 091 Zookeeper 应用举例 092 Zookeeper 集群模式 093 Dubbo Admin 管理控制台 094 系统后台管理-修改所需依赖 095 服务提供者 096 服务消费者 097 测试 JRebel 热部署 098 登录页 099 首页1 099 首页2 100 使用 thymeleaf 模板 101 使用 iframe 展示功能页 102 频道管理功能-列表页布局 103 新增频道 104 频道列表 105 选择父级频道1 105 选择父级频道2 106 表单页的树控件 107 列表页的树表格 108 FastDFS 分布式文件系统简介 109 FastDFS 分布式文件系统安装 110 文章管理功能-改造树控件1 110文章管理功能-改造树控件2 111 文章管理功能-新增文章 112 文章管理功能-使用 PageHelper 进行分页查询 113 文章管理功能-前端 Datatable 控件分页处理1 113 文章管理功能-前端 Datatable 控件分页处理2 114 文章管理功能-补充内容(关于 PageHelper 的依赖问题) 115 文章管理功能-Thymeleaf 自定义标签1 115 文章管理功能-Thymeleaf 自定义标签2 116 文章管理功能-实现字典标签1 116 文章管理功能-实现字典标签2 117 文章管理功能-实现 FastDFS 客户端 118 文章管理功能-前端 Dropzone 上传图片1 118 文章管理功能-前端 Dropzone 上传图片2 119 文章管理功能-前端 WangEditor 上传图片 120 HBuilder 客户端-创建移动 APP 项目 121 HBuilder 客户端-真机运行项目 122 HBuilder 客户端-HBuilder 的基本使用 123 HBuilder 客户端-使用自定义图标 124 HBuilder 客户端-HBuilder Manifest 文件说明 125 HBuilder 客户端-实现底部选项卡切换1 125 HBuilder 客户端-实现底部选项卡切换2 126 HBuilder 客户端-HBuilder 自定义代码块 127 HBuilder 客户端-打开新窗口 128 使用 API Gateway 统一服务接口-API Gateway 简介 129 使用 API Gateway 统一服务接口-创建频道服务 130使用 API Gateway 统一服务接口-创建文章服务 131 使用 API Gateway 统一服务接口-创建 API Gateway 132 使用 API Gateway 统一服务接口-Swagger2 生成接口文档 133 使用 API Gateway 统一服务接口-完善 API 网关代码 134 客户端与服务端通信-客户端请求服务端 135 客户端与服务端通信-服务端封装响应结构 136 客户端与服务端通信-客户端封装数据结构 137 客户端与服务端通信-客户端封装 Ajax 请求1 137 客户端与服务端通信-客户端封装 Ajax 请求2 138 客户端与服务端通信-解决跨域问题 139 Redis 为数据添加缓存-Redis HA 简介 140 Redis 为数据添加缓存-Redis Sentinel 高可用集群部署 141 Redis 为数据添加缓存-Redis 客户端的使用 142 Redis 为数据添加缓存-Spring Boot 集成 Redis1 142 Redis 为数据添加缓存-Spring Boot 集成 Redis2 143 HBuilder 客户端-前端功能编码演示01(可略过) 144 HBuilder 客户端-前端功能编码演示02(可略过) 145 HBuilder 客户端-前端功能编码演示03(可略过)1 145 HBuilder 客户端-前端功能编码演示03(可略过)2 146 HBuilder 客户端-前端功能编码演示04(可略过)1 146 HBuilder 客户端-前端功能编码演示04(可略过)2 147 HBuilder 客户端-前端功能编码演示05(可略过)1 147 HBuilder 客户端-前端功能编码演示05(可略过)2 148 Solr 全文搜索引擎-Solr 简介 149 Solr 全文搜索引擎-Solr 服务器部署 150 Solr 全文搜索引擎-Solr 配置字段域 151 Solr 全文搜索引擎-Solr 维护功能 152 Solr 全文搜索引擎-Solr 查询与高亮显示 153 Solr 全文搜索引擎-Spring Boot 集成 Solr 154 Solr 全文搜索引擎-完成测试类 CRUD 功能 155 Solr 全文搜索引擎-实现搜索接口 156 Spring Boot 启用 Profile 157 Docker 私服搭建 158 项目的容器化部署1 159 项目的容器化部署2.1 159 项目的容器化部署2.2 160 项目的容器化部署3.1 160 项目的容器化部署3.2 161 基本概念 162 操作流程 163 GitLab CI

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值