一、网安学习成长路线图
网安所有方向的技术点做的整理,形成各个领域的知识点汇总,它的用处就在于,你可以按照上面的知识点去找对应的学习资源,保证自己学得较为全面。
二、网安视频合集
观看零基础学习视频,看视频学习是最快捷也是最有效果的方式,跟着视频中老师的思路,从基础到深入,还是很容易入门的。
三、精品网安学习书籍
当我学到一定基础,有自己的理解能力的时候,会去阅读一些前辈整理的书籍或者手写的笔记资料,这些笔记详细记载了他们对一些技术点的理解,这些理解是比较独到,可以学到不一样的思路。
四、网络安全源码合集+工具包
光学理论是没用的,要学会跟着一起敲,要动手实操,才能将自己的所学运用到实际当中去,这时候可以搞点实战案例来学习。
五、网络安全面试题
最后就是大家最关心的网络安全面试题板块
网上学习资料一大堆,但如果学到的知识不成体系,遇到问题时只是浅尝辄止,不再深入研究,那么很难做到真正的技术提升。
一个人可以走的很快,但一群人才能走的更远!不论你是正从事IT行业的老鸟或是对IT行业感兴趣的新人,都欢迎加入我们的的圈子(技术交流、学习资源、职场吐槽、大厂内推、面试辅导),让我们一起学习成长!
主从复制的作用主要包括:
1、数据冗余:主从复制实现了数据的热备份,是持久化之外的一种数据冗余方式。
2、故障恢复:当主节点出现问题时,可以由从节点提供服务,实现快速的故障恢复;实际上是一种服务的冗余。
3、负载均衡:在主从复制的基础上,配合读写分离,可以由主节点提供写服务,由从节点提供读服务(即写Redis数据时应用连接主节点,读Redis数据时应用连接从节点),分担服务器负载;尤其是在写少读多的场景下,通过多个从节点分担读负载,可以大大提高Redis服务器的并发量。
4、高可用基石:除了上述作用以外,主从复制还是哨兵和集群能够实施的基础,因此说主从复制是Redis高可用的基础。
一般来说,要将Redis运用于工程项目中,只使用一台Redis是万万不能的,原因如下:
1、从结构上,单个Redis服务器会发生单点故障,并且一台服务器需要处理所有的请求负载,压力较大;
2、从容量上,单个Redis服务器内存容量有限,就算一台Redis服务器内存容量为256G,也不能将所有内存用作Redis存储内存,一般来说,单台Redis最大使用内存不应该超过20G。
环境配置
配置从库即可
使用命令
info replication
查看当前信息
我们就在一个虚拟机中模拟一下
复制三份配置文件,修改
- 端口
- pid
- log文件名字
- rdb名字
redis-server 配置文件路径
redis-cli -p 端口号
查看进程
ps -ef | grep redis
slaveof ip 端口
使用上述命令,在从机(6781、6782)配置它的主机(6780)
127.0.0.1:6382> slaveof 127.0.0.1 6380
OK
主机
可以看到两个从机
某一从机
配置文件中配置,找到以下行,取消注释,修改主机ip和端口即可,启动后默认为从机。
replicaof
主机有密码的话可以再配置一下
#masterauth
实验1:主机设置,从机获取
主机设置值
127.0.0.1:6380> set lady killer9
OK
从机获取值
127.0.0.1:6381> get lady
“killer9”
从机设置值
127.0.0.1:6381> set k1 v1
(error) READONLY You can’t write against a read only replica.
可以看到,从机不能设置值
实验2:主机断开,从机读取
主机关闭
127.0.0.1:6380> shutdown
not connected>
从机
127.0.0.1:6382> get lady
“killer9”
从机信息显示主机关闭,主机之前设置的值仍然可以读取
实验3:谋朝篡位
主机断开,需要快速恢复业务,可以通过
slaveof no one
来使从机变为主机,进行写操作,就是设置key
127.0.0.1:6381> slaveof no one
OK
主从复制原理
Slave启动成功连接到master 后会发送一个sync同步命令Master 接到命令,启动后台的存盘进程,同时收集所有接收到的用于修改数据集命令,在后台进程执行完毕之后,master将传送整个数据文件到slave,并完成一次完全同步。
全量复制:而slave服务在接收到数据库文件数据后,将其存盘并加载到内存中。
增量复制:Master继续将新的所有收集到的修改命令依次传给slave,完成同步但是只要是重新连接master,一次完全同步(全量复制)将被自动执行!
哨兵模式
实际生产环境中还是需要进行自动配置的,也就是主机宕机,从机自动选择一个作为主机。
配置
sentinel.conf
sentinel monitor myredis 127.0.0.1 6380 1
名字myredis叫什么无所谓哈
启动
redis-sentinel sentinel.conf
实验:主机宕机,哨兵选举
关闭主机
127.0.0.1:6380> shutdown
not connected>
稍等一会儿,查看哨兵进程
哨兵监控之后,进行了投票,选举6382的redis作为主节点
82变为主机
81换主机为82
重启原主机
重启原主机后发现,已经变为了从机!!!
哨兵模式优缺点
优点:
- 哨兵集群,基于主从复制模式,所有的主从配置优点,它全有。
- 主从可以切换,故障可以转移,系统的可用性就会更好
- 哨兵模式就是主从模式的升级,手动到自动,更加健壮!
缺点:
- Redis不好在线扩容的,集群容量一旦到达上限,在线扩容就十分麻烦!
- 实现哨兵模式的配置其实是很麻烦的,里面有很多选择!
缓存穿透、击穿与雪崩
缓存穿透
缓存穿透是指缓存和数据库中都没有的数据,而用户不断发起请求,如发起为id为“-1”的数据或id为特别大不存在的数据。这时的用户很可能是攻击者,攻击会导致数据库压力过大。
防御
- 鉴权与过滤:接口增加用户鉴权,校验参数,如id<=0时,直接拦截。布隆过滤器是个很好的解决方案。
- 缓存中设置为空:从缓存取不到的数据,在数据库中也没有取到,这时也可以将key-value对写为key-null,缓存有效时间可以设置短点,如30秒(设置太长会导致正常情况也没法使用)。这样可以防止攻击用户反复用同一个id暴力攻击
缓存击穿
缓存击穿是指缓存中没有但数据库中有的数据(一般是缓存时间到期),这时由于并发用户特别多,同时读缓存没读到数据,又同时去数据库去取数据,引起数据库压力瞬间增大,造成过大压力。
例如,微博热搜,redis缓存过期,0.1秒后放入缓存,但是0.1秒的访问量巨大,导致数据库压力瞬间增大,服务器宕机。
防御
- 设置热点数据永远不过期。
- 加互斥锁,使用分布锁,保证每个key同事只要有一个线程去查询后端服务,其他线程没有获得分布式锁的权限,因此只需要等待即可。
缓存雪崩
缓存雪崩是指缓存中数据大批量到过期时间,而查询数据量巨大,引起数据库压力过大甚至宕机。和缓存击穿不同的是,缓存击穿指并发查同一条数据,缓存雪崩是不同数据都过期了,很多数据都查不到从而查数据库。
防御
- redis集群,热点数据均匀分布在不同服务器
- 限流降级,暂时关闭不重要服务,例如,双11关闭退款服务等
- 数据预热,手动触发热点,加入缓存,设置不同过期时间
Java使用redis
创建一个Empty Project
新建一个MAVEN module
在pom.xml中添加依赖
<dependencies> <dependency> <groupId>redis.clients</groupId>
给大家的福利
零基础入门
对于从来没有接触过网络安全的同学,我们帮你准备了详细的学习成长路线图。可以说是最科学最系统的学习路线,大家跟着这个大的方向学习准没问题。
同时每个成长路线对应的板块都有配套的视频提供:
因篇幅有限,仅展示部分资料
网络安全面试题
绿盟护网行动
还有大家最喜欢的黑客技术
网络安全源码合集+工具包
所有资料共282G,朋友们如果有需要全套《网络安全入门+黑客进阶学习资源包》,可以扫描下方二维码领取(如遇扫码问题,可以在评论区留言领取哦)~
网上学习资料一大堆,但如果学到的知识不成体系,遇到问题时只是浅尝辄止,不再深入研究,那么很难做到真正的技术提升。
一个人可以走的很快,但一群人才能走的更远!不论你是正从事IT行业的老鸟或是对IT行业感兴趣的新人,都欢迎加入我们的的圈子(技术交流、学习资源、职场吐槽、大厂内推、面试辅导),让我们一起学习成长!