For investors
股价:
5.36 美元 %For investors
股价:
5.36 美元 %认真做教育 专心促就业
随着互联网的不断发展,越来越多的人都在学习计算机编程开发技术,而今天我们就通过案例分析来了解一下,零基础学习java编程需要掌握哪些知识点。
Redis持久化机制
redis有两种持久化机制RDB与AOF。
Redis如何实现持久化
RDB持久化方式会在一个特定的间隔保存那个时间点的一个数据快照。
Redis集群方案与实现
客户端分片
路由查询
Redis为什么是单线程的
因为CPU不是Redis的瓶颈。Redis的瓶颈有可能是机器内存或者网络带宽。(以上主要来自官方FAQ)既然单线程容易实现,而且CPU不会成为瓶颈,那就顺理成章地采用单线程的方案了。
缓存奔溃
碰到这种情况,一般并发量不是特别多的时候,使用多的解决方案是加锁排队。
加锁排队只是为了减轻数据库的压力,并没有提高系统吞吐量。假设在高并发下,缓存重建期间key是锁着的,这是过来1000个请求999个都在阻塞的。同样会导致用户等待超时,这是个治标不治本的方法。
缓存降级
页面降级:在大促或者某些特殊情况下,某些页面占用了一些稀缺服务资源,在紧急情况下可以对其整个降级,以达到丢卒保帅;
使用缓存的合理性问题
热点数据,缓存才有价值
频繁修改的数据,看情况考虑使用缓存
数据不一致性
缓存更新机制
缓存可用性
缓存服务降级
缓存预热
缓存穿透
消息队列
消息队列的使用场景
校验用户名等信息,如果没问题会在数据库中添加一个用户记录
消息的重发补偿解决思路
可靠消息服务定时查询状态为已发送并超时的消息
消息的幂等性解决思路
查询操作
删除操作
token机制,防止页面重复提交
悲观锁
乐观锁
分布式锁
select+insert
状态机幂等
对外提供接口的api如何保证幂等
消息的堆积解决思路
如果还没开始投入使用kafka,那应该在设计分区数的时候,尽量设置的多点(当然也不要太大,太大影响延迟,具体可以参考我前面提到的文章),从而提升生产和消费的并行度,避免消费太慢导致消费堆积。
自己如何实现消息队列
大体上的设计是由一条线程1执行从等待列表中获取任务插入任务队列再由线程池中的线程从任务队列中取出任务去执行.
【免责声明】:本内容转载于网络,转载目的在于传递信息。文章内容为作者个人意见,本平台对文中陈述、观点保持中立,不对所包含内容的准确性、可靠性与完整性提供形式地保证。请读者仅作参考。更多内容请加danei0707学习了解。欢迎关注“达内在线”参与分销,赚更多好礼。