各种工具的安装与卸载
前端
1 less
npm install -g less
2 node
配置环境变量
NODE_HOME= nodejs安装目录
PATH=xxxx;%NODE_HOME%
node_modules文件夹的问题
文件夹以及文件过多过碎,当我们将项目整体拷贝给别人的时候,,传输速度会很慢很慢.
复杂的模块依赖关系需要被记录,确保模块的版本和当前保持一致,否则会导致当前项目运行报错。所以package.json就诞生了
package.json文件的作用
项目描述文件,记录了当前项目信息,例如项目名称、版本、作者、github地址、当前项目依赖了哪些第三方模块等。
使用npm init -y(这个选项就是yes的意思,没有这个选项,就要手动设置)命令生成。
当我们下载别人的文件时,一般没有 node_modules这个文件夹,项目就运行不起来,所以,我们需要使用npm install命令,
这个命令会自动找到package.json中,然后下载相应的依赖到node_modules.
3 npm
npm (node package manager) : node的第三方模块管理工具
下载:npm install 模块名称 # 默认在下载的目录下生成node_modules。
卸载:npm unintall package # 模块名称
npm install --save 、--save-dev 、-D、-S 的区别
1、npm install <=> npm i
--save <=> -S
--save-dev <=> -D
npm run start <=> npm start // 对应"scripts"里的"start"命令
2、npm i --save-dev
工程构建(开发时、“打包”时)依赖 ;例:xxx-cli , less-loader , babel-loader...
3、npm i --save
项目(运行时、发布到生产环境时)依赖;例:antd , element,react...
5、使用 npm i 安装package.json里的依赖时,两部分的包都会pull下来
使用 --prod
npm i --prod <=> npm i --production // 仅会拉取dependencies中的依赖
npm常规配置
命令
//设置淘宝源
npm config set registry https://registry.npm.taobao.org
//设置公司的源
npm config set registry http://127.0.0.1:4873
//查看源,可以看到设置过的所有的源
npm config get registry
通过使用cnpm安装
npm install -g cnpm --registry=https://registry.npm.taobao.org # 这里的意思就是安装cnpm,并且registry=https://registry.npm.taobao.org
使用cnpm代替npm(因为npm下载慢) cnpm install xxx
windows:
npm config set cache "E:\installation_program\nodeRepository\npm_cache" # 设置安装模块的缓存
npm config set prefix "E:\installation_program\nodeRepository\npm_global" # 设置全局模块的下载位置
注意:当你设置这个的时候,一定要设置相应的环境变量。比如
npm install -g @vue/cli 这里生成的vue命令在E:\installation_program\nodeRepository\npm_global目录下,必须配置环境变量才能识别到vue命令,否则找不到该命令
4 cnpm
有两个办法:
1、安装cnpm
命令:npm install cnpm -g --registry=https://registry.npm.taobao.org
以后就用 cnpm 代替 npm 做操作。从地址看出这是淘宝的国内镜像,比较快。据说每10分钟更新一次仓库,同步性也好
2、更改npm的绑定地址
命令:npm config set registry https://registry.npm.taobao.org
这样以后还是用npm,但已切换到淘宝镜像
更改后可通过下面命令来验证是否成功
npm config get registry
当然,想换回来也行,npm的原始仓库地址是 https://registry.npmjs.org/
2、更改npm的绑定地址
命令:npm config set registry https://registry.npm.taobao.org
这样以后还是用npm,但已切换到淘宝镜像
更改后可通过下面命令来验证是否成功
npm config get registry
当然,想换回来也行,npm的原始仓库地址是 https://registry.npmjs.org/
npm config list # 查看npm的配置信息
5 nodemon
nodemon是一个命令行工具,用以辅助项目开发。
在Node.js中,每次修改文件都要在命令行工具中重新执行该文件,非常繁琐。
使用npm install -g nodemon下载它
在命令行工具中用nodemon命令替代node命令执行文件
6 nrm
nrm ( npm registry manager ):npm下载地址切换工具
npm默认的下载地址在国外,国内下载速度慢
使用步骤
使用npm install nrm –g 下载它
查询可用下载地址列表 nrm ls
切换npm下载地址 nrm use 下载地址名称
7 Gulp
npm install gulp
基于node平台开发的前端构建工具
将机械化操作编写成任务, 想要执行机械化操作时执行一个命令行命令任务就能自动执行了.
用机器代替手工,提高开发效率。
8 Express
Express是一个基于Node平台的web应用开发框架,它提供了一系列的强大特性,帮助你创建各种Web应用。我们可以使用 npm install express 命令进行下载。
提供了方便简洁的路由定义方式
对获取HTTP请求参数进行了简化处理
对模板引擎支持程度高,方便渲染动态HTML页面
提供了中间件机制有效控制HTTP请求
拥有大量第三方中间件对功能进行扩展
9 express-art-template
为了使art-template模板引擎能够更好的和Express框架配合,模板引擎官方在原art-template模板引擎的基础上封装了express-art-template。
使用npm install art-template express-art-template命令进行安装。
10 vue-cli的卸载与安装(包括创建项目)
第一步:安装node环境
参看前面步骤即可
第二步:安装脚手架环境
安装
1.x或2.x
npm install vue-cli -g
3.x以上
npm install -g @vue/cli
# OR
yarn global add @vue/cli
卸载vue-cli(1.x 或2.x)
npm uninstall vue-cli -g 或yarn global remove vue-cli
卸载cli3
npm uninstall -g @vue/cli 或 yarn global remove @vue/cli
升级
如需升级全局的v Vue CLI 包,请运行:
npm update -g @vue/cli
# 或者
yarn global upgrade --latest @vue/cli
创建vue-cli2项目
vue init webpack 项目名称
创建vue-cli3项目
图形界面的方式创建项目
vue ui
通过命令行创建(主流方式)
vue create 项目名称
脚手架2启动方式
cd 项目
npm run dev
脚手架3启动方式
cd 项目
npm run serve
安装serve:npm install -g serve # 因为你最后直接给的是打包文件,交工之前直接测试一下,运行打包文件,查看项目是否完整
脚手架2打包
npm run build # 生成的是build文件
脚手架3打包
npm run build # 生成的是dist文件
npm install -g serve
脚手架2本机测试
serve build # 因为你最后直接给的是打包文件,交工之前直接测试一下,运行打包文件,查看项目是否完整
脚手架3本机测试
serve dist
11 Element-UI 的基本使用
脚手架2
1. 基于命令行方式手动安装
- 安装依赖包 npm i element-ui –S
- 导入 Element-UI 相关资源
// 导入组件库
import ElementUI from 'element-ui';
// 导入组件相关样式
import 'element-ui/lib/theme-chalk/index.css';
// 配置 Vue 插件
Vue.use(ElementUI);
2. 基于图形化界面自动安装
- 运行 vue ui 命令,打开图形化界面
- 通过 Vue 项目管理器,进入具体的项目配置面板
- 点击 插件 -> 添加插件,进入插件查询面板
- 搜索 vue-cli-plugin-element 并安装
- 配置插件,实现按需导入,从而减少打包后项目的体积
脚手架3
1 安装
npm i element-ui -S
2 引入
import ElementPlus from 'element-plus';
import 'element-plus/lib/theme-chalk/index.css';
createApp(App).use(ElementPlus).mount('#app')
12 在脚手架中使用axios
vue 2
# 1.安装axios
npm install --save axios vue-axios
# 2.配置main.js中引入axios
import axios from 'axios'
import VueAxios from 'vue-axios'
# 3.使用axios
Vue.use(VueAxios, axios)
# 使用axios
Vue.axios.get(api).then((response) => {
console.log(response.data)
})
this.axios.get(api).then((response) => {
console.log(response.data)
})
this.$http.get(api).then((response) => {
console.log(response.data)
})
vue 3
import axios from 'axios'
import VueAxios from 'vue-axios'
createApp(App).use(VueAxios, axios).mount('#app')
使用
this.axios.get(api).then((response) => {
console.log(response.data)
})
this.$http.get(api).then((response) => {
console.log(response.data)
})
13 Vuex
Vue 2
1. 安装 vuex 依赖包
npm install vuex --save
2. 导入 vuex 包
import Vuex from 'vuex'
Vue.use(Vuex)
3. 创建 store 对象
const store = new Vuex.Store({
state: {
count: 0
},
mutations: {
increment (state) {
state.count++
}
}
})
现在,你可以通过 store.state 来获取状态对象,以及通过 store.commit 方法触发状态变更:
store.commit('increment')
console.log(store.state.count) // -> 1
4. 将 store 对象挂载到 vue 实例中
new Vue({
el: '#app',
render: h => h(app),
router,
// 将创建的共享数据对象,挂载到 Vue 实例中
// 所有的组件,就可以直接从 store 中获取全局的数据了
store
})
5 现在我们可以从组件的方法提交一个变更:
methods: {
increment() {
this.$store.commit('increment')
console.log(this.$store.state.count)
}
}
Vue3
npm install vuex@next --save
import { createStore } from 'vuex'
// 创建一个新的 store 实例
const store = createStore({
state () {
return {
count: 0
}
},
mutations: {
increment (state) {
state.count++
}
}
})
createApp(App).use(store).mount('#app')
现在,你可以通过 store.state 来获取状态对象,并通过 store.commit 方法触发状态变更:
store.commit('increment')
console.log(store.state.count) // -> 1
在 Vue 组件中, 可以通过 this.$store 访问store实例。现在我们可以从组件的方法提交一个变更:
methods: {
increment() {
this.$store.commit('increment')
console.log(this.$store.state.count)
}
}
14 TypeScript
1 命令行运行如下命令,全局安装 TypeScript:
npm install -g typescript
2 安装完成后,在控制台运行如下命令,检查安装是否成功:
tsc -V
vscode自动编译
1) 生成配置文件tsconfig.json
tsc --init
2) 修改tsconfig.json配置
"outDir": "./js",
"strict": false,
3) 启动监视任务:
终端 -> 运行任务 -> 监视tsconfig.json
15 vite 创建Vue3
安装vue-cli到最新版本 (必须高于4.5.0)
npm init vite-app
cd
npm install
npm run dev
16 webpack
全局安装webpack
npm install webpack -g
后端
1 docker
1 卸载原有 docker
sudo yum remove docker \
docker-client \
docker-client-latest \
docker-common \
docker-latest \
docker-latest-logrotate \
docker-logrotate \
docker-engine
2 安装docker
安装docker依赖
sudo yum install -y yum-utils
设置docker的yum源
sudo yum-config-manager \
--add-repo \
https://download.docker.com/linux/centos/docker-ce.repo
3 安装最新版的docker
sudo yum install docker-ce docker-ce-cli containerd.io
4 启动docker
sudo systemctl start docker
关闭docker
sudo systemctl stop docker
5 docker配置阿里云镜像加速(每个人都不一样,根据自己的来配置)
sudo mkdir -p /etc/docker
sudo tee /etc/docker/daemon.json <<-'EOF'
{
"registry-mirrors": ["https://r46nkja7.mirror.aliyuncs.com"]
}
EOF
sudo systemctl daemon-reload
sudo systemctl restart docker
6 验证docker的镜像加速是否生效 docker info
出现以下信息说明是正确的
Insecure Registries:
127.0.0.0/8
Registry Mirrors:
https://r46nkja7.mirror.aliyuncs.com/
Live Restore Enabled: false
1.1 安装mysql
1 拉去mysql镜像
sudo docker pull mysql:8.0
2 启动mysql容器
# --name指定容器名字 -v目录挂载 -p指定端口映射 -e设置mysql参数 -d后台运行
sudo docker run --name mysql -v /usr/local/mysql/data:/var/lib/mysql -v /usr/local/mysql:/etc/mysql/conf.d -v /usr/local/mysql/log:/var/log/mysql -e MYSQL_ROOT_PASSWORD=root -p 3306:3306 -d mysql:8.0
3 使用su - root(切换为root,这样就不用每次都sudo来赐予了)
su - root
4 进入mysql容器
docker exec -it 容器名称|容器id bin/bash
1.2 安装rabbitmq
1 安装
docker run -it -d --name rabbitmq -p 5672:5672 -p 15672:15672 rabbitmq:3-management # 以后端启动rabbitmq
2 访问
http://192.168.11.134:15672/ # 访问15672端口
3 默认账号密码为guest
1.3 安装redis
1 在docker hub搜索redis镜像
docker search redis
2 拉取redis镜像到本地
docker pull redis:6.0.10
3 修改需要自定义的配置(docker-redis默认没有配置文件,
自己在宿主机建立后挂载映射)
创建并修改/usr/local/redis/redis.conf
bind 0.0.0.0 开启远程权限
appendonly yes 开启aof持久化
4 启动redis服务运行容器
docker run --name redis -v /usr/local/redis/data:/data -v /usr/local/redis/redis.conf:/usr/local/etc/redis/redis.conf -p 6379:6379 -d redis:6.0.10 redis-server /usr/local/etc/redis/redis.conf
解释: -v /usr/local/redis/data:/data
-v /root/redis/redis.conf:/usr/local/etc/redis/redis.conf
5 直接进去redis客户端。
docker exec -it redis redis-cli
1.3.1 redis主从复制
主从复制架构用来解决数据的冗余备份
拉取redis
docker pull redis
在各自宿主机建立各自的配置文件
redis-6377.conf
port 6377
bind 0.0.0.0
appendonly yes
redis-6378.conf
port 6378
bind 0.0.0.0
appendonly yes
replicaof 192.168.11.148 6377
redis-6379.conf
port 6379
bind 0.0.0.0
appendonly yes
replicaof 192.168.11.148 6377
docker run --name redis-6377 -v /usr/local/redis/data:/data -v /usr/local/redis/conf/redis-6377.conf:/usr/local/etc/redis/redis-6377.conf -p 6377:6377 -d redis redis-server /usr/local/etc/redis/redis-6377.conf
docker run --name redis-6378 -v /usr/local/redis/data:/data -v /usr/local/redis/conf/redis-6378.conf:/usr/local/etc/redis/redis-6378.conf -p 6378:6378 -d redis redis-server /usr/local/etc/redis/redis-6378.conf
docker run --name redis-6379 -v /usr/local/redis/data:/data -v /usr/local/redis/conf/redis-6379.conf:/usr/local/etc/redis/redis-6379.conf -p 6379:6379 -d redis redis-server /usr/local/etc/redis/redis-6379.conf
测试
docker exec -it redis-6377 redis-cli -p 6377
docker exec -it redis-6378 redis-cli -p 6378
docker exec -it redis-6379 redis-cli -p 6379
1.3.2 redis哨兵机制
Sentinel(哨兵)是Redis的高可用性解决方案:由一个或
多个Sentinel实例组成的Sentinel系统可以监视任意多个主服
务器,以及这些主服务器属下的所有从服务器,并在被监视的
主服务器进入下线状态时,自动将下线主服务器属下的某个从
服务器升级为新的主服务器。简单的说哨兵就是带有自动故障转
移功能的主从架构。
在各自宿主机建立各自的配置文件
sentinel-26377.conf
sentinel monitor mymaster 192.168.11.148 6377 2
sentinel-26378.conf
sentinel monitor mymaster 192.168.11.148 6377 2
sentinel-26379.conf
sentinel monitor mymaster 192.168.11.148 6377 2
docker run --name sentinel-26377 -v /usr/local/redis/data:/data -v /usr/local/redis/conf/sentinel-26377.conf:/usr/local/etc/redis/sentinel-26377.conf -p 26377:26377 -d redis redis-sentinel /usr/local/etc/redis/sentinel-26377.conf
docker run --name sentinel-26378 -v /usr/local/redis/data:/data -v /usr/local/redis/conf/sentinel-26378.conf:/usr/local/etc/redis/sentinel-26378.conf -p 26378:26378 -d redis redis-sentinel /usr/local/etc/redis/sentinel-26378.conf
docker run --name sentinel-26379 -v /usr/local/redis/data:/data -v /usr/local/redis/conf/sentinel-26379.conf:/usr/local/etc/redis/sentinel-26379.conf -p 26379:26379 -d redis redis-sentinel /usr/local/etc/redis/sentinel-26379.conf
2 maven的安装
前往maven官网下载最新maven安装包,此处我们下载apache-maven-3.6.0-bin.zip
解压maven安装包至本地硬盘
右键“计算机”,选择“属性”,之后点击“高级系统设置”,点击“环境变量”,来设置环境变量
MAVEN_HOME 变量值为解压路径;MAVEN_HOME变量值为解压路径;如我配置为:D:\apache-maven-3.6.0
在系统变量Path中添加变量值:;%MAVEN_HOME%\bin
用win键+R,来打开命令行提示符窗口,即Dos界面,输入mvn -version 若出现以下情况说明配置成功
下载慢配置本地仓库跟阿里云镜像
在settings.xml配置
D:\install\Repository
因为国外的服务器下载jar包很慢所以我们改为阿里云服务器,这两个仓库只用选一个(根据大家反馈建议使用第一个,第二个在有的版本可能会出现warning)
alimaven
central
aliyun maven
http://maven.aliyun.com/nexus/content/repositories/central/
或者
nexus-aliyun
*
Nexus aliyun
http://maven.aliyun.com/nexus/content/groups/public
最后配置jdk,也要夹在两个profiles标签之间(我这里使用的为jdk8)
jdk-1.8
true
1.8
1.8
1.8
1.8
配置完成,在命令行输入mvn help:system测试,看到下载链接里面是ailiyun的链接表示配置成功
IDEA下配置Maven
3 tomcat的安装
3.1 window
下载Tomcat
要根据自己的JDK版本选择Tomcat的版本。
配置环境变量
CATALINA_HOME (一定要这个名字,否则会错)
验证
catalina version
3.2 linux
# 0.下载tomcat
http://mirrors.tuna.tsinghua.edu.cn/apache/tomcat/tomcat-8/v8.5.46/bin/apache-tomcat-8.5.46.tar.gz
# 1.通过工具上传到Linux系统中
# 2.解压缩到/usr目录中
[root@localhost ~]# tar -zxvf apache-tomcat-8.5.46.tar.gz -C /usr/
-C 用来指定解压缩的位置
# 3.查看解压内容
[root@localhost apache-tomcat-8.5.46]# ls -l
总用量 124
drwxr-x---. 2 root root 4096 10月 13 12:27 bin
-rw-r-----. 1 root root 19318 9月 17 02:19 BUILDING.txt
drwx------. 2 root root 238 9月 17 02:19 conf
-rw-r-----. 1 root root 5407 9月 17 02:19 CONTRIBUTING.md
drwxr-x---. 2 root root 4096 10月 13 12:27 lib
-rw-r-----. 1 root root 57011 9月 17 02:19 LICENSE
drwxr-x---. 2 root root 6 9月 17 02:17 logs
-rw-r-----. 1 root root 1726 9月 17 02:19 NOTICE
-rw-r-----. 1 root root 3255 9月 17 02:19 README.md
-rw-r-----. 1 root root 7139 9月 17 02:19 RELEASE-NOTES
-rw-r-----. 1 root root 16262 9月 17 02:19 RUNNING.txt
drwxr-x---. 2 root root 30 10月 13 12:27 temp
drwxr-x---. 7 root root 81 9月 17 02:17 webapps
drwxr-x---. 2 root root 6 9月 17 02:17 work
# 4.启动tomcat
[root@localhost apache-tomcat-8.5.46]# ./bin/startup.sh
# 5.关闭网络防火墙
systemctl stop firewalld 关闭网络防火墙
systemctl disable firewalld 关闭开机自启动(永久关闭)
# 6.在windows中访问tomcat
http://10.15.0.8:8080/
# 7.显示tomcat实时控制台信息
进入tomcat的logs目录中使用tail -f catalina.out 命令实时查看控制台信息
# 8.关闭tomcat
在tomcat的bin目录下面使用 ./shutdown.sh
4 docker
4.1 卸载原有 docker
$ sudo yum remove docker \
docker-client \
docker-client-latest \
docker-common \
docker-latest \
docker-latest-logrotate \
docker-logrotate \
docker-engine
4.2 安装docker
安装docker依赖
$ sudo yum install -y yum-utils \
device-mapper-persistent-data \
lvm2
设置docker的yum源
$ sudo yum-config-manager \
--add-repo \
https://download.docker.com/linux/centos/docker-ce.repo
安装最新版的docker
$ sudo yum install docker-ce docker-ce-cli containerd.io
指定版本安装docker
$ yum list docker-ce --showduplicates | sort -r
$ sudo yum install docker-ce-<VERSION_STRING> docker-ce-cli-<VERSION_STRING> containerd.io
$ sudo yum install docker-ce-18.09.5-3.el7 docker-ce-cli-18.09.5-3.el7 containerd.io
启动docker
$ sudo systemctl start docker
关闭docker
$ sudo systemctl stop docker
测试docker安装
$ sudo docker run hello-world
Docker 配置阿里镜像加速服务
5 RabiitMQ
5.1 linux版
5.1.1 下载
5.1.2 下载的安装包
注意:这里的安装包是centos7安装的包
5.1.3 安装步骤
# 1.将rabbitmq安装包上传到linux系统中
erlang-23.3.4.4-1.el7.x86_64.rpm #l7表示是Centosl7,Centosl8表示Centos8
rabbitmq-server-3.8.18-1.el7.noarch.rpm
# 2.安装Erlang依赖包
rpm -ivh erlang-23.3.4.4-1.el7.x86_64.rpm
# 3.安装RabbitMQ安装包(需要联网)
yum install -y rabbitmq-server-3.8.18-1.el7.noarch.rpm
# 4.执行如下命令,启动rabbitmq中的插件管理
rabbitmq-plugins enable rabbitmq_management
出现如下说明:
Enabling plugins on node rabbit@localhost:
rabbitmq_management
The following plugins have been configured:
rabbitmq_management
rabbitmq_management_agent
rabbitmq_web_dispatch
Applying plugin configuration to rabbit@localhost...
The following plugins have been enabled:
rabbitmq_management
rabbitmq_management_agent
rabbitmq_web_dispatch
set 3 plugins.
Offline change; changes will take effect at broker restart.
# 5.启动RabbitMQ的服务
systemctl start rabbitmq-server
systemctl restart rabbitmq-server
systemctl stop rabbitmq-server
# 6.查看服务状态(见下图:)
systemctl status rabbitmq-server
● rabbitmq-server.service - RabbitMQ broker
Loaded: loaded (/usr/lib/systemd/system/rabbitmq-server.service; disabled; vendor preset: disabled)
Active: active (running) since 三 2019-09-25 22:26:35 CST; 7s ago
Main PID: 2904 (beam.smp)
Status: "Initialized"
CGroup: /system.slice/rabbitmq-server.service
├─2904 /usr/lib64/erlang/erts-10.4.4/bin/beam.smp -W w -A 64 -MBas ageffcbf -MHas ageffcbf -
MBlmbcs...
├─3220 erl_child_setup 32768
├─3243 inet_gethost 4
└─3244 inet_gethost 4
.........
#7.关闭防火墙服务
systemctl disable firewalld # 需要关闭防火墙,否则访问不了
Removed symlink /etc/systemd/system/multi-user.target.wants/firewalld.service.
Removed symlink /etc/systemd/system/dbus-org.fedoraproject.FirewallD1.service.
systemctl stop firewalld
# 8.访问web管理界面
http://192.168.11.136:15672/
# 9.登录管理界面
username: guest
password: guest
解决办法:
rabbitmqctl add_user admin 123 # 账号admin,密码123
rabbitmqctl set_permissions -p / admin ".*" ".*" ".*" # 设置权限
rabbitmqctl set_user_tags admin administrator # 设置权限
然后输入账号admin,密码123,则可以成功访问
5.1.4 集群搭建
# 0 为了能正常访问,先把三台机器防火墙关了
# 1 集群规划
node1: 10.15.0.3 mq1 master 主节点
node2: 10.15.0.4 mq2 repl1 副本节点
node3: 10.15.0.5 mq3 repl2 副本节点
# 2 克隆三台机器主机名和ip映射
vim /etc/hosts加入:
10.15.0.3 mq1
10.15.0.4 mq2
10.15.0.5 mq3
# 3 修改主机名
node1: vim /etc/hostname 加入: mq1
node2: vim /etc/hostname 加入: mq2
node3: vim /etc/hostname 加入: mq3
# 4 三个机器安装rabbitmq,并同步cookie文件,在node1上执行:
scp /var/lib/rabbitmq/.erlang.cookie root@mq2:/var/lib/rabbitmq/
scp /var/lib/rabbitmq/.erlang.cookie root@mq3:/var/lib/rabbitmq/
# 5 查看cookie是否一致:
node1: cat /var/lib/rabbitmq/.erlang.cookie
node2: cat /var/lib/rabbitmq/.erlang.cookie
node3: cat /var/lib/rabbitmq/.erlang.cookie
# 6 启动node1服务:systemctl start rabbitmq-server
# 7 后台启动rabbitmq所有节点执行如下命令,启动成功访问管理界面:
rabbitmq-server -detached
# 8 在node2和node3执行加入集群命令:
1.关闭 rabbitmqctl stop_app
2.加入集群 rabbitmqctl join_cluster rabbit@mq1
3.启动服务 rabbitmqctl start_app
# 9 查看集群状态,任意节点执行:
rabbitmqctl cluster_status
# 10 如果出现如下显示,集群搭建成功:
# 11.任意节点添加用户
rabbitmqctl add_user admin 123 # 账号admin,密码123
rabbitmqctl set_permissions -p / admin ".*" ".*" ".*" # 设置权限
rabbitmqctl set_user_tags admin administrator # 设置权限
# 12 登录管理界面
username: admin
password: 123
5.1.5 镜像集群
需要在集群搭建的基础上搭建
# 0.策略说明
rabbitmqctl set_policy [-p ] [--priority ] [--apply-to ]
-p Vhost: 可选参数,针对指定vhost下的queue进行设置
Name: policy的名称
Pattern: queue的匹配模式(正则表达式)
Definition:镜像定义,包括三个部分ha-mode, ha-params, ha-sync-mode
ha-mode:指明镜像队列的模式,有效值为 all/exactly/nodes
all:表示在集群中所有的节点上进行镜像
exactly:表示在指定个数的节点上进行镜像,节点的个数由ha-params指定
nodes:表示在指定的节点上进行镜像,节点名称通过ha-params指定
ha-params:ha-mode模式需要用到的参数
ha-sync-mode:进行队列中消息的同步方式,有效值为automatic和manual
priority:可选参数,policy的优先级
# 1.查看当前策略
rabbitmqctl list_policies
# 2.添加策略
rabbitmqctl set_policy ha-all '^hello' '{"ha-mode":"all","ha-sync-mode":"automatic"}'
说明:策略正则表达式为 “^” 表示所有匹配所有队列名称 ^hello:匹配hello开头队列
# 3.删除策略
rabbitmqctl clear_policy ha-all
# 4.测试集群
5.2 windows版
6 Jmeter
# 1.下载jmeter
https://jmeter.apache.org/download_jmeter.cgi
下载地址:https://mirror.bit.edu.cn/apache//jmeter/binaries/apache-jmeter-5.2.1.tgz
# 2.解压缩
backups ---用来对压力测试进行备份目录
bin ---Jmeter核心执行脚本文件
docs ---官方文档和案例
extras ---额外的扩展
lib ---第三方依赖库
licenses ---说明
printable_docs ---格式化文档
# 3.安装Jmeter
0.要求: 必须事先安装jdk环境
1.配置jmeter环境变量
export JMETER_HOME=/Users/yao/dev/apache-jmeter-5.2
export PATH=$SCALA_HOME/bin:$JAVA_HOME/bin:$GRADLE_HOME/bin:$PATH:$JMETER_HOME/bin
2.是配置生效
source /etc/profile
7 lombok
7.1 引言
还记得刚刚接触java,学习面向对象时因为手写
get,set,hashcode,equals等方法的痛苦吗?
还记得后来上手了Eclipse|Idea这样工具可以快速生成get,set等
相关方法的兴奋吗? 好强大..
后来工作时间长了,这种兴奋渐渐就变成了的苦恼?
很重要一个原因就是因为随着项目业务模块功能不断扩展,项目
中涉及库表越来越多,导致项目中实体类(Entity)对象越来越多,
每次写Entity对象最头疼就是生成Get,SET等相关方法,极大影
响开发效率,如何更好的解决呢? lombok出现仿佛让我们回
到曾经的那种喜悦!!!
7.2 lombok是什么
Lombok项目是一个Java库,它会自动插入编辑器和构建工具中,
Lombok提供了一组有用的注释(注解),用来消除Java类中的大
量样板代码。仅五个字符(@Data)就可以替换数百行代码从而产
生干净,简洁且易于维护的Java类 ---百度百科
Project Lombok is a java library that automatically plugs
into your editor and build tools, spicing up your java.
Never write another getter or equals method again,
with one annotation your class has a fully featured
builder, Automate your logging variables, and much more. --摘自官网
通俗解释: lombok快速开发工具,提供了一组java相关注解,
通过注解用来更快速生成java对象中我们想要的相关
方法(get,set,toString ....)等一系列方法
7.3 lombok第一个环境
7.3.1 引入依赖
<dependency>
<groupId>org.projectlombokgroupId>
<artifactId>lombokartifactId>
<version>1.18.12version>
<scope>providedscope>
dependency>
7.3.2 使用提供注解
@Data
public class User {
private String id;
private String name;
private Integer age;
private Date bir;
}
@Data注解: 自动给对象提供 GET SET ToString hashCode equals 等方法
7.4 lombok的原理
7.5 lombok一组注解
7.5.1 @Data注解
@Data 用在类上
用来生成对象中GET SET ToString HashCode equals等相关方法
具体用法
@Data
public class User {
private String id;
private String name;
private Integer age;
private Date bir;
}
7.5.2 @Getter and @Setter
用在类上
用来只生成对应GET SET方法
具体用法
@Getter
@Setter
public class User {
private String id;
private String name;
private Integer age;
private Date bir;
}
7.5.3 @ToString
用在类上
用来生成toString方法
7.5.4 @AllArgsConstructor And @NoArgsConstructor
用在类上
用来生成全部参数构造方法 和 无参数构造方法
具体用法
@AllArgsConstructor
@NoArgsConstructor
public class User {
private String id;
private String name;
private Integer age;
private Date bir;
}
7.5.5 @Accessors
用在类上
用来给类中set方法开启链式调用 chain属性:
用来指定是否开启SET方法链式调用 true 开启 false 不开启
具体用法
@Data
@Accessors(chain = true)
public class User {
private String id;
private String name;
private Integer age;
private Date bir;
}
user.setId("21").setName("xiaochen").setAge(23).setBir(new Date());
7.5.6 @Slf4j
用在类上
用来快速给类中定义一个日志变量
原理
在对应类上加入这个注解相当于在这个类中声明了一个日志对象
private Logger log = LoggerFactory.getLogger(this.getClass());
具体用法
@Controller
@RequestMapping("user")
@Slf4j
public class UserController {
@RequestMapping("findAll")
public String findAll(){
log.info("进入findAll方法");
log.info("姓名:[{}],年龄:[{}]",name,age);
return "index";
}
}
7.6 idea中如何安装lombok
注意:默认在idea中不支持lombok语法,写上之后没有任何效果,
需要在idea中额外安装插件才可以继续使用lombok
Preferences | Plugins --> 搜索lombok 下载安装 安装完成
重启idea即可
安装完成之后出现如下问题的解决方案:
解决方案:
8 jdk
1 下载并解压jdk1.8
tar -zxvf jdk-8u281-linux-x64.tar.gz
(检查本机有没有jdk有的话卸载掉。安装上自己的jdk)
2 配上环境变量
vim /etc/profile
export JAVA_HOME=jdk的位置
export PATH=$PATH:$JAVA_HOME/bin
3 使配置生效
source /etc/profile
9 git
git config --global user.name "username" //(名字,随意写)
git config --global user.email "[email protected]" // 注册账号时使用的邮箱
ssh-keygen -t rsa -C "[email protected]"
三次回车后生成了密钥,也可以查看密钥
cat ~/.ssh/id_rsa.pub
浏览器登录码云后,个人头像上点设置、然后点ssh公钥、随便填个标题,然后赋值
ssh-rsa AAAAB3NzaC1yc2EAAAADAQABAAABAQC6MWhGXSKdRxr1mGPZysDrcwABMTrxc8Va2IWZyIMMRHH9Qn/wy3PN2I9144UUqg65W0CDE/thxbOdn78MygFFsIG4j0wdT9sdjmSfzQikLHFsJ02yr58V6J2zwXcW9AhIlaGr+XIlGKDUy5mXb4OF+6UMXM6HKF7rY9FYh9wL6bun9f1jV4Ydlxftb/xtV8oQXXNJbI6OoqkogPKBYcNdWzMbjJdmbq2bSQugGaPVnHEqAD74Qgkw1G7SIDTXnY55gBlFPVzjLWUu74OWFCx4pFHH6LRZOCLlMaJ9haTwT2DB/sFzOG/Js+cEExx/arJ2rvvdmTMwlv/T+6xhrMS3 894548575@qq.com
ssh -T [email protected]
Hi unique_perfect! You've successfully authenticated, but GITEE.COM does not provide shell access.
10 nacos
一个更易于构建云原生应用的动态服务发现、配置管理和服务管理平台。
作为我们的注册中心和配置中心。
先了解一下 Spring Cloud 应用如何接入 Nacos Discovery。
1 首先,修改 common中的pom.xml 文件,引入 Nacos Discovery Starter。
>
>com.alibaba.cloud>
>spring-cloud-starter-alibaba-nacos-discovery>
>
2 在应用的common中的application.yml 配置文件中配置 Nacos Server 地址和微服务名称
spring:
application:
name: gulimall-coupon
datasource:
driver-class-name: com.mysql.cj.jdbc.Driver
url: jdbc:mysql://192.168.1.103:3306/gulimall_sms?useUnicode=true&characterEncoding=UTF-8&useSSL=false&serverTimezone=Asia/Shanghai
username: root
password: root
cloud:
nacos:
discovery:
server-addr: 192.168.11.1:8848
mybatis-plus:
mapper-locations: classpath:/mapper/**/*.xml
global-config:
db-config:
id-type: auto
server:
port: 7000
3 我们要配置nacos服务器的地址,也就是注册中心地址,但是我们还没
有nacos服务器,所以我们需要启动nacos server创建nacos服务
器(软件官方可以下载)
启动命令windows:startup.cmd -m standalone
4 使用 @EnableDiscoveryClient 注解开启服务注册与发现功能
package com.yxj.gulimall.coupon;
import org.mybatis.spring.annotation.MapperScan;
import org.springframework.boot.SpringApplication;
import org.springframework.boot.autoconfigure.SpringBootApplication;
import org.springframework.cloud.client.discovery.EnableDiscoveryClient;
@SpringBootApplication
@MapperScan("com.yxj.gulimall.coupon.dao")
@EnableDiscoveryClient
public class GulimallCouponApplication {
public static void main(String[] args) {
SpringApplication.run(GulimallCouponApplication.class, args);
}
}
5 访问http://127.0.0.1:8848/nacos/ 账号密码nacos
出现如下页面,则表示访问成功
11 redis
Redis默认配置是不需要密码认证的,也就是说只要连接的Redis服务器
的host和port正确,就可以连接使用。这在安全性上会有一定的问题,
所以需要启用Redis的认证密码,增加Redis服务器的安全性。
1 修改配置文件
Redis的配置文件默认在/etc/redis.conf,找到如下行:
去掉前面的注释,并修改为所需要的密码:
requirepass myPassword (其中myPassword就是要设置的密码)
2 重启Redis
如果Redis已经配置为service服务,可以通过以下方式重启:
service redis restart
如果Redis没有配置为service服务,可以通过以下方式重启:
/usr/local/bin/redis-cli shutdown
/usr/local/bin/redis-server /etc/redis.conf
3 登录验证
设置Redis认证密码后,客户端登录时需要使用-a参数输入认证密码,不
添加该参数虽然也可以登录成功,但是没有任何操作权限。如下:
$ ./redis-cli -h 127.0.0.1 -p 6379
127.0.0.1:6379> keys *
(error) NOAUTH Authentication required.
使用密码认证登录,并验证操作权限:
$ ./redis-cli -h 127.0.0.1 -p 6379 -a myPassword
127.0.0.1:6379> config get requirepass
1) "requirepass"
2) "myPassword"
看到类似上面的输出,说明Reids密码认证配置成功。
除了按上面的方式在登录时,使用-a参数输入登录密码外。
也可以不指定,在连接后进行验证:
$ ./redis-cli -h 127.0.0.1 -p 6379
127.0.0.1:6379> auth myPassword
OK
127.0.0.1:6379> config get requirepass
1) "requirepass"
2) "myPassword"
4 Redis也可以通命令行客户端配置密码,这种配置方式不用重新启动Redis。配置方式如下:
127.0.0.1:6379> config set requirepass newPassword
OK
127.0.0.1:6379> config get requirepass
1) "requirepass"
2) "newPassword"
注意:使用命令行客户端配置密码,重启Redis后仍然会使用redis.conf配置文件中的密码。
5 如果Redis服务器,使用了集群。除了在master中配置密码外,
也需要在slave中进行相应配置。在slave的配置文件中找到如下行,
去掉注释并修改与master相同的密码即可:
11.1 主从复制
主从复制架构仅仅用来解决数据的冗余备份,从节点仅仅用来同步数据
无法解决: 1.master节点出现故障的自动故障转移
1.准备3台机器并修改配置redis.conf
master
port 6377
bind 0.0.0.0
如果masterip 为 192.168.42.137,则slaveof masterip masterport 为 slaveof 192.168.42.137 6377
slave1
port 6378
bind 0.0.0.0
slaveof masterip masterport (高版本 replicaof masterip masterport )
slave2
port 6379
bind 0.0.0.0
slaveof masterip masterport (高版本 replicaof masterip masterport )
2.启动3台机器进行测试
# 这里我把创建了data文件夹并把redis.conf放进了data文件夹中
./redis-server data/redis6377.conf
./redis-server data/redis6378.conf
./redis-server data/redis6379.conf
11.2 Redis哨兵机制
Sentinel(哨兵)是Redis 的高可用性解决方案:由一个或
多个Sentinel 实例 组成的Sentinel 系统可以监视任意多个主服
务器,以及这些主服务器属下的所有从服务器,并在被监视的
主服务器进入下线状态时,自动将下线主服务器属下的某个从
服务器升级为新的主服务器。简单的说哨兵就是带有自动故障转
移功能的主从架构。
这里我搭配了1主2从,3个哨兵
我把配置文件放在了conf文件夹下
redis6377.conf redis6379.conf sentinel-26378.conf
redis6378.conf sentinel-26377.conf sentinel-26379.conf
下面列出的就是要改的地方
redis6377.conf (主的配置文件)
bind 0.0.0.0 # 表示任何ip都可以连接,这个要开启来,否则远程连接不起作用
port 6377 # redis-server端口号
dir ./data # 这个文件要自己创建,./表示命令所在的目录,比如redis-server这个命令所在目录为/usr/local/redis6377/bin。则./data表示/usr/local/redis6377/bin/data
redis6378.conf
bind 0.0.0.0
port 6378
replicaof 192.168.42.137 6377 # 主的IP地址加端口
dir ./data
redis6379.conf
bind 0.0.0.0
port 6379
replicaof 192.168.42.137 6377 # 主的IP地址加端口
dir ./data
sentinel-26377.conf
port 26377 # 哨兵启动端口
bind: 0.0.0.0 # 开启远程连接
daemonize no # 是否以后台启动
dir ./data
sentinel monitor mymaster 192.168.42.137 6377 2 # mymaster可以随便命令,192.168.42.137 6377 表示主的主机加端口,2表示哨兵选举谁当master时的数量,一般为哨兵数量的一半加1。我这里哨兵为3.所以算出来的值为2,.当有两个及以上的sentinel服务检测到master宕机,才会去执行主从切换的功能。
sentinel down-after-milliseconds mymaster 30000 # 多长时间没响应算master挂了,这里为30s
sentinel parallel-syncs mymaster 1 # 选取新的master时,一次有多少个开始同步数据,值越小,服务器负担越小
sentinel failover-timeout mymaster 180000 # 同步数据的超时时间,这里为18s
sentinel-26378.conf
port 26378
bind: 0.0.0.0 # 开启远程连接
daemonize no
pidfile /var/run/redis-sentinel.pid
logfile ""
dir ./data
sentinel monitor mymaster 192.168.42.137 6377 2
sentinel down-after-milliseconds mymaster 30000
sentinel parallel-syncs mymaster 1
sentinel failover-timeout mymaster 180000
sentinel-26379.conf
port 26379
bind: 0.0.0.0 # 开启远程连接
daemonize no
pidfile /var/run/redis-sentinel.pid
logfile ""
dir ./data
sentinel monitor mymaster 192.168.42.137 6377 2
sentinel down-after-milliseconds mymaster 30000
sentinel parallel-syncs mymaster 1
sentinel failover-timeout mymaster 180000
12 Linux 系统安装MySQL
12.1 下载Linux 安装包
https://dev.mysql.com/downloads/mysql/5.7.html#downloads
12.2 安装MySQL
1) 卸载 centos 中预安装的 mysql
rpm -qa | grep -i mysql
rpm -e mysql-libs-5.1.71-1.el6.x86_64 --nodeps
2) 上传 mysql 的安装包
alt + p -------> put E:/test/MySQL-5.6.22-1.el6.i686.rpm-bundle.tar
3) 解压 mysql 的安装包
mkdir mysql
tar -xvf MySQL-5.6.22-1.el6.i686.rpm-bundle.tar -C /root/mysql
4) 安装依赖包
yum -y install libaio.so.1 libgcc_s.so.1 libstdc++.so.6 libncurses.so.5 --setopt=protected_multilib=false
yum update libstdc++-4.4.7-4.el6.x86_64
5) 安装 mysql-client
rpm -ivh MySQL-client-5.6.22-1.el6.i686.rpm
6) 安装 mysql-server
rpm -ivh MySQL-server-5.6.22-1.el6.i686.rpm
12.3 启动 MySQL 服务
service mysql start
service mysql stop
service mysql status
service mysql restart
12.4 登录MySQL
mysql 安装完成之后, 会自动生成一个随机的密码, 并且保存在一个密码文件中 : /root/.mysql_secret
mysql -u root -p
登录之后, 修改密码 :
set password = password('cqm');
授权远程访问 :
grant all privileges on *.* to 'root' @'%' identified by 'cqm';
flush privileges;
12.5 MySQL主从复制
# 0.架构规划
192.168.202.201 master 主节点
192.168.202.202 slave 从节点
# 1.修改mysql的配置文件
[root@localhost mysql]# vim /etc/my.cnf
# 2.分别在配置文件中加入如下配置
mysql(master):
server-id=1
log-bin=mysql-bin
log-slave-updates
slave-skip-errors=all
msyql(slave):
server-id=2
log-bin=mysql-bin
log-slave-updates
slave-skip-errors=all
注意:两个机器的server-id不能一致
# 3.重启mysql服务
systemctl restart mysqld
# 4.登录mysql执行如下命令检测配置是否生效
SHOW VARIABLES like 'server_id';
# 5.登录master节点执行如下命令
show master status;
# 6.登录从节点执行如下命令:
change master to
master_host='10.15.0.9',
master_user='root',
master_password='root',
master_log_file='mysql-bin.000001',
master_log_pos=120;
# 7.开启从节点
start slave;
stop slave;
# 8.查看从节点状态
show slave status\G;
************************** 1. row ***************************
Slave_IO_State: Waiting for master to send event
Master_Host: 10.15.0.9
Master_User: root
Master_Port: 3306
Connect_Retry: 60
Master_Log_File: mysql-bin.000001
Read_Master_Log_Pos: 120
Relay_Log_File: mysqld-relay-bin.000002
Relay_Log_Pos: 283
Relay_Master_Log_File: mysql-bin.000001
Slave_IO_Running: Yes
Slave_SQL_Running: Yes
注意:
1.出现 Slave_IO_Running: Yes 和 Slave_SQL_Running: Yes 说名成功,
2.如果在搭建过程出现错误,可以查看查看错误日志文件 cat /var/log/mysqld.log
# 9.通过客户端工具进行测试
# 10.关闭主从复制(在从节点执行)
stop slave;
13 安装Mycat
# 1.下载mycat
http://dl.mycat.io/1.6-RELEASE/Mycat-server-1.6-RELEASE-20161028204710-linux.tar.gz
# 2.解压mycat
tar -zxvf Mycat-server-1.6-RELEASE-20161028204710-linux.tar.gz
# 3.查看解压之后目录]
[root@localhost mycat]# ls
总用量 12
drwxr-xr-x. 2 root root 190 10月 14 22:58 bin
drwxrwxrwx. 2 root root 6 3月 1 2016 catlet
drwxrwxrwx. 4 root root 4096 10月 14 22:58 conf
drwxr-xr-x. 2 root root 4096 10月 14 22:58 lib
drwxrwxrwx. 2 root root 6 10月 28 2016 logs
-rwxrwxrwx. 1 root root 217 10月 28 2016 version.txt
# 4.移动到/usr目录
mv mycat/ /usr/
# 5.配置mycat中conf下的配置schema.xml
<schema name="test_schema" checkSQLschema="false" sqlMaxLimit="100" dataNode="testNode">schema>
<dataNode name="testNode" dataHost="dtHost" database="test" />
<dataHost name="dtHost" maxCon="1000" minCon="10" balance="1"
writeType="0" dbType="mysql" dbDriver="native" switchType="-1" slaveThreshold="100">
<heartbeat>select user()heartbeat>
<writeHost host="hostM1" url="192.168.28.128:3306" user="root"
password="root">
<readHost host="hostS1" url="192.168.28.129:3306" user="root" password="root" />
writeHost>
dataHost>
# 6.配置登陆mycat的权限server.xml
<system>
<property name="defaultSqlParser">druidparserproperty>
<property name="charset">utf8mb4property>
system>
<user name="root">
<property name="password">rootproperty>
<property name="schemas">test_schemaproperty>
user>
# 7.启动mycat
./mycat console
# 8.查看日志
tail -f ../logs/mycat.log
# 9.数据库连接配置,测试
14 Nginx
# 0.安装必要依赖
yum install -y gcc pcre-devel zlib-devel
# 1.下载Nginx
http://nginx.org/en/download.html
# 2.将Nginx上传到linux中,并解压缩
tar -zxvf nginx-1.11.1.tar.gz
# 3.查看Nginx安装目录
[root@localhost nginx-1.11.1]# ls
auto CHANGES CHANGES.ru conf configure contrib html LICENSE man README src
# 4.在Nginx安装目录中执行如下命令:(指定安装位置)
./configure --prefix=/usr/nginx
# 5.执行上述命令后,执行如下命令:
make && make install
# 6.编译完成后进入编译安装目录/usr/nginx目录中查看:
[root@localhost nginx]# ls -l
总用量 4
drwxr-xr-x. 2 root root 4096 10月 14 21:17 conf
drwxr-xr-x. 2 root root 40 10月 14 21:17 html
drwxr-xr-x. 2 root root 6 10月 14 21:17 logs
drwxr-xr-x. 2 root root 19 10月 14 21:17 sbin
# 7.启动nginx,进入nginx安装目录的sbin目录中执行:
./nginx
# 8.在windows中浏览器访问,可以看到nginx欢迎页面:
http://10.15.0.8:80/
注意:关闭网络防火墙
# 9.关闭nginx,进入nginx安装目录的sbin目录中执行:
./nginx -s stop
# 10.nginx配置文件在nginx安装目录的conf目录中:
[root@localhost conf]# ls -l
总用量 60
-rw-r--r--. 1 root root 2656 10月 14 21:17 nginx.conf
.......
注意:nginx.conf为nginx的配置文件,可以在nginx.conf修改nginx默认配置
15 maven私服
私服是指私有服务器,是架设在局域网的一种特殊的远程仓库,
目的是代理远程仓库及部署第三方构建。有了私服之后,当
Maven 需要下载构件时,直接请求私服,私服上存在则下载
到本地仓库;否则,私服请求外部的远程仓库,将构件下载到
私服,再提供给本地仓库下载。Nexus是一个强大的Maven仓
库管理器,它极大地简化了本地内部仓库的维护和外部仓库的访问。
安装环境:
1 操作系统:Windows 10 /Windows 7
2 nexus版本:nexus-3.9.0-01-win64(Nexus 专业版是需要付
费的,这里我们下载开源免费版 Nexus OSS)
下载地址:https://www.sonatype.com/nexus-repository-oss
解压过后,进入/nexus-3.9.1-01/bin目录下,以管理员身份打开
命令行:nexus /install ,该命令将会将Nexus Repository注册成为Windows服务。
运行nexus /start 启动私服
打开浏览器,输出localhost:8081,出现如下界面,安装成功。
补充:
nexus /install # 安装私服
nexus /start # 启动私服
nexus /uninstall # 卸载私服
nexus /stop # 停止私服
16 Zookeeper
16.1 Zookeeper安装
a) 下载zookeeper的安装包
b) 上传至linux系统中 并使用 tar -zxvf apache-zookeeper-3.6.2-bin.tar.gz 解压缩
tar -zxvf apache-zookeeper-3.6.2-bin.tar.gz
c) 解压缩zookeeper的tar包 重命名为zk便于操作,(可省略)
mv apache-zookeeper-3.6.2-bin zk
d) 修改zk的conf目录下的zoo_simple.cfg,修改完后,重命名为zoo.cfg
tickTime=2000
initLimit=10
syncLimit=5
dataDir=/usr/local/zkData ----保存snapshot文件的路径
clientPort=2181
各项参数说明:
tickTime:配置单元时间。单元时间是ZooKeeper的时间计算单元,
其他的时间间隔都是使用tickTime的倍数来表示的。
initLimit:节点的初始化时间。该参数用于Follower(从节点)的启动,
并完成与Leader(主节点)进行数据同步的时间。Follower节点在启
动过程中,会与Leader节点建立连接并完成对数据的同步,从而确
定自己的起始状态。Leader节点允许Follower节点在initLimit时
间内完成这项工作。该参数默认值为10,表示是参数tickTime值的10倍。
syncLimit:心跳最大延迟周期。该参数用于配置Leader节点和
Follower节点之间进行心跳检测的最大延时时间。在ZK集群运
行的过程中,Leader节点会通过心跳检测来确定Follower节点是
否存活。如果Leader节点在syncLimit时间内无法获取到Follower
节点的心跳检测响应,那么Leader节点就会认为该Follower节点已
经脱离了和自己的同步。该参数默认值为5,表示是参数tickTime值
的5倍。
dataDir:是zookeeper持久化数据存放的目录。
myid文件处于此目录下。
dataLogDir:日志目录选项,如果没有设置该参数,
默认将使用和dataDir相同的设置。
clientPort:zookeeper监听客户端连接的端口,默认是2181。
e) 启动zk,在zk的bin目录下,运行zkServer.sh
./zkServer.sh start /usr/local/zookeeper/conf/zoo.cfg
ps: ./zkServer.sh help 可以查看服务器端所有可以执行的指令
补充:
# 启动服务端
$ bin/zkServer.sh start
# 查看状态
$ bin/zkServer.sh status
# 停止
$ bin/zkServer.sh stop
# 重启
$ bin/zkServer.sh restart
f) 使用jps查看启动是否成功
46193 QuorumPeerMain # 表示成功
g) 启动客户端连接到zk
./zkCli.sh -server 192.168.0.220:2181
ps: 可以通过 ./zkCli.sh help 查看客户端所有可以执行的指令
16.2 Zookeeper集群搭建
1、在每台机器zookeeper/conf目录下创建三个zk配置文件,
为 zoo.cfg(可以将zookeeper里面的zoo_sample.cfg改为zoo.cfg,zookeeper
会按这个文件进行启动)
各个内容为(每个文件都是这个内容):
tickTime=2000
initLimit=10
syncLimit=5
dataDir=/usr/local/zookeeper/zkdata
clientPort=2181
server.1=192.168.42.129:2888:3888
server.2=192.168.42.130:2888:3888
server.3=192.168.42.131:2888:3888
server.4=192.168.42.132:2888:3888
server.5=192.168.42.133:2888:3888
2、在每台机器上创建数据存放的目录,存放的路径为
dataDir=/usr/local/zookeeper/zkdata(跟你上面写的内容一样)
3、分别在每台机器上(dataDir=/usr/local/zookeeper/zkdata)
创建myid文件myid的内容分别是
server.1=192.168.42.129:2888:3888中的数字1,
server.2=192.168.42.130:2888:3888中的数字2,
server.3=192.168.42.131:2888:3888中的数字3,
server.4=192.168.42.132:2888:3888中的数字4,
server.5=192.168.42.133:2888:3888中的数字5
ps: server.X :x为服务器的唯一标识。
192.168.42.129:服务器所在的ip地址
2888:数据同步使用的端口号
3888:选举使用的端口号
4、分别启动各个zk服务器(进入zookeeper的bin目录)
./zkServer.sh start /usr/local/zookeeper/conf/zoo.cfg (这里可以省略 /usr/local/zookeeper/conf/zoo.cfg)
5、查看各个zk服务器的角色信息(进入zookeeper的bin目录)
./zkServer.sh status /usr/local/zookeeper/conf/zoo.cfg (这里可以省略 /usr/local/zookeeper/conf/zoo.cfg)
6、客户端连接任意zk服务器进行节点操作(进入zookeeper的bin目录)
./zkCli.sh -server 192.168.42.129:2181(ip地址加端口)(连接本机则./zkCli.sh也行)
7.停止zk服务器(进入zookeeper的bin目录)
./zkServer.sh stop ./usr/local/zookeeper/conf/zoo.cfg (这里可以省略 /usr/local/zookeeper/conf/zoo.cfg)
想要获取该该课程markdown笔记(脑图+笔记)。可以扫描以下
微信公众号二维码。或者搜索微信公众号-Java大世界。回复
工具即可获取笔记获取方式。