某电商商品搜索系统架构设计
对于电商系统来说,商品搜索是其核心功能之一,如何能保证在海量的数据中,能低延时的搜索到关心的商品信息直接影响到用户的使用体验,在商品搜索中,如根据用户画像定向的做推荐,或是基于位置信息如美团O2O类搜索,这些个性化搜索是关系型数据库无法完成的,这时候搜索引擎ElasticSearch+Redis就能发挥关键作用。
ElasticSearch数据同步
如果将MySQL的数据同步到ElasticSearch引擎中,最简单的方式就是在操作DB之后直接更新到ES索引中,但是这种方式与业务代码的耦合程度太高,维护成本较高。这里我们使用阿里巴巴开源中间件Canal帮我们完成数据同步。Canal是典型的CS架构,Server端会伪装成MySQL slave节点,通过监听MySQL master节点的binlong日志,会将binlog日志发送到Canal Clinet端,Client在将数据写入到ElasticSearch中,针对常见的写入端,Canal官方已经提供了Adapter可以开箱即用。但是在生产中可能MySQL与ES索引并不是一一对于了,这时候就需要我们二次开发,预留扩展接口让用户自行开发。
在海量的数据场景下,单台ElasticSearch无法存储海量数据,也无法做到高可用,这时候就需要搭建高可用架构。我们需要对ES进行分片,分片数量需要提前预估,因为索引是不可更改,一旦数据哈希到某台机器的索引上,便不太容易在扩容切割。
既然是高可用架构,我们的ES实例肯定需要部署在多台机器上,主分片和副分片不要在一台机器上,这样既然某台服务器宕机,其他机上的副分片会立即升级为主分片。上图所示,有三台物理机器,四个主分片和四个副分片,均匀分布在三台机器上,任何一台机器宕机,对应机器上的分片都能找到副分片。当然我们建议至少是一个主分片对应两个以上的基数副分片。
Redis数据如何同步
Redis没有必要存储MySQL的所有数据,我们只要将热点数据存储到Redis即可,这里我们使用的是JetCache框架帮我们完成同步,JetCache是通过AOP将数据持久化到Redis中的,主要我们需要设置过期时间,以及更新MySQL数据的时候及时失效点缓存。如何使用JetCache请参考官网JetCache,如何保证缓存数据一致性请参考缓存一致性方案。
既然ES都已经做集群了,那么Redis单机版也是无法做到高可用的,Redis集群虽然在一定程度上能满足高可用,但是无法达到数据无限水平扩容目前,因为我们的数据量会越来越多,单个节点无法存储所有数据,这时候我们使用的是Redis cluster模式。
在cluster模式下,会有多个master节点,这些节点会平分16384个槽点,数据在写入的时候,会根据key散列到其中的一个槽点,在每个Master节点下都会连接多个slave节点,master节点宕机salve节点立即成为主节点承担读写任务。
有了ES为什么还需要Redis
职责不太,ES比较适合做聚合搜索,一般在买家首页,根据用户的搜索条件、位置、用户画像等条件搜索,他搜索的是一批数据,而Reids由于它的存储结果是K-V形式,这就觉得了他只适合根据主键制作搜索,比如用户在商城首页搜索到商品,需要点击商品详情,这时候就从Redis中取数据。
相关文章
- PyCharm使用教程 — 9、PyCharm中的搜索技巧(文件/函数/内容)「建议收藏」
- pycharm添加搜索路径_pycharm系统找不到指定路径
- 启发式搜索
- 客服系统根据访客IP搜索,同IP访客个数展示,查找同IP访客
- 不用关键词也能精准搜索,新AI搜索引擎火了,网友:刚用5分钟就设为默认
- 二叉搜索树转双向链表
- Pikachu靶场-SQL注入-搜索型注入过关步骤
- Python 调用Zoomeye搜索接口
- R语言SVR支持向量机多元回归、网格搜索超参数优化预测猪粮比价格变动率数据
- 在线客服系统历史会话搜索,访客消息筛选功能,根据访客时间、标签、活跃日期范围、消息记录搜索
- 利用Oracle相似度函数实现智能搜索(oracle相似度函数)
- Linux系统下搜索PHP文件的技巧(linux查找php文件)
- 『使用grep命令在Linux系统中搜索文件』(greplinux)
- 的搜索Linux U盘搜索:快速定位文件目录(linuxu盘目录)
- Linux系统中快速搜索文件的方法(linux系统搜索文件)
- Linux日志:快速搜索关键字的方法(linux日志关键字搜索)
- Ubuntu用户未来将可直接在系统中使用BitTorrent搜索功能
- 利用Linux系统实现快速日志搜索(linux日志搜索)
- Linux系统全局搜索实现方法(linux全局搜索)
- 基于Redis的高效快速搜索系统(基于redis的快速搜索)
- iOS 15搜索体验大改进:涵盖网图、相册、锁屏访问等更多内容
- 百度百家号关键词搜索管理是什么、有什么作用及为什么审核通不过?