【太平洋汽车网】驾驶员要想启用哨兵模式,必须通过控制安全和哨兵模式。新的哨兵模式利用车辆上现有的外部摄像头,在待机模式下持续监控周围的威胁。如果系统检测到威胁,比如有人靠在汽车上,它就会从被动待机状态进入警报模式。安全级别的提高会触发汽车在车内显示器,显示器会显示一条消息,告诉靠近的人正在视频健康范围内。
创新互联公司是一家专注于成都网站制作、成都做网站与策划设计,顺平网站建设哪家好?创新互联公司做网站,专注于网站建设10多年,网设计领域的专业建站公司;建站业务涵盖:顺平等地区。顺平做网站价格咨询:18982081108
如果靠近的人有其他动作,比如破窗或试图偷车,汽车会第一时间通过特斯拉App通知车主,并把警报声音调到11也就是最大。汽车还会保存前十分钟的监控视频,车主可以直接插入USB驱动器提取视频。
哨兵模式为特斯拉汽车增加了一层独特的保护,在无人看管的情况下,特斯拉汽车会持续监控周围的环境。当启用时,哨兵模式进入“待机”状态,就像许多家庭报警系统一样,它使用汽车的外部摄像头来检测潜在的威胁。如果检测到轻微的威胁,比如有人靠在汽车上,哨兵模式就会切换到“警报”状态,并在触摸屏上显示一条消息,警告摄像头正在进行记录。如果检测到更严重的威胁,如有人打破窗户,哨兵模式切换到“报警”状态,激活汽车报警,增加中央显示的亮度,并播放汽车音响系统最大音量的音乐。
如果一辆汽车切换到“警报”状态,车主还会从他们的特斯拉移动应用程序收到一个警报,通知他们发生了事故。他们可以在启动哨兵模式之前,通过将格式化的USB驱动器插入汽车,下载一段事故视频(从检测到威胁前10分钟开始)。(图/文/摄:太平洋汽车网董鹏)
在实际开发中不会仅仅部署一个 Redis 服务器,为了获得高可用,Redis 哨兵模式 则是高可用的一种选择。
本文先介绍下 哨兵模式,再介绍了如何在 springboot 项目中使用。
这意味着使用 Sentinel (哨兵模式),您可以创建一个 Redis 部署,它可抵抗某些类型的故障(进行故障迁移)而无需人工干预。
它有这些功能:
Sentinel 的分布式特性
Redis Sentinel 是一个分布式系统,多个 Sentinel 进程协同工作,有这些优势:
部署前需要了解:
三个节点的基本配置
法定人数和仲裁
在配置 哨兵模式时,要指定一个 quorum,它可理解为“法定人数”。
假设有3 个 哨兵,法定人数为2。那么:
哨兵和副本的自动发现
Sentinel 与其他 Sentinel 保持连接,以便相互检查彼此的可用性并交换消息。
但是,您不需要在您运行的每个 Sentinel 实例中配置其他 Sentinel 地址的列表,因为 Sentinel 使用 Redis 实例的 Pub/Sub 功能来发现正在监视相同主节点和副本的其他 Sentinel。
类似地,您不需要配置附加到主服务器的副本地址在哪里,因为 Sentinel 会通过查询 Redis 自动发现它们。
参考我的另一篇文章:
一般需要三个节点,每个节点有一个 redis 和一个哨兵。
下面再分别描述。
我这里按三个 节点,先配置 redis 的主从复制。1个节点作为 master ,2个副本。
配置节点1:master
这里的 redis 作为 master 主redis,其他两个节点作为从节点。
我的文件夹名字叫 box1,这里编辑一个 box1/redis.conf 文件,主要配置内容如下:
配置节点2:副本
编辑一个 box2/redis.conf 文件,主要配置内容如下:
配置节点3:副本
编辑一个 box3/redis.conf 文件,主要配置内容如下:
分别启动这三个redis
命令行执行 redis-server ,并指定 配置文件的路径参数。
如何查看“主从复制”是否配置成功?
使用 info replication 命令,操作如下:
副本节点设置为只读?
从 Redis 2.6 开始,副本已被默认设置为 只读,无需额外配置。.
一般情况下,至少会需要三个哨兵对redis 进行监控,我们可以通过修改端口启动多个sentinel 服务。
第一个哨兵:
哨兵的 默认端口是 26379 ,这里不改。
第二个哨兵:
修改哨兵端口。
第三个哨兵:
修改哨兵端口。
启动哨兵
使用 redis-sentinel 命令,分别启动这三个哨兵
哨兵的自动发现
当三个哨兵都启动后,在各个哨兵的打印日志里可以看到, 三个哨兵已互相发现了彼此的存在 。
至此,配置完毕了,我们有三个 redis,和三个哨兵,看下截图。
模拟 master 宕机
按 ctrl+c 停止 master ,其位于 6379 。停止后,从日志可以看到,哨兵和 redis副本先努力继续连接 6379,反复几次失败后,开始选举出新的 master。截图如下:
至此,配置完毕。
我们看下 springboot 项目的客户端如何配置 以访问 哨兵模式的 redis。
Redis 哨兵支持
对于处理高可用Redis,Spring Data Redis 已经支持Redis Sentinel,使用RedisSentinelConfiguration,如下例所示:
Jedis 和 Lettuce 两种 redis 驱动都可以支持。
RedisSentinelConfiguration 也可以用可以 通过 PropertySource 来设置,它允许您设置以下属性:
配置application.yml
比如我这里修改我的 application.yml 文件如下:
我的配置文件示例:
我的 springboot 配置实例:
Redis官网 sentinel 介绍
spring-data/data-redis
END
一、哨兵 Sentinel
1.作为Master的redis挂了,如何保证可用性,实现继续读写
2.哨兵:用于监控Redis集群中Master状态的工具,是Redis高可用的解决方案,哨兵可以监视一个或多个redis master服务,以及这些master服务的所有从服务;当某个master宕机后,会把这个master下的某个从服务升级为master服务来替代已宕机的master继续工作
3.master挂了以后,由于哨兵的监控,剩余的slave会进行选举,选举后其中一个成为master,当原来的master恢复后,他会成为slave。
4.需要注意:当master宕机后,重启redis需要重新设置宕机redis的masterauth
二、配置哨兵监控master
1.创建并配置sentinel.conf(redis解压包包含):
普通配置(哨兵的端口):
port 26379
pidfile "/usr/local/redis/sentinel/redis-sentinel.pid"
dir "/usr/local/redis/sentinel"
daemonize yes
protected-mode no
logfile "/usr/local/redis/sentinel/redis-sentinel.log"
2.核心配置
# 配置哨兵
sentinel monitor mymaster 127.0.0.1 6379 2
# 密码
sentinel auth-pass master-name password
# master被sentinel认定为失效的间隔时间
sentinel down-after-milliseconds mymaster 30000
# 剩余的slaves重新和新的master做同步的并行个数
sentinel parallel-syncs mymaster 1
# 主备切换的超时时间,哨兵要去做故障转移,这个时候哨兵也是一个进程,如果他没有去执行,超过这个时间后,会由其他的哨兵来处理
sentinel failover-timeout mymaster 180000
3.启动哨兵:redis-sentinel sentinel.conf
4.部署约定
哨兵节点要有至少三个或者奇数个节点
哨兵分布式部署在不同的计算机节点
一组哨兵只监听一组主从
5.查看哨兵相关信息(redis-cli下)
# 查看imooc-master下的master节点信息
sentinel master imooc-master
# 查看imooc-master下的slaves节点信息
sentinel slaves imooc-master
# 查看imooc-master下的哨兵节点信息
sentinel sentinels imooc-master
三、springboot集成Redis哨兵配置
spring:
redis:
database: 1
password: imooc
sentinel:
master: imooc-master #master节点名称
nodes: 192.168.1.191:26379,192.168.1.192:26379,192.168.1.193:26379 #所有哨兵节点ip和端口
主从切换技术的方法是:当主服务器宕机后,需要手动把一台从服务器切换为主服务器,这就需要人工干预,费事费力,还会造成一段时间内服务不可用。 这不是一种推荐的方式,更多时候,我们优先考虑 哨兵模式 。
一、哨兵模式概述
哨兵模式是一种特殊的模式,首先Redis提供了哨兵的命令,哨兵是一个独立的进程,作为进程,它会独立运行。其原理是 哨兵通过发送命令,等待Redis服务器响应,从而监控运行的多个Redis实例。
Redis哨兵
这里的哨兵有两个作用
通过发送命令,让Redis服务器返回监控其运行状态,包括主服务器和从服务器。
当哨兵监测到master宕机,会自动将slave切换成master,然后通过 发布订阅模式 通知其他的从服务器,修改配置文件,让它们切换主机。
然而一个哨兵进程对Redis服务器进行监控,可能会出现问题,为此,我们可以使用多个哨兵进行监控。各个哨兵之间还会进行监控,这样就形成了多哨兵模式。
用文字描述一下 故障切换(failover) 的过程。假设主服务器宕机,哨兵1先检测到这个结果,系统并不会马上进行failover过程,仅仅是哨兵1主观的认为主服务器不可用,这个现象成为 主观下线 。当后面的哨兵也检测到主服务器不可用,并且数量达到一定值时,那么哨兵之间就会进行一次投票,投票的结果由一个哨兵发起,进行failover操作。切换成功后,就会通过发布订阅模式,让各个哨兵把自己监控的从服务器实现切换主机,这个过程称为 客观下线 。这样对于客户端而言,一切都是透明的。
二、Redis配置哨兵模式
配置3个哨兵和1主2从的Redis服务器来演示这个过程。
服务类型是否是主服务器IP地址端口
Redis是192.168.11.1286379
Redis否192.168.11.1296379
Redis否192.168.11.1306379
Sentinel-192.168.11.12826379
Sentinel-192.168.11.12926379
Sentinel-192.168.11.13026379
多哨兵监控Redis
首先配置Redis的主从服务器,修改redis.conf文件如下
上述内容主要是配置Redis服务器,从服务器比主服务器多一个slaveof的配置和密码。
配置3个哨兵,每个哨兵的配置都是一样的。在Redis安装目录下有一个sentinel.conf文件,copy一份进行修改
上述关闭了保护模式,便于测试。
有了上述的修改,我们可以进入Redis的安装目录的src目录,通过下面的命令启动服务器和哨兵
注意启动的顺序。 首先是主机(192.168.11.128)的Redis服务进程,然后启动从机的服务进程,最后启动3个哨兵的服务进程。
三、Java中使用哨兵模式
上面是通过Jedis进行使用的,同样也可以使用Spring进行配置RedisTemplate使用。
四、哨兵模式的其他配置项
sentinel down-after-milliseconds配置项只是一个哨兵在超过规定时间依旧没有得到响应后,会自己认为主机不可用。对于其他哨兵而言,并不是这样认为。哨兵会记录这个消息,当拥有认为主观下线的哨兵达到sentinel monitor所配置的数量时,就会发起一次投票,进行failover,此时哨兵会重写Redis的哨兵配置文件,以适应新场景的需要。