摘要: kafka,activemq rabbitmq.rocketmq的优点和缺点: 特性 ActiveMQ RabbitMQ RocketMQ Kafka 单机吞吐量 万级,吞吐量比RocketMQ和Kafka要低了一个数量级 万级,吞吐量比RocketMQ和Kafka要低了一个数量级 10万级,Roc 阅读全文
posted @ 2019-07-02 23:37 King-DA 阅读(629) 评论(0) 推荐(0) 编辑
摘要: 系统可用性降低? 一旦mq不能使用以后,系统A不能发送消息到mq,系统BCD无法从mq中获取到消息.整个系统就崩溃了. 如何解决: 系统复杂程度增加? 加入mq以后,mq引入来的问题很多,然后导致系统的复杂程度增加. 如何解决 系统的一致性降低? 有人给系统A发送了一个请求,本来这个请求应该系统BC 阅读全文
posted @ 2019-07-02 23:08 King-DA 阅读(184) 评论(0) 推荐(0) 编辑
摘要: MQ的常见的应用场景为:解耦,异步,流量削峰 在解耦场景中: 不使用MQ的耦合场景: 使用解耦的场景为: 异步的方式: 不使用MQ的同步高延时请求场景: 使用异步化之后的接口性能优化: 没有使用mq的时候,(不会削峰) 使用mq以后: 阅读全文
posted @ 2019-07-02 22:56 King-DA 阅读(908) 评论(0) 推荐(0) 编辑
摘要: 这个也是线上非常常见的一个问题,就是多客户端同时并发写一个key,可能本来应该先到的数据后到了,导致数据版本错了。或者是多客户端同时获取一个key,修改值之后再写回去,只 要顺序错了,数据就错了。 而且redis自己就有天然解决这个问题的CAS类的乐观锁方案 解决方案:使用分布式锁(zookeepe 阅读全文
posted @ 2019-07-02 01:23 King-DA 阅读(511) 评论(0) 推荐(0) 编辑
摘要: 简单的场景: 直接使用 1. 使用Cache Aside pattern 读取的时候,先读取缓存中是否有数据,缓存中没有数据,再去数据库中进行查询,查询出来以后,然后再存入到缓存中 更新的时候,先删除缓存库,然后再更新数据库. 为什么是先删除缓存,然后再更新数据库? 因为有可能存入到缓存中的是一个经 阅读全文
posted @ 2019-07-02 01:19 King-DA 阅读(1095) 评论(0) 推荐(0) 编辑
摘要: 缓存穿透:就是访问redis中一个不存在的key的时候,会直接穿过缓存,去数据库中进行查询. 如果是黑客,进行恶意攻击的时候,每次都请求超过2000个/秒的时候,这个时候mysql基本上就挂了. 解决办法是: 1.缓存空值 每次从数据库中查询到一个不存在的key的时候,就写一个空值到缓存库中,有恶意 阅读全文
posted @ 2019-07-02 00:52 King-DA 阅读(169) 评论(0) 推荐(0) 编辑
摘要: redis持久化机制的意义: 在于故障恢复. Redis的持久化机制有两种: AOF:对每条写入命令作为人日志,以append-only的模式写入到一个日志文件中,在redis重启的时候,可以通过在aof日志中的写入指令来重新构建整个数据集. RDB:对redis数据进行周期性的持久化 如果想要re 阅读全文
posted @ 2019-07-02 00:36 King-DA 阅读(167) 评论(0) 推荐(0) 编辑