RocketMQ多Master多Slave模式部署

每个 Master 配置一个 Slave,有多对Master-Slave,HA采用同步双写方式,主备都写成功,向应用返回成功。

优点:数据与服务都无单点,Master宕机情况下,消息无延迟,服务可用性与数据可用性都非常高。
缺点:性能比异步复制模式略低,大约低10%左右,发送单个消息的RT会略高。目前主宕机后,备机不能自动切换为主机,后续会支持自动切换功能。

### 先启动 NameServer
### 在机器 A,启动第一个 Master
### 在机器 B,启动第二个 Master
### 在机器 C,启动第一个 Slave
### 在机器 D,启动第二个 Slave
以上 Broker 与 Slave 配对是通过指定相同的brokerName 参数来配对,Master的 BrokerId 必须是 0,Slave 的BrokerId 必须是大与 0 的数。
另外一个 Master 下面可以挂载多个 Slave,同一 Master 下的多个 Slave通过指定不同的 BrokerId来区分。

1. 服务器环境如下图所示,四台机器,IP位7为主节点,149是7的从节点。105是主节点,160是105的从节点

序号    IP                  用户名             角色                          模式
1       192.168.1.7         root               nameServer1,brokerServer1     Master1
2       192.168.1.105       root               nameServer2,brokerServer2     Master2
3       192.168.1.149       root               nameServer3,brokerServer3     Master1-slave1
4       192.168.1.160       root               nameServer4,brokerServer4     Master2-slave1

 

2. Hosts添加信息

IP              NAME
192.168.1.7     rocketmq-nameserver1
192.168.1.7     rocketmq-master1
192.168.1.105   rocketmq-nameserver2
192.168.1.105   rocketmq-master2
192.168.1.149   rocketmq-nameserver3
192.168.1.149   rocketmq-master1-slave1
192.168.1.160   rocketmq-nameserver4
192.168.1.160   rocketmq-master2-slave1

 

3.编辑hosts文件【4台机器】

# vim /etc/hosts

 

4.上传解压【4台机器】

# 上传alibaba-rocketmq-3.2.6.tar.gz文件至/home/xm6f/dev
# cd /home/xm6f/dev 
# tar -zxvf alibaba-rocketmq-3.2.6.tar.gz 
# mv alibaba-rocketmq rocketmq

 

5.创建存储路径【4台机器】

# mkdir /home/xm6f/dev/rocketmq/store 
# mkdir /home/xm6f/dev/rocketmq/store/commitlog 
# mkdir /home/xm6f/dev/rocketmq/store/consumequeue 
# mkdir /home/xm6f/dev/rocketmq/store/index 


6.RocketMQ配置文件【4台机器】--该文件有点类似于Redis里面的redis.con

# sudo vim /home/xm6f/dev/rocketmq/conf/2m-2s-async/broker-a.properties ##192.168.1.7配置文件 
# sudo vim /home/xm6f/dev/rocketmq/conf/2m-2s-async/broker-a-s.properties ##192.168.1.149配置文件 
# sudo vim /home/xm6f/dev/rocketmq/conf/2m-2s-async/broker-b.properties ##192.168.1.105配置文件 
# sudo vim /home/xm6f/dev/rocketmq/conf/2m-2s-async/broker-b-s.properties ##192.168.1.160配置文件

 

broker-a.properties文件

#所属集群名字
brokerClusterName=rocketmq-cluster
#broker名字,注意此处不同的配置文件填写的不一样
brokerName=broker-a
#0 表示 Master,>0 表示 Slave
brokerId=0
#nameServer地址,分号分割
namesrvAddr=rocketmq-nameserver1:9876;rocketmq-nameserver2:9876;rocketmq-nameserver3:9876;rocketmq-nameserver4:9876
#在发送消息时,自动创建服务器不存在的topic,默认创建的队列数
defaultTopicQueueNums=4
#是否允许 Broker 自动创建Topic,建议线下开启,线上关闭
autoCreateTopicEnable=true
#是否允许 Broker 自动创建订阅组,建议线下开启,线上关闭
autoCreateSubscriptionGroup=true
#Broker 对外服务的监听端口
listenPort=10911
#删除文件时间点,默认凌晨 4点
deleteWhen=04
#文件保留时间,默认 48 小时
fileReservedTime=120
#commitLog每个文件的大小默认1G
mapedFileSizeCommitLog=1073741824
#ConsumeQueue每个文件默认存30W条,根据业务情况调整
mapedFileSizeConsumeQueue=300000
#destroyMapedFileIntervalForcibly=120000
#redeleteHangedFileInterval=120000
#检测物理文件磁盘空间
diskMaxUsedSpaceRatio=88
#存储路径
storePathRootDir=/home/xm6f/dev/rocketmq/store
#commitLog 存储路径
storePathCommitLog=/home/xm6f/dev/rocketmq/store/commitlog
#消费队列存储路径存储路径
storePathConsumeQueue=/home/xm6f/dev/rocketmq/store/consumequeue
#消息索引存储路径
storePathIndex=/home/xm6f/dev/rocketmq/store/index
#checkpoint 文件存储路径
storeCheckpoint=/home/xm6f/dev/rocketmq/store/checkpoint
#abort 文件存储路径
abortFile=/home/xm6f/dev/rocketmq/store/abort
#限制的消息大小
maxMessageSize=65536
#flushCommitLogLeastPages=4
#flushConsumeQueueLeastPages=2
#flushCommitLogThoroughInterval=10000
#flushConsumeQueueThoroughInterval=60000
#Broker 的角色
#- ASYNC_MASTER 异步复制Master
#- SYNC_MASTER 同步双写Master
#- SLAVE
brokerRole=ASYNC_MASTER
#刷盘方式
#- ASYNC_FLUSH 异步刷盘
#- SYNC_FLUSH 同步刷盘
flushDiskType=ASYNC_FLUSH
#checkTransactionMessageEnable=false
#发消息线程池数量
#sendMessageThreadPoolNums=128
#拉消息线程池数量
#pullMessageThreadPoolNums=128
#强制指定本机IP,需要根据每台机器进行修改。官方介绍可为空,系统默认自动识别,但多网卡时IP地址可能读取错误
brokerIP1=192.168.1.7

 

broker-a-s.properties文件

#所属集群名字
brokerClusterName=rocketmq-cluster
#broker名字,注意此处不同的配置文件填写的不一样
brokerName=broker-a
#0 表示 Master,>0 表示 Slave
brokerId=1
#nameServer地址,分号分割
namesrvAddr=rocketmq-nameserver1:9876;rocketmq-nameserver2:9876;rocketmq-nameserver3:9876;rocketmq-nameserver4:9876
#在发送消息时,自动创建服务器不存在的topic,默认创建的队列数
defaultTopicQueueNums=4
#是否允许 Broker 自动创建Topic,建议线下开启,线上关闭
autoCreateTopicEnable=true
#是否允许 Broker 自动创建订阅组,建议线下开启,线上关闭
autoCreateSubscriptionGroup=true
#Broker 对外服务的监听端口
listenPort=10911
#删除文件时间点,默认凌晨 4点
deleteWhen=04
#文件保留时间,默认 48 小时
fileReservedTime=120
#commitLog每个文件的大小默认1G
mapedFileSizeCommitLog=1073741824
#ConsumeQueue每个文件默认存30W条,根据业务情况调整
mapedFileSizeConsumeQueue=300000
#destroyMapedFileIntervalForcibly=120000
#redeleteHangedFileInterval=120000
#检测物理文件磁盘空间
diskMaxUsedSpaceRatio=88
#存储路径
storePathRootDir=/home/xm6f/dev/rocketmq/store
#commitLog 存储路径
storePathCommitLog=/home/xm6f/dev/rocketmq/store/commitlog
#消费队列存储路径存储路径
storePathConsumeQueue=/home/xm6f/dev/rocketmq/store/consumequeue
#消息索引存储路径
storePathIndex=/home/xm6f/dev/rocketmq/store/index
#checkpoint 文件存储路径
storeCheckpoint=/home/xm6f/dev/rocketmq/store/checkpoint
#abort 文件存储路径
abortFile=/home/xm6f/dev/rocketmq/store/abort
#限制的消息大小
maxMessageSize=65536
#flushCommitLogLeastPages=4
#flushConsumeQueueLeastPages=2
#flushCommitLogThoroughInterval=10000
#flushConsumeQueueThoroughInterval=60000
#Broker 的角色
#- ASYNC_MASTER 异步复制Master
#- SYNC_MASTER 同步双写Master
#- SLAVE
brokerRole=SLAVE
#刷盘方式
#- ASYNC_FLUSH 异步刷盘
#- SYNC_FLUSH 同步刷盘
flushDiskType=ASYNC_FLUSH
#checkTransactionMessageEnable=false
#发消息线程池数量
#sendMessageThreadPoolNums=128
#拉消息线程池数量
#pullMessageThreadPoolNums=128
#强制指定本机IP,需要根据每台机器进行修改。官方介绍可为空,系统默认自动识别,但多网卡时IP地址可能读取错误
brokerIP1=192.168.1.149

 

broker-b.properties文件

#所属集群名字
brokerClusterName=rocketmq-cluster
#broker名字,注意此处不同的配置文件填写的不一样
brokerName=broker-b
#0 表示 Master,>0 表示 Slave
brokerId=0
#nameServer地址,分号分割
namesrvAddr=rocketmq-nameserver1:9876;rocketmq-nameserver2:9876;rocketmq-nameserver3:9876;rocketmq-nameserver4:9876
#在发送消息时,自动创建服务器不存在的topic,默认创建的队列数
defaultTopicQueueNums=4
#是否允许 Broker 自动创建Topic,建议线下开启,线上关闭
autoCreateTopicEnable=true
#是否允许 Broker 自动创建订阅组,建议线下开启,线上关闭
autoCreateSubscriptionGroup=true
#Broker 对外服务的监听端口
listenPort=10911
#删除文件时间点,默认凌晨 4点
deleteWhen=04
#文件保留时间,默认 48 小时
fileReservedTime=120
#commitLog每个文件的大小默认1G
mapedFileSizeCommitLog=1073741824
#ConsumeQueue每个文件默认存30W条,根据业务情况调整
mapedFileSizeConsumeQueue=300000
#destroyMapedFileIntervalForcibly=120000
#redeleteHangedFileInterval=120000
#检测物理文件磁盘空间
diskMaxUsedSpaceRatio=88
#存储路径
storePathRootDir=/home/xm6f/dev/rocketmq/store
#commitLog 存储路径
storePathCommitLog=/home/xm6f/dev/rocketmq/store/commitlog
#消费队列存储路径存储路径
storePathConsumeQueue=/home/xm6f/dev/rocketmq/store/consumequeue
#消息索引存储路径
storePathIndex=/home/xm6f/dev/rocketmq/store/index
#checkpoint 文件存储路径
storeCheckpoint=/home/xm6f/dev/rocketmq/store/checkpoint
#abort 文件存储路径
abortFile=/home/xm6f/dev/rocketmq/store/abort
#限制的消息大小
maxMessageSize=65536
#flushCommitLogLeastPages=4
#flushConsumeQueueLeastPages=2
#flushCommitLogThoroughInterval=10000
#flushConsumeQueueThoroughInterval=60000
#Broker 的角色
#- ASYNC_MASTER 异步复制Master
#- SYNC_MASTER 同步双写Master
#- SLAVE
brokerRole=ASYNC_MASTER
#刷盘方式
#- ASYNC_FLUSH 异步刷盘
#- SYNC_FLUSH 同步刷盘
flushDiskType=ASYNC_FLUSH
#checkTransactionMessageEnable=false
#发消息线程池数量
#sendMessageThreadPoolNums=128
#拉消息线程池数量
#pullMessageThreadPoolNums=128
#强制指定本机IP,需要根据每台机器进行修改。官方介绍可为空,系统默认自动识别,但多网卡时IP地址可能读取错误
brokerIP1=192.168.1.105

 

broker-b-s.properties文件

#所属集群名字
brokerClusterName=rocketmq-cluster
#broker名字,注意此处不同的配置文件填写的不一样
brokerName=broker-b
#0 表示 Master,>0 表示 Slave
brokerId=1
#nameServer地址,分号分割
namesrvAddr=rocketmq-nameserver1:9876;rocketmq-nameserver2:9876;rocketmq-nameserver3:9876;rocketmq-nameserver4:9876
#在发送消息时,自动创建服务器不存在的topic,默认创建的队列数
defaultTopicQueueNums=4
#是否允许 Broker 自动创建Topic,建议线下开启,线上关闭
autoCreateTopicEnable=true
#是否允许 Broker 自动创建订阅组,建议线下开启,线上关闭
autoCreateSubscriptionGroup=true
#Broker 对外服务的监听端口
listenPort=10911
#删除文件时间点,默认凌晨 4点
deleteWhen=04
#文件保留时间,默认 48 小时
fileReservedTime=120
#commitLog每个文件的大小默认1G
mapedFileSizeCommitLog=1073741824
#ConsumeQueue每个文件默认存30W条,根据业务情况调整
mapedFileSizeConsumeQueue=300000
#destroyMapedFileIntervalForcibly=120000
#redeleteHangedFileInterval=120000
#检测物理文件磁盘空间
diskMaxUsedSpaceRatio=88
#存储路径
storePathRootDir=/home/xm6f/dev/rocketmq/store
#commitLog 存储路径
storePathCommitLog=/home/xm6f/dev/rocketmq/store/commitlog
#消费队列存储路径存储路径
storePathConsumeQueue=/home/xm6f/dev/rocketmq/store/consumequeue
#消息索引存储路径
storePathIndex=/home/xm6f/dev/rocketmq/store/index
#checkpoint 文件存储路径
storeCheckpoint=/home/xm6f/dev/rocketmq/store/checkpoint
#abort 文件存储路径
abortFile=/home/xm6f/dev/rocketmq/store/abort
#限制的消息大小
maxMessageSize=65536
#flushCommitLogLeastPages=4
#flushConsumeQueueLeastPages=2
#flushCommitLogThoroughInterval=10000
#flushConsumeQueueThoroughInterval=60000
#Broker 的角色
#- ASYNC_MASTER 异步复制Master
#- SYNC_MASTER 同步双写Master
#- SLAVE
brokerRole=SLAVE
#刷盘方式
#- ASYNC_FLUSH 异步刷盘
#- SYNC_FLUSH 同步刷盘
flushDiskType=ASYNC_FLUSH
#checkTransactionMessageEnable=false
#发消息线程池数量
#sendMessageThreadPoolNums=128
#拉消息线程池数量
#pullMessageThreadPoolNums=128
#强制指定本机IP,需要根据每台机器进行修改。官方介绍可为空,系统默认自动识别,但多网卡时IP地址可能读取错误
brokerIP1=192.168.1.160

 

7. 修改启动脚本参数【4台机器】

# vim /home/xm6f/dev/rocketmq/bin/runbroker.sh
JAVA_OPT="${JAVA_OPT} -server -Xms1g -Xmx1g -Xmn512m -
XX:PermSize=128m -XX:MaxPermSize=320m"

# vim /home/xm6f/dev/rocketmq/bin/runserver.sh 
JAVA_OPT="${JAVA_OPT} -server -Xms1g -Xmx1g -Xmn512m - 
XX:PermSize=128m -XX:MaxPermSize=320m"

注意:启动脚本设置不合理,可能报如下异常:
Error occurred during initialization of VM
Too small new size specified

8.防火墙
默认启动用使用3个端口9876,10911,10912
分别代表名称服务端口,broker端口,broker ha端口。
ha端口haListenPort表示Master监听Slave请求的端口,默认为服务端口+1

添加到/etc/sysconfig/iptables的filter表INPUT链中

-A INPUT -m state --state NEW -m tcp -p tcp --dport 9876 -j ACCEPT
-A INPUT -m state --state NEW -m tcp -p tcp --dport 10911 -j ACCEPT
-A INPUT -m state --state NEW -m tcp -p tcp --dport 10912 -j ACCEPT

添加完成后重启防火墙
service iptables restart

9.启动NameServer【4台机器】

# cd /home/xm6f/dev/rocketmq/bin 
# sudo nohup sh mqnamesrv &

 

10.启动BrokerServer 【4台机器】

注意配置文件需要根据实际配置/broker-X.properties

# cd /home/xm6f/dev/rocketmq/bin 
# 192.168.1.7
# sudo nohup sh mqbroker -c /home/xm6f/dev/rocketmq/conf/2m-2s-async/broker-a.properties >/dev/null 2>&1 & 
# 192.168.1.105
# sudo nohup sh mqbroker -c /home/xm6f/dev/rocketmq/conf/2m-2s-async/broker-b.properties >/dev/null 2>&1 & 
# 192.168.1.149
# sudo nohup sh mqbroker -c /home/xm6f/dev/rocketmq/conf/2m-2s-async/broker-a-s.properties >/dev/null 2>&1 & 
# 192.168.1.160
# sudo nohup sh mqbroker -c /home/xm6f/dev/rocketmq/conf/2m-2s-async/broker-b-s.properties >/dev/null 2>&1 & 

说明:IP位7为主节点,149是7的从节点。105是主节点,160是105的从节点

输入jps看到如上图所示表示成功

停止服务broker:

# sh mqshutdown broker

 

11.在tomcat中部署rocketmq-console.war
修改rocketmq-console配置文件,找到/tomcat-8082/webapps/rocketmq-console/WEB-INF/classes/config.properties文件,添加如下:

rocketmq.namesrv.addr=192.168.1.7:9876;192.168.1.105:9876;192.168.1.149:9876;192.168.1.160:9876
throwDone=true

启动tomcat,在浏览器输入:http://192.168.1.105:8082/rocketmq-console/

多Master多Slave可以保证实时消费,比如说:我有一主一从,如果主机宕机,那么我从主机上获得的数据如果在没有从节点,那么这些消息将在主节点重启之前将无法被消费,直到主节点启动,如果这个主节点里面有从节点,从节点可以对外提供服务,并且从节点有从主节点同步过来的数据,那么还是可以将这些消息实时地消费掉。这点多Master方式无法做到。

当宕机的主节点起来之后,会和从节点进行数据的同步,不会重复消费刚刚消费过的数据。

12.数据清理

# cd /home/xm6f/devrocketmq/bin
# sh mqshutdown broker
# sh mqshutdown namesrv
# --等待停止
# rm -rf /home/xm6f/devrocketmq/store
# mkdir /home/xm6f/devrocketmq/store
# mkdir /home/xm6f/devrocketmq/store/commitlog
# mkdir /home/xm6f/devrocketmq/store/consumequeue
# mkdir /home/xm6f/devrocketmq/store/index
# --按照上面步骤重启NameServer与BrokerServer


启动时报错:
注释runserver.sh和runbroker.sh以下,并添加JAVA_HOME地址

#[ ! -e "$JAVA_HOME/bin/java" ] && JAVA_HOME=/home/xm6f/dev/jdk1.7.0_80
#[ ! -e "$JAVA_HOME/bin/java" ] && JAVA_HOME=/home/xm6f/dev/jdk1.7.0_80
#[ ! -e "$JAVA_HOME/bin/java" ] && error_exit "Please set the JAVA_HOME variable in your environment, We need java(x64)!"export JAVA_HOME="/home/xm6f/dev/jdk1.7.0_80"
export JAVA="$JAVA_HOME/bin/java"
.....

 

转载于:https://www.cnblogs.com/linjiqin/p/7511062.html

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.mzph.cn/news/253424.shtml

如若内容造成侵权/违法违规/事实不符,请联系多彩编程网进行投诉反馈email:809451989@qq.com,一经查实,立即删除!

相关文章

codeforces 1045 D. Interstellar battle

题目大意:一颗树,给定每个点消失的概率,求出连通块的期望值。要求支持修改消失概率的操作并且给出每次修改过后的期望值。注意被破坏的点不能算入连通块中。 数据范围,时限1S。 传送门 D. Interstellar battle 我们考虑做有根树的…

Cookie中文存储页面500问题

前段时间做cookie存储,直接用的菜鸟教程中的cookie设置方法,方法如下: function setCookie(cname,cvalue,exdays) {var d new Date();d.setTime(d.getTime()(exdays*24*60*60*1000));var expires "expires"d.toGMTString();docum…

IC Compiler指南——数据准备

一、概述 ICC数据设置的文件关系框图如图: 后端工具在数据设置阶段需要对两大类数据进行设置,包括从前端设计继承的综合数据 以及后端设计需要的物理数据。 综合数据主要包括前端逻辑综合已经设置过的逻辑与时序库文件、设计约束文件sdc以 及综合网表文…

iOS Xcode全面剖析

前言 前几天在公司内部做了一次关于iOS的入门分享,听众有PHP、Web、Android、测试、产品、UI等,主旨是力求不懂iOS的人能了解iOS的开发流程,听后都能创建一个iOS项目并打印HelloWorld。(这是背景)你想想就这么点需求&a…

VS2013编译OBS源码

obs源码来之:https://sourceforge.net/projects/obsproject/ 下载源码之后直接打开sln索引文件就行 项目打开之后 obs作为启动项 直接编译就行,正常应该一下就能编译成功。 在运行的时候可能会报错: 这个问题就需要制定一下编译输出路径&…

js图片切换

1.不同方式的图片切换 功能点:   1.页面默认循环切换,循环切换按钮获得焦点   2.点击顺序切换时,顺序切换按钮获得焦点     点击上一张时,当图片为第一张时,图片不再进行切换,图片张数和描述也不在变动;     点击下一张时,当图片为最后一张时,图片不再进行切换,图片…

CIS关键工艺技术概览

相机作为一种媒介,可以记录光所体现的物体,使人们能够主观或客观地表达各种情感和思想。当代人类身处于一个所谓的“数字游牧时代”,人们携带各类移动数码设备,生活不受时空的限制。在当今时代,相较于胶片相机&#xf…

1215 - Cannot add foreign key constraint

2019独角兽企业重金招聘Python工程师标准>>> 参考网页 https://blog.csdn.net/yiwangxiblog/article/details/52269527 https://blog.csdn.net/ytm15732625529/article/details/53729155 原因--亲测 两张表的存储引擎不一致。主键所在表和外键所在表的存储引擎改成一…

Css3实现波浪线效果1

一、波浪线 ,常用 .info::before {content: ;position: absolute;top: 30px;width: 100%;height: 0.25em;background:linear-gradient(135deg, transparent, transparent 45%, #008000, transparent 55%, transparent 100%),linear-gradient(45deg, transparent, tr…

dm368ipnc 重写架构中的swosd 实现中文osd

appro的ipnc中只实现了英文的osd叠加,就连小小的ascii码表都没有覆盖全,而且该swosd架构灰常凌乱。 其实无非就是两个功能,一是叠加文字,而是叠加图片,由于考虑到兼容不同的分辨率的视频流,所以处理的分支相…

dubbo系列(一)

进入官网之后,找到 http://dubbo.apache.org/en-us/docs/user/quick-start.html 有一个链接跳转到这里 http://dubbo.apache.org/en-us/docs/admin/install/provider-demo.html 使用git将项目下载下来 修改如下Service实现类 1 /*2 * Licensed to the Apache Softw…

基于Flask实现后台权限管理系统 - 表设计

1.1. 设计 1.1.1. 用户表 用户表记录系统中的所有用户,是权限管理系统最基本的部分,和其他权限表都有一定的关联关系,同时,一个还有一个重要的功能:系统登陆。 名称 数据类型 允许空值 默认值 描述 ID VARCHAR …

DM8168的McSPI/McASP/McBSP接口

McSPI接口 SPI管脚: 管脚 类型 描述 SPI_SCLK I/O SPI串行时钟(MASTER时:输出;SLAVE:输入) SPI_D0 I/O 能被配置为输入或输出(MOSI:master out,slave in或MISO&…

Sencha ID的注册

sencha id的注册用不着翻墙,直接访问下面的地址https://www.sencha.com/forum/register.php输入你的个人信息敞开来注册,我的注册名为charlie2018w非常顺利的过程你免费注册的id只能用30天。拥有这个id你就可以在eclipse或者sencha artchitect3或者webst…

ansible安装

1、简介 ansible是新出现的自动化运维工具,基于Python开发,集合了众多运维工具(puppet、cfengine、chef、func、fabric)的优点,实现了批量系统配置、批量程序部署、批量运行命令等功能。ansible是基于模块工作的&#…

jenkins之qq企业邮箱配置

一、配置qq企业邮箱 1、登录jenkins后台管理,选择 系统管理 ☞ 系统设置 2、SMTP server配置 3、邮件通知配置 配置ssl等参数 点击 高级 4、发送邮件测试 总结:邮箱配置不成程分析 1、管理员账号和默认发送账号不一致。2、smtp服务器设置不正确;qq企业…

mysql-5.7 持久化统计信息详解

一、持久化统计信息的意义: 统计信息用于指导mysql生成执行计划,执行计划的准确与否直接影响到SQL的执行效率;如果mysql一重启 之前的统计信息就没有了,那么当SQL语句来临时,那么mysql就要收集统计信息然后再生成SQL语…

关于传感器”英寸“计量

传感器上的n是指对角线长度为16mm或18mm的n倍 以英寸代指的传感器大小称为靶面尺寸。 在CCD/CMOS出现之前,摄像机是利用一种叫作“光导摄像管(Vidicon Tube)”的成像器件感光成像的,这是一种特殊设计的电子管,其直径的…

关于USB-AUDIO使用ALSA编程的一点问题

转载自:http://blog.chinaunix.net/uid-25272011-id-3153434.html 最近在调试一款原相PAP7501摄像头中的USB的麦克风,USB层走的应该是标准的UAC协议,具体可以见USB的官网:http://www.usb.org/developers/devclass_docs#approved&a…

Fiddler4入门——手机抓包

一、下载工具包 百度搜索”fiddler 下载“ ,安装最新版本 下载的软件安装包为“fiddler_4.6.20171.26113_setup.exe”格式,双击安装。安装成功,在“开始”-“所有程序”,就会看见这样的图标,若是常用的话,也…