技术架构
大型电商网站的异步多级缓存构建+Nginx数据本地化动态渲染架构
多级缓存架构需要解决的问题
(1)如何让redis集群支撑几十万QPS高并发+99.99%高可用+TB级海量数据+企业级数据备份与恢复?==>Redis企业级集群架构
(2)如何支撑高性能以及高并发到极致?同时给缓存架构最后的安全保护层?==>(nginx+lua)+redis+ehcache的三级缓存架构
(3)高并发场景下如何解决数据库与缓存双写的时候数据不一致问题?==>数据库+缓存双写一致性解决方案
(4)如何解决大value缓存的全量更新效率低下的问题?==>缓存维度化拆分解决方案
(5)如何将缓存命中率提高到机制?==>双层nginx部署架构,以及一致性hash流量分发策略
(6)如何解决高并发场景下,缓存重建时的分布式并发冲突问题?==>基于zookeeper分布式锁的缓存并发重建解决方案
(7)如何解决高并发场景下,缓存冷启动MySQL瞬间被打死的问题?==>基于storm实时统计热数据的分布式快速缓存预热的方案
(8)如何解决热点缓存导致单机器负载瞬间超高?==>基于storm的实时热点发现,以及毫秒级的实时热点缓存负载均衡降级
(9)如何解决分布式系统中的服务高可用问题?避免多层服务依赖因为少量故障导致系统崩溃?==>基于hystrix的高可用缓存服务,资源隔离+限流+降级+熔断+超时控制
(10)如何应用分布式系统中的高可用服务的高价技术?==>基于hystrix的容错+多级降级+手动降级+生成环境参数优化经验+可视化运维与监控
(11)如何解决恐怖的缓存雪崩问题?避免给公司带来巨大的经济损失?==>独家的事前+事中+事后三层次完美解决方案
(12)如何解决高并发场景下的缓存穿透问题?避免给MySQL带来过大的压力?==>缓存穿透解决方案
(13)如何解决高并发场景下的缓存失效问题?避免给redis集群带来过大的压力?==>缓存失效解决方案
单机Redis的生产环境启动方案<br>
(1)redis utils目录下,有个redis_init_script脚本<br>(2)将redis_init_script脚本拷贝到linux的/etc/init.d目录中,将redis_init_script重命名为redis_6379<br>(3)将redis_6379脚本的第6行的REDISPORT,设置为相同的端口号(默认就是6379)<br>(4)创建两个目录:/etc/redis(存放redis的配置文件),/var/redis/6379(存放redis的持久化文件)<br>(5)修改redis配置文件(默认的根目录下,redis.conf),拷贝到/etc/redis目录下,修改名称为6379.conf<br>(6)修改redis.conf中的部分配置为生产环境<br> daemonize yes 让redis以daemon进程运行<br> pidfile /var/run/redis_6379.pid 设置redis的pid文件位置<br> port 6379 设置redis的监听端口号<br> dir /var/redis/6379 设置持久化文件的存储位置 <br>(7)启动redis,执行cd /etc/init.d ----> chmod 777 redis_6379 ---->./redis_6379 start<br>(8)确认redis进程是否启动 ps -ef | grep redis<br>(9)让redis跟随系统启动自动启动<br> 在redis_6379脚本中,最上面,加入两行注释<br> # chkconfig:2345 90 10<br> # description:Redis is a persistent key-value database<br> chkconfig redis_6379 on