Redis(7):哨兵机制

Redis(7):哨兵机制,第1张

        哨兵(sentinel),是redis集群架构中非常重要的一个组件,它主要的功能和特性如下:

(1)集群监控,负责监控redis master和slave进程是否正常工作。

(2)消息通知,如果某个redis实例有故障,那么哨兵负责发送消息作为报警通知给管理员。

(3)故障转移,如果master node挂掉了,会自动转移到slave node上。

(4)配置中心,如果故障转移发生了,通知client客户端新的master地址。

(5)哨兵本身也是分布式的,哨兵以集群的方式来相互协作。

(6)要进行故障转移时会涉及到分布式选举,当大部分哨兵节点都同意时才能进行。

(7)当部分哨兵节点不能正常工作时,哨兵集群还是能够正常工作。

        说到这个特点,我们就要说到两个参数,第一个是quorum,quorum是我们可以给哨兵集群配置的一个参数,它的作用是:当master节点宕机的时候需要有至少quorum个哨兵节点认为mater宕机才能进行后续的 *** 作,比如主备切换、故障转移,这个时候还需要一个参数majority来判断是否可以进行故障转移,需要有大多数哨兵节点正常工作来同同意这次故障转移,即正常工作的哨兵节点数要大于majority,majority有一个通用的规则:2个哨兵节点的majority为2,3个哨兵节点的majority为2,4个哨兵节点的majority为2,5个哨兵节点的majority为3,以此类推。如果一个master节点宕机了,同时他的哨兵进程同时挂掉了,那么现在正常运行的哨兵节点数目为1,即使你把quorum设置为1,满足了quorum的条件,但是是不能满足正常运行的哨兵节点大于majority,也就是2,所以是不能保证能够进行故障转移的。

       第一种情况: maser节点和slave节点之间的数据传输不是同步的,是异步的,当客户端往master中写数据的时,master异步的发送给slave节点,这当中会存在一定的延迟,当master节点挂掉的时候是不能保证这一小部分数据会及时的发送给slave节点。

        第二种情况:当master节点与slave节点间发生网络故障,导致无法与slave节点通讯,产生网络分区。这时,老的master节点并没有视为宕机,仍然在不停的写数据。此时这个slave节点如果被选举为新的master节点,这样就会发生“集群脑裂”,客户端程序还是会源源不断地将数据写入老的master节点,新的master节点却没有接收到新的数据,当网络恢复正常,老的master节点降为slave节点的时候,会立即执行全量的主从复制,那么故障之后的数据就会丢失。

        现在我们有一主两从的这样一个redis 集群,每个redis节点有一个哨兵,我们设置quorum为2,那么当master节点宕机的话,此时三个哨兵还剩下两个,剩下的两个slave节点一致认为master宕机,此时三个哨兵节点的majority为2,剩下还有2个正常运行的哨兵节点,那么就可以选举出新的master节点进行故障转移。

        异步复制数据丢失,集群脑裂数据丢失的问题我们可以通过设置两个参数来减少数据丢失:

         min-slaves-to-write 1

        min-slaves-max-lag 10

        上面两个参数表达的意思为:要求至少有1个slave,数据复制和同步的延迟不能超过10秒。也就是说,如果所有的slave节点都落后于master节点10秒钟的数据,那么master节点就不会再接受任何请求了。

(1)减少异步复制的数据丢失

        有了min-slaves-max-lag这个配置,一旦slave复制数据和ack延时太长,就认为可能master宕机后损失的数据太多了,那么就拒绝写请求,这样可以把master宕机时由于部分数据未同步到slave导致的数据丢失降低的可控范围内,最多也就丢失10秒的数据。

(2)减少脑裂的数据丢失

        如果一个master出现了脑裂,跟其他slave丢了连接,那么上面两个配置可以确保说,如果不能继续给指定数量的slave发送数据,而且slave超过10秒没有给自己ack消息,那么就直接拒绝客户端的写请求。这样脑裂后的旧master就不会接受client的新数据,也就避免了数据丢失。上面的配置就确保了,如果跟任何一个slave丢了连接,在10秒后发现没有slave给自己ack,那么就拒绝新的写请求。因此在脑裂场景下,最多就丢失10秒的数据。

(3)当master不接受请求之后该如何处理

        当master不接受写请求之后,我们需要给client做降级,让它直接把数据写到本地磁盘里,让client自己处理这些数据,做相应的降级和限流,减慢数据涌入的速度。或者将数据写入一个消息队列,每隔一段时间取一次,尝试将数据重新写入到redis中。

        什么是sdown,sdown又称为主观宕机,即一个哨兵觉得master节点宕机,这就是sdown。odown又称为客观宕机,即现在有quorum个哨兵都认为master宕机了。判断sdown的条件就是:一个哨兵ping一个master,超过了is-master-down-after-milliseconds参数指定的毫秒数之后,就主观认为master宕机。sdown转换到odown的条件就是:如果一个哨兵在指定时间内收到了超过quorum个哨兵的认为该master节点宕机的信息,就转换成了odown。

        哨兵互相之间的发现,是通过redis的pub/sub系统实现的,每个哨兵都会往__sentinel__:hello这个channel里发送一个消息,这时候所有其他哨兵都可以消费到这个消息,并感知到其他的哨兵的存在。每隔两秒钟,每个哨兵都会往自己监控的某个master+slaves对应的__sentinel__:hello channel里发送一个消息,内容是自己的host、ip和runid还有对这个master的监控配置。每个哨兵也会去监听自己监控的每个master+slaves对应的__sentinel__:hello channel,然后去感知到同样在监听这个master+slaves的其他哨兵的存在。每个哨兵还会跟其他哨兵交换对master的监控配置,互相进行监控配置的同步。

        哨兵会负责自动纠正slave的一些配置,比如slave如果要成为潜在的master候选人,哨兵会确保slave在复制现有master的数据; 如果slave连接到了一个错误的master上,比如故障转移之后,那么哨兵会确保它们连接到正确的master上。

        如果一个master被认为odown了,而且majority哨兵都允许了主备切换,那么某个哨兵就会执行主备切换 *** 作,此时首先要选举一个slave,会考虑slave的一些信息:

a跟master断开连接的时长

bslave优先级

c复制offset

drun id

        如果一个slave跟master断开连接已经超过了down-after-milliseconds的10倍(加上master宕机的时长),那么slave就被认为不适合选举为master。计算公式为:(down-after-milliseconds 10) + milliseconds_since_master_is_in_SDOWN_state。接下来会对slave进行排序:

a按照slave优先级进行排序,slave priority越低,优先级就越高

b如果slave priority相同,那么看replica offset,哪个slave复制了越多的数据,offset越靠后,优先级就越高

c如果上面两个条件都相同,那么选择一个run id比较小的那个slave

        每次一个哨兵要做主备切换,首先需要quorum数量的哨兵认为odown,然后选举出一个哨兵来做切换,这个哨兵还得得到majority哨兵的授权,才能正式执行切换。如果quorum < majority,比如5个哨兵,majority就是3,quorum设置为2,那么就3个哨兵授权就可以执行切换,但是如果quorum >= majority,那么必须quorum数量的哨兵都授权,比如5个哨兵,quorum是5,那么必须5个哨兵都同意授权,才能执行切换。

        哨兵会对一套redis master+slave进行监控,有相应的监控的配置,执行切换的那个哨兵,会从要切换到的新master(salve->master)那里得到一个configuration epoch,这就是一个版本号,每次切换的version号都必须是唯一的。如果第一个选举出的哨兵切换失败了,那么其他哨兵,会等待failover-timeout时间,然后接替继续执行切换,此时会重新获取一个新的configuration epoch,作为新的版本号。

        哨兵完成切换之后,会在自己本地更新生成最新的master配置,然后同步给其他的哨兵,就是通过之前说的pub/sub消息机制。这里之前的版本号就很重要了,因为各种消息都是通过一个channel去发布和监听的,所以一个哨兵完成一次新的切换之后,新的master配置是跟着新的版本号,其他的哨兵都是根据版本号的大小来更新自己的master配置的。

1将车辆挂入驻车档;2点击中控面板右上角的摄像头图标,然后选择启动器即可查看;3此时会显示所有保存的视频片段,以及行车记录仪和哨兵模式的数据。只需选择你想看的哨兵模式内容;4点击缩略图查看特斯拉车辆各种摄像头拍摄的视频片段。还可以选择暂停、回放、快进/快退、删除等。根据自己的需求。特斯拉的哨兵模式,简单来说就是当车辆处于停车状态时,你可以开启哨兵模式,然后通过手机远程查看车辆周围的环境和车辆的安全状况。当有人靠近或损坏车辆时,还可以报警并提醒车主,并记录保存车辆停放时发生的事件。所以当车辆停在不熟悉的环境时,开启哨兵模式是非常好的,也更有保障。先说如何开启岗哨模式。1在特斯拉的中控显示屏上,点击左下角的汽车图标按钮;2在d出的新界面中,找到并点击“安全”选项;3进入“安全”选项后,向下滑动菜单找到“哨兵模式”,点击打开,打开特斯拉哨兵模式;4开启哨兵模式后,当我们离开车辆时,中控显示屏会显示一个红点圈。一旦我们开启哨兵模式,车辆的摄像头也会开启。

哨兵,对于这个名字你们应该都不会感觉到陌生吧!因为你们平常不管是在电视上还是现实生活中看到站在部队大门口的军人或者在一些执勤哨位上的军人,他们都叫哨兵!可是当哨兵到底是一种什么感觉,这个很多人都不知道吧!

第一次上哨的时候是在新兵连,那时候上哨都是班长带着,就两个人站在宿舍门口,两个小时一班哨。第一次站的时候很兴奋,因为毕竟从来没有体验过嘛!开始的半小时自己还是军姿站在那里,后来感觉累了,想放松一下,班长的一个大手就过来了,“直起腰来!”后来的一个半小时,我都硬撑着过去的。这两个小时的哨,是我感觉最漫长的两个小时。心里面一直在念叨着下一班哨赶紧来换我。刚看到下一班哨的哨兵来的时候,我刚想下哨,班长说“哨兵交接词忘了?”吓的我腿都一哆嗦。

后来下连,真正的走上哨位之后,才发现新兵连训练的那些都是小儿科。因为作为一名哨兵,不是让你站在那里就行了,你要知道你站在那里是为了什么,如果遇到突发情况应该如何的有效处置。就比如说营门哨。来队的人要检查证件、外出的人也要检查证件,外出人员的着装等等都要检查。因为各种原因,新兵都会在哨位上“翻”几次才算合格。当然“翻把”的后果就是连哨。曾经一个战友最多的时候连着上了一个星期的十二到二。

下哨的时候两个腿都有些僵硬了,如果是白天,回宿舍喝口水休息一下就接着训练。如果在晚上就想着下哨后会不会有一桶泡面吃,如果加两根火腿肠就更好了。

上哨的时候听到最多的一句话就是“上哨一分钟、警惕六十秒”“哨位就是战场,上哨就是打仗!”每一个夜晚被领班员叫起来的时候都想把他打一顿然后继续睡觉。后来退伍了,自己再也不用上哨了,踏出营门看到哨位上的新兵,默默的敬一个军礼,“辛苦了!”给他们,也是给自己!

一、出入管理

1、本市副厅以上领导和县(市、区)党政主要领导,可直接进小办公楼

2、办公大楼机关工作人员在出示证(牌)后,可直接进入小办公楼。会见领导者须经联系征得同意后方可进见。

3、来访的外宾、外商,经会议处与保卫处联系后,可不登记直接进小楼接待厅内。

4、小办公楼领导交待或带入人员,可不登记直接进入小楼。

5、经询问是到小办公楼参加会议的人员,可不登记直接进入小楼。经确认是副厅以上的老领导可准其进入,并及时通知小楼武警报告此情。

6、到小办公楼会议处、秘书一处等联系事项者,在查验证件后可不登记直接进小办公楼。

7、其他人员经与领导或领导秘书联系,征得同意并登记后方可准其进入小办公楼。

8、严禁上访人员及无关人员进入小办公楼区。

二、登记程序

1、外来人员进入小办公楼门厅,执勤武警应礼貌地问明其身份事由后请其登记(可不登记者除外)。

2、负责登记的执武警应问明来者的单位、姓名、职务、进见谁等情况(详见登记本),逐项登记根据登记情况,及时与领导或领导秘书联系,征得同意后准其进见。

3、领导因工作繁忙或其他原因不见,执勤武警要耐心做好解释劝说工作,不允许来访者滞留在小办公楼内。

4、来访者不听劝告,无理取闹,强行冲进小办公楼或滞留不走的,执勤武警要及时同公安联系并依法采取有效措施将其带离小办公楼区。

三、工作职责

1、负责大、小办公楼外围的警戒巡逻和市委市政府大楼警卫执勤任务,维护正常办公秩序,保证领导在机关工作的绝对安全。

2、阻止无小楼通行证的车辆进入小楼办公区,维护好办公区内的交通秩序,指挥车辆有序停放,保证小办公楼院内车辆通行。

3、负责政府大厅、小办公楼区物资进出的查验工作,严禁易燃、易爆、有毒等危险物品进入政府大楼、小办公楼区内;阻止外来人员无有效手续携带物品出楼,防止意外事故的发生。

4、熟悉四套班子领导的车牌号,确保其在机关通行安全;熟悉机关电源开关分布和消防器材设施的 *** 作方法,及时报告设备故障并协助排除;熟悉机关周围环境,经常进行安全巡查,严防各类安全事故的发生。

5、在小办公楼执勤的哨兵负责来访人员登记工作,有效阻止无证件或未经会见人同意进入小办公楼。

6、在无市领导办公时,小办公楼和大楼三楼执勤哨兵要每隔1小时巡查一次,检查门窗关锁和有无滞留人员;1号岗哨兵零点后随时关锁大楼东侧铁门。

7、夜间各岗执勤哨兵要每隔20分钟途经监视器前巡逻一次,打亮电筒检查各自警戒区域,用对讲机向中队勤务值班员报告安全情况,并及时记载。

8、负责打扫小楼值班室、接待室和政府三楼值班室的卫生及司机休息室的安全管理。

9、完成领导交办的其他工作。

四、执勤纪律

1、小办公楼、大楼东侧门岗全天上哨,大楼西侧岗22时至次日6时上哨,小楼西侧岗20时至次日6时上哨,大楼三楼18时30分至次日6时30分上哨,政府大厅7时30分至18时30分上哨,楼外三岗哨的哨兵晴好天气时要在亭外执勤,恶劣天气也不得长时间在亭内执勤。

2、执勤时要提高警惕,坚守岗位,不得脱岗、离岗或消极怠工。

3、执勤时不得玩电脑、打瞌睡、或叫哨时间过长。

4、不准随便使用机要电话或用值班电话闲聊。

5、不准向外泄露领导的电话、车牌号和去向;不得散播小道消息。

6、不得随便进入领导办公室,确因工作需要须经秘书同意,方可进入。

7、不得拿用机关公共物品、私自进入领导办公室、翻看领导文件查阅电脑资料。

8、遵纪守法,严守秘密,做到不该问的不问、不该听的不听、不该看的不看、不该说的不说,严格执行三大纪律。

五、礼仪规范

1、必须着装整洁,警容端庄,姿势规范,礼貌待人,文明用语。

2、接听电话首先必须说“您好”并告诉对方“我是执勤武警”,然后再问明对方身份事由后,及时转达情况。

3、每日第一次和最后一次遇见领导,必须行军礼。

4、对来人来访应热情接待,做到有礼、有节、有度。

六、考评与奖惩

1、建立保卫处和武警四中队双考评制度,实行逐月百分制考评和全队综合奖惩兑现。

2、保卫处对执勤武警进行的考评,由保卫处值班人员考评记录哨兵的执勤表现及违纪违规考评。

3、武警四中队负责对哨兵的考评与管理教育,每月讲评哨兵的执勤情况,评选表彰先进,对存在问题实事求是地指正,给予批评教育,情节严重的依照有关规定给予纪律及行政处分。

4、考评评分标准

(1)凡有下列情形之一者一次扣5分

①执勤时衣冠不整、风纪姿态不正、不文明礼貌、态度粗暴的;

②执勤时玩电脑或用值班电话闲聊的;

③执勤时离岗或娱乐、打瞌睡的;

④对不准进入小办公楼(院)的人员、车辆放任不管的;

⑤对滞留大楼东铁门边上访人员不劝其离开的;

⑥未按规定进行安全巡查或交接班巡查的;

⑦发现不安全情况不及时报告、不积极处置或处置不当的;

⑧遇督查人员查岗故意发出信号提醒其他哨兵的;

⑨其他未列入的一般性违纪违规行为。

(2)凡有下列情形之一者一次扣50分

①执勤时离岗1小时以上的;

②未经允许擅自进入领导办公室翻看文件、查阅电脑资料的;

③向外泄露领导电话、车牌号或领导去向的;

④未发现或未制止上访人员通过1号门岗进入小楼区的;

⑤不听从指挥、不服从管理、顶撞领导和机关安全督查人员的;

⑥其它未列入的较严重违纪违规行为。

(3)凡有下列情形之一者一次扣100分。

①执勤范围内发生重大安全事故,造成严重后果和经济损失的(自然灾害或不可抗拒力造成的事故除外);

②遇机关发生案情、险情或火情时,不及时报警、不积极处置、或见危不救的;

③其他未列入的严重违纪违规行为。

5、处罚

(1)月考评全队平均不满100分、90分、80分、70分、60分,分别扣全队10%、20%、30%、40%、50%的当月执勤补贴;

(2)月考评全队平均不满50分,扣发全队当月金额执勤补贴;

(3)连续两次考评全队平均不满50分、或发生1次扣100分的情形,向武警九江支队书面报告情况。

6、奖励

凡有下列情况之一者给予奖励:

(1)爱岗敬业,协作精神强,执勤表现突出;

(2)见义勇为,拾金不昧的;

(3)排除险情避免国家和人民生命财产遭受损失的;

(4)处置危害机关安全行为有功的; (5)其他对机关、社会和人民群众做出突出贡献的。

所谓“哨兵”就是用一个特殊值来作为数组的边界,使用“哨兵”可以少用一条判断语句,所以可以提高程序的效率。

比如从整数数组arr中,查找有没有整数num。

应用:假设一个乱序数组,需要查找一个元素是否在该数组中,这时需要用到顺序查找,也就是遍历数组。

一般情况下我们会写下如下代码:

int Sequential_Search(int a,int n,int key)

{

//数组从1开始

int i;

for(int i=1;i<=n;i++)

{

if(a[i]==key)

return i;

}

return 0;//查找失败

}

有的数据结构书上,会运用哨兵元素,改成这样的代码:

int Sequential_Search2(int a int n,int key)

{

int i=0;

a[0]=key;//哨兵

i=n;

while(a[i]!=key)

{

i--;

}

return i;//返回0就是查找失败

}

根据周围发生不同类型的潜在威胁而做出对应级别的警报反应。凯迪拉克XT6是最具性价比的豪华品牌3排座椅布局的SUV,该车的哨兵功能应用程序是根据周围发生不同类型的潜在威胁而做出对应级别的警报反应,包括在触摸屏提示“哨兵模式正在录像”或通过音频系统发出响亮的警报声。

以上就是关于Redis(7):哨兵机制全部的内容,包括:Redis(7):哨兵机制、特斯拉哨兵模式手机怎么看、在部队,哨兵站哨是什么样的感觉等相关内容解答,如果想了解更多相关内容,可以关注我们,你们的支持是我们更新的动力!

欢迎分享,转载请注明来源:内存溢出

原文地址:https://54852.com/zz/10624765.html

(0)
打赏 微信扫一扫微信扫一扫 支付宝扫一扫支付宝扫一扫
上一篇 2023-05-10
下一篇2023-05-10

发表评论

登录后才能评论

评论列表(0条)

    保存