前言
京东到家订单中心系统业务中,无论是外部商家的订单生产,或是内部上下游系统的依赖,订单查询的调用量都非常大,造成了订单数据读多写少的情况。
我们把订单数据存储在MySQL中,但显然只通过DB来支撑大量的查询是不可取的。同时对于一些复杂的查询,MySQL支持得不够友好,所以订单中心系统使用了Elasticsearch来承载订单查询的主要压力。
Elasticsearch作为一款功能强大的分布式搜索引擎,支持近实时的存储、搜索数据,在京东到家订单系统中发挥着巨大作用,目前订单中心ES集群存储数据量达到10亿个文档,日均查询量达到5亿。
随着京东到家近几年业务的快速发展,订单中心ES架设方案也不断演进,发展至今ES集群架设是一套实时互备方案,很好地保障了ES集群读写的稳定性,下面就给大家介绍一下这个历程以及过程中遇到的一些坑。
1. Redis面试专题
绝大部分写业务的程序员,在实际开发中使用 Redis 的时候,只会 Set Value 和 Get Value 两个操作,对 Redis 整体缺乏一个认知。这里以面试题的形式对 Redis 常见问题做一个总结,解决大家的知识盲点。
- 什么是Redis?简述它的优缺点?
- 为什么要用 redis /为什么要用缓存
- 为什么要用 redis 而不用 map/guava 做缓存?
- redis 和 memcached 的区别
- 讲一下redis 常见数据结构以及使用场景分析
- redis怎么设置过期时间
- 解释一下redis 内存淘汰机制(MySQL里有2000w数据,Redis中只存20w的数据,如何保证Redis中的数据都是热点数据?)
- 如何应对缓存穿透和缓存雪崩问题
- 说一下redis 事务
- Redis 常见异常及解决方案
- 讲讲分布式环境下常见的应用场景
- 讲讲Redis 集群模式
- 如何解决 Redis 的并发竞争 Key 问题
- 如何保证缓存与数据库双写时的数据一致性?
- 说一下redis 持久化机制(怎么保证 redis 挂掉之后再重启数据可以进行恢复)
- 单线程的 Redis 为什么这么快