目录
LB(load balance)负载均衡
DMZ:非军事化区域,外网到内围的转换区域,一般在这个区域我们会做那些操作呢?第一个东西是防火墙,而防火墙又封为软件防火墙和硬件防火墙,第二个东西就是负载均衡,DMZ区域可以控制负载均衡,第三个就是流量控制
一、关系数据库和非关系数据库的区别
(1)、数据存储方式不同
关系型和非关系型数据库的主要差异是数据存储的方式。关系型数据天然就是表格式的,因此存储在数据表的行和列中。数据表可以彼此关联协作存储,也很容易提取数据。
与其相反,非关系型数据不适合存储在数据表的行和列中,而是大块组合在一起。非关系型数据通常存储在数据集中,就像文档、键值对或者图结构。你的数据及其特性是选择数据存储和提取方式的首要影响因素。
关系型:依赖于关系模型E-R图,同时以二维表格式的方式存储数据
非关系型:除了以表格形式存储之外,通常会以大块的形式组合在一起进行存储数据
(2)、扩展方式不同
SQL和NoSQL数据库最大的差别可能是在扩展方式上,要支持日益增长的需求当然要扩展。
要支持更多并发量,SQL数据库是纵向扩展,也就是说提高处理能力,使用速度更快速的计算机,这样处理相同的数据集就更快了。因为数据存储在关系表中,操作的性能瓶颈可能涉及很多个表,这都需要通过提高计算机性能来克服。虽然SQL数据库有很大扩展空间,但最终肯定会达到纵向扩展的上限。
而NosQL数据库是横向扩展的。因为非关系型数据存储天然就是分布式的,NoSQL数据库的扩展可以通过给资源池添加更多普通的数据库服务器(节点)来分担负载。
关系:纵向(天然表格式)
非关:横向(天然分布式)
(3)、对事务性的支持不同
如果数据操作需要高事务性或者复杂数据查询需要控制执行计划,那么传统的SQL数据库从性能和稳定性方面考虑是最佳选择。SoL数据库支持对事务(ACID)原子性细粒度控制,并且易于回滚事务。
虽然NoSQL数据库也可以使用事务操作,但稳定性方面没法和关系型数据库比较,所以它们真正闪亮的价值是在操作的扩展性和大数据量处理方面。
关系型:特别适合高事务性要求和需要控制执行计划的任务
非关系:此处会稍显弱势,其价值点在于高扩展性和大数据量处理方面
二、映射的关系
三、Redis简介
Redis是一个开源的、使用c语言编写的NoSQL数据库。
Redis基于内存运行并支持持久化(支持存储在磁盘),采用key-
Redis服务器程序是单进程模型
Redis服务在一台服务器上可以同时启动多个Redis进程,Redis的实际处理速度则是完全依靠于主进程的执行效率。若在服务器上只运行-个Redis进程,当多个客户端同时访问时,服务器的处理能力是会有一定程度的下降;若在同一台服务器上开启多个Redis进程,Redis在提高并发处理能力的同时会给服务器的cPt造成很大压力。即:在实际生产环境中,需要根据实际的需求来决定开启多少个Redis进程。
建议可以开2个进程
value(键值对)的存储形式,是目前分布式架构中不可或缺的一环。
四、Redis基础
1、redis 是一种非关数据库(内存/缓存)
redis 相比于其他非关数据库优势的地方主要在于:o数据类型丰富
◎持久化(可以将内存种的数据保存在磁盘中)形式为:RDB 与AOF
o使用epoll+I/0复用以及回调机制提升单线程模型的处理性能减少资源消耗(处理性能优化)
2、redis 集群模式:哨兵、主从、cluster(集群)
redis 的集群模式,同时也可以理解为是redis的高可用模式
主从:提供了备份冗余,缺点:无法针对故障进行自动修复,写操作无法负载均衡哨兵:以主从为基础提供了故障自动修复的功能,写操作无法负载均衡
集群:基于主从基础,解决了故障自动修复、写操作负载均衡的问题,同时对于资源需求相较于前两种集群得到了一定的改善
3、高可用中的持久化
RDB 和AOF
(1)持久化方式:
RDB :周期性的快照
AOF :接近实时的持久化(以everysec方式)
(2)redis 启用的优先级
AOF > RDB,同时仅当AOF功能关闭的情况下,redis才会在重新启动时使用RDB的方式进行恢复
(3) RDB 和AOF 中持久化模式
RDB :由redis主进程(周期性)fork 派生出子进程对redis内存中的数据进行持久化,生成到.rdb文件中 AOF :
根据持久化策略(alawys、no、everysec(默认)),先将redis中的语句保存在缓冲区中,再从缓冲区同步到.aof文件中
五、分布式锁
分布式锁主要作用是在并发时期,去减轻压力的问题
首先tomcat这边进来,然后一个进程进来后,第一条线程会在redis中处理,会在lock地方,也就是第一个地方加一个锁,防止后面的进程进来造成阻塞(是以分布式的方式在等待),接着在这里有个watch dog去监听这个锁,如果规定时间没有处理完,看门狗就会在这做延期
,完成后会手动或者自动去执行解锁。
六、RDB
触发方式:
手动触发:直接执行bgsave持久化命令
②自动触发:按照规定周期执行的语句的数量来触发,配置文件中例如save m n-》save 90 10
bgsave执行时,会控制RDB紫禁城再执行的位置创建.rdb文件,特性是,RDB持久化生产的文件,只记录的结果
有点偏于全量备份,为了提高处理速度和减少落地在磁盘中占用体积,RDB的数据会进行压缩处理。
内存中数据消失了,一旦数据加载失败,会启动失败
特殊的触发方式:主动的关闭redis,但RDB持久化优先级较低
应用场景:
1主动关闭时,触发RDB(redis 默认开启RDB)
2主从复制时,master同步给SLAVE时,,会触发RDB(全量复制),然后触发AOF的增量复制
3在redis重启时,当AOF未开启时候,才会基于RDB文件进行恢复数据,运行redis。
首先这里会以数据追加的方式,把缓存区的数据同步到缓存区
触发条件:
always :每产生一条,就同步—条
no:不自动触发
everysecond:每秒同步—次
七、淘汰策略
默认是惰性删除
随机淘汰
淘汰近期命中较少的数据
#定期删除—》保证两种持久化完成的情况下,同时业务不繁忙/终止业务的时候,删除为了解决缓存压力过大而导致使用swap交换分区以及牵扯到的其他功能模块问题
其他功能模块: AOF的持久化
八、主从复制原理
①从——》主发送SYNC同步请求
②主进行全量复制——》RDB快照
③主在进行完全量复制后,再将缓存中的数据通过aof的方式传递给从
以上初始化完成后
④持续性的由主-》同步给从
九、哨兵模式原理
1、哨兵是有自己的配置文件,只要去指向master节点IP时候就可以了
2、哨兵节点会和配置的主节点建立起两条连接命令连接和订阅连接
PS:redis发布订阅(pub/sub)是一种信息通信模式:发送者发消息,订阅者接收消息
3、哨兵会通过命令连接每10s发送一次INFO命令,通过INFO命令,主节点会返回自己的run_id和自己的从节点信息。
4、哨兵会对这些从节点建立两条连接命令,连接和订阅连接
5、哨兵通过命令连接向从节点发送INFO命令,获取到他的一些信息:
run id(redis服务器id)
role(职能)
从服务器的复制偏移量offset
其它
6、通过命令连接向服务器的sentinel:hello频道发送一条信息,内容包括自己的IP端口,run_id,配置(后续投票的时候会用到等)
7、通过订阅连接对象服务器的sentinel:hello频道做了监听,所以所有的向该频道发送的哨兵的消息都能被接受到
8、解析监听到的消息,进行分析提取,从而知道还有哪些别的哨兵服务节点也在监听这些主从节点了,更新结构体将这些哨兵节点记录下来
9、向观察到的其他的哨兵节点进行监听