栏目分类:
子分类:
返回
名师互学网用户登录
快速导航关闭
当前搜索
当前分类
子分类
实用工具
热门搜索
名师互学网 > IT > 软件开发 > 后端开发 > Java

推荐系统——引擎技术栈

Java 更新时间: 发布时间: IT归档 最新发布 模块sitemap 名妆网 法律咨询 聚返吧 英语巴士网 伯小乐 网商动力

推荐系统——引擎技术栈

典型的推荐引擎架构如下:

具体应用到的技术栈有:

目录

一、ElasticSearch

二、Kafka


一、ElasticSearch

1、简介:

ES是一个实时的分布式存储、搜索、分析的引擎;

2、作用:

  • 对模糊搜索很擅长,搜索速度很快;
  • 原生就支持排序,从ES搜索到的数据可以根据评分过滤掉大部分的,只返回评分高的;
  • 能匹配有相关性的记录;

3、具体实现:

输入数据到ES中时,先通过分词器进行分词,然后对分词进行排序,组成term dictionary查找时可以通过二分来查;

对term dictionary再丑一层term index,只储存词的前缀,这样可以进一步加快检索速度;

一个ES集群熵会有多个ES节点,即与运行着ES进程的机器;在所有节点中,有一个Master Node,负责维护索引元数据、切换主分片和副本分片等,若主节点挂了,会选举出一个新的主节点;

一个index的数据可以分发到不同的Node上进行储存,这个操作叫分片;分片的好处在于:使写入和查询操作可以并行执行,当数据量增长时 可以在不同节点上存储下数据;

为实现高可用性,避免发生数据丢失,分片会有主分片和副分片之分;

二、Kafka

1、简介:

Kafka是一个可以横向扩展、高可靠、处理速度快的实时数据处理系统,是一种消息中间件。

2、作用:

缓冲;

解耦消息的生产和消费;

3、具体实现:

消息队列可以实现消息中间件的功能,但有吞吐量低、topic混杂 性能很慢的问题;

Kafka通过引入Partition,采用多条队列,实现分布存储;每条队列里的消息都是相同的topic;这样就提高了吞吐量,并且避免消费者碰到不是自己想要的topic的消息了;

通过引入Broker集群,解决了高可用性的问题;每个partition不再只有一个,而是有一个leader和多个replica,生产者根据消息的topic和key值,确定了消息要发往哪个partition之后,会找到partition对应的leader,然后将消息发给leader,leader负责消息的写入,并与其余的replica进行同步。一旦某一个partition的leader挂掉了,那么只需提拔一个replica出来,让它成为leader就ok了,系统依旧可以正常运行。

转载请注明:文章转载自 www.mshxw.com
本文地址:https://www.mshxw.com/it/292741.html
我们一直用心在做
关于我们 文章归档 网站地图 联系我们

版权所有 (c)2021-2022 MSHXW.COM

ICP备案号:晋ICP备2021003244-6号