有赞搜索引擎实践(算法篇)

1. 搜索算法总体架构 在上篇文章(工程篇)中, 我们介绍了有赞搜索引擎的基本框架. 搜索引擎主要3个部件构成. 第一, hadoop集群, 用于生成大规模搜索和实时索引; 第二, ElasticSearch集群, 提供分布式搜索方案; 第三, 高级搜索集群, 用于提供商业搜索的特殊功能. 商业电商搜索由于搜索的特殊性, 独立的ElasticSearch集群是无法满足多样的算法需求的, 我们在搜索的各个部件上都有相应的算法插件, 用于构建商业电商搜索引擎的算法体系. 1.1 索引过程 创建索引过程从原始数据创建倒排索引的过程. 这个过程中我们对商品(…

Read More

有赞APP IM SDK 组件架构设计

本文主要以Android客户端为例,记录了有赞旗下 App 中使用自研 IM SDK 设计思路,由有赞移动开发组 IM SDK 团队共同讨论完成。 背景 设计目标 整体结构 设计要点 Socket长连接的创建与维护 消息发送流程 消息接收流程 可定制化的UI UIKit设计 UIKit 支持的富媒体类型 UI 中聊天会话数据加载策略 设计不足之处…

Read More

有赞延迟队列设计

延迟队列,顾名思义它是一种带有延迟功能的消息队列。 那么,是在什么场景下我才需要这样的队列呢? 背景 我们先看看以下业务场景: 当订单一直处于未支付状态时,如何及时的关闭订单,并退还库存? 如何定期检查处于退款状态的订单是否已经退款成功? 新创建店铺,N天内没有上传商品,系统如何知道该信息,并发送激活短信?等等 为了解决以上问题,最简单直接的办法就是定时去扫表。每个业务都要维护一个自己的扫表逻辑。 当业务越来越多时,我们会发现扫表部分的逻辑会非常类似。我们可以考虑将这部分逻辑从具体的业务逻辑里面抽出来,变成一个公共的部分。 那么开源界是否已有现成的方案呢?答案是肯定的。Beanstalkd(…

Read More

有赞搜索引擎实践(工程篇)

随着互联网数据规模的爆炸式增长, 如何从海量的历史, 实时数据中快速获取有用的信息, 变得越来越有挑战性. 一个中等的电商平台, 每天都要产生百万条原始数据, 上亿条用户行为数据. 一般来说, 电商数据一般有3种主要类型的数据系统: 关系型数据库, 大多数互联网公司会选用mysql作为关数据库的主选, 用于存储商品, 用户信息等数据. 关系型数据库对于事务性非常高的OLTP操作(比如订单, 结算等)支持良好. hadoop生态, hadoop是数据仓库主要的载体, 除了备份关系型数据库的所有版本, 还存储用户行为, 点击, 曝光, 互动等海量日志数据, hadoop对于数据分析,…

Read More

加入有赞的86天

前言:来有赞已经三个月了,对比三个月之前的我,感觉无论是技术还是跟技术无关的能力都有了非常大的提高。趁着刚做完转正分享,我也来谈谈着三个月的成长和体会。虽然原计划在tech.youzan.com发的第一篇文章是关于技术的,但是分享成长经历也是很有价值的。 先讲一下我的程序员生涯,在大三之前,我对未来的规划还是去咨询公司或者金融机构,毕竟母校是财经类大学,虽然专业是信息管理与信息系统,但是没什么人对自己的专业感兴趣,多数都是调剂过来的。但是命运很神奇的发生了转变,在一次和学院仅有的两位计算机爱好者长聊了一晚之后,我突然发现计算机的世界是如此美妙。从此以后我就决心做一只程序猿,开始了泡图书馆自学计算机知识的道路。 毕竟环境有限,实践经历有限,甚至在找工作之前没有一份开发类的实习经历,…

Read More