网站的问题主要是来自庞大的访问用户,高并发的访问量和海量数据。在这个科技时代,由于互联网的开放性,使得互联网网站更容易受到攻击,无论大型小型还是打酱油的网站,几乎都会受到黑客的侵害。
面对这些危机问题,许多人都会第一时间想到用服务器来预防,现在市面上的服务器的防御机制大多是集群防护,集群防护是指整个机房的防护,也是与其他人一起共享的这几个G的防护。比如说集群防护100G,其实真实的防护还不如10G的单机防御。只看数值不注重真实,往往会误入歧途,以为自己赚到了,其实是被坑了。
方案:
小蚁安盾立体式防护
它是可以解决所有网站可能会出现的一切安全问题。例如最常见的网站的高并发量,以及网站遭受到攻击等问题。小蚁安盾立体式防护可以帮助网站加速以及防御,隐藏源站服务器IP,有效解决网站并发量。
优势:
1、有立体式防护管理后台,可以自主设置缓存规则和缓存时间,可自主调整CC策略。
2、多节点分布加强网站的稳定性,网站稳定百度蜘蛛爬行抓取数据正常,网站排名自然就会提高。
3、隐藏网站服务器IP地址,确保网站服务器不受到任何影响。
4、防御DDOS、无视CC。
高并发的优化需要借鉴简书的一位作者
高并发优化
高并发除了需要对服务器进行垂直扩展和水平扩展之外,作为后端开发可以通过高并发优化,保证业务在高并发的时候能够稳定的运行,避免业务停滞带来的损失,给用户带来不好的体验
缓存:
服务端缓存
内存数据库
redis
memcache
方式
优先缓存
穿透 DB 问题
只读缓存
更新 / 失效删除
注意
内存数据库的分配的内存容量有限,合理规划使用,滥用最终会导致内存空间不足
缓存数据需要设置过期时间,无效 / 不使用的数据自动过期
压缩数据缓存数据,不使用字段不添加到缓存中
根据业务拆分布式部署缓存服务器
客户端缓存
方式
客户端请求数据接口,缓存数据和数据版本号,并且每次请求带上缓存的数据版本号
服务端根据上报的数据版本号与数据当前版本号对比
版本号一样不返回数据列表,版本号不一样返回最新数据和最新版本号
场景:
更新频率不高的数据
服务端缓存架构图
huancun_pt.png
场景
多级缓存
虽然Redis集群这种缓存的性能已经很高了,但是也避免不了网络消耗,在高并发系统中,这些消耗是可能会引起很严重后果的,也需要尽量减少。可以考虑多级缓存,将一些变更频率非常低的数据放入应用内缓存,这样就可以在应用内直接处理了,相比使用集中式缓存来说,在高并发场景还是能够提高很大效率的,可以参考【cache-redis-caffeine-spring-boot-starter】实现两级缓存,也可以参考开源中国的J2Cache,支持多种两级缓存的方式。需要注意的就是缓存失效时一级缓存的清理,因为一级缓存是在应用内,对于集群部署的系统,应用之间是没法直接通信的,只能借助其他工具来进行通知并清理一级缓存。如利用Redis的发布订阅功能来实现同一应用不同节点间的通信