怅然|经验分享:资深架构师教你什么是网络应用架构?( 四 )
例如 , Storyblocks , 将任务队列用于强化那些用于支持市场的幕后工作:例如视频和图片的编码 , 包含元数据标签的 CSV 的处理 , 用户统计数据的聚合 , 密码重置邮件的发送等任务 。 起初我们使用简单的 FIFO 队列 , 但最终我们还是升级为优先级列队以确保那些时间敏感的任务可以迅速完成(如密码重置邮件的发送)
任务服务器的任务处理流程为:任务服务器轮询任务队列以确定是否有任务需要执行 , 如有则推出(pop)该任务并加以执行 。 相关的编程语言和服务框架数不胜数 , 这里就不作过多展开 。
7. 全文检索服务当用户输入文字进行查询时 , 多数网络应用都或多或少地提供检索功能 , 应用服务返回最相关的查询结果 。 这种用于支持文本查询的功能 , 通常被称为「全文检索」 , 全文检索使用反向索引以便快速查询包含关键词的文件信息 。
上图说明如何将这三个文档标题转换为反向索引 , 以便于从特定关键字快速查找到标题中具有该关键字的文档 。 请注意 , 如 “in” , ”with” 等常见单词 , 通常不包括在倒置索引中的常见单词(被称为停止词: stop words)
尽管有些数据库直接提供全文检索特性(例如 , MySQL 支持全文搜索)但将一般将计算生成并存储反向索引的「检索服务」作为独立服务并提供查询接口 。 现在最流行的全文检索平台是 Elasticsearch , 同时 Sphinx 和 Apache Solr 也是常见的备用选择 。
8. 服务当应用达到一定规模 , 其中有些服务需要拆分出来成为单独的应用 。 这些新应用不一定用于开放给外部系统 , 但是一定会用于和原应用以及其他服务交互 。 举例来说 , Storyblocks 有以下几种操作和计划服务:
- 账户服务:存储用户在我们所有站点的相关数据 , 这将有助于我们提供交叉销售的机会并创造统一的用户体验
- 内容服务:存储所有视频、音频和图形内容的元数据 , 同时为内容下载和查看下载历史记录提供接口
- 支付服务:为处理客户信用卡结算信息提供接口
- HTML → PDF 服务:提供简单的处理接口 , 以支持根据 HTML 页面返回相应 PDF 文件
- 数据流处理:应用发送数据 , 特别是关于用户行为的事件信息 , 到 data firehose , 后者提供了流处理接口以摄取和处理数据 。 通常来说 , 源数据会经过转换或处理并发送到另外的 firehose 。 AWS Kinesis 和 Kafka 是用于此目的的两种最常见的技术
- 数据云存储:源数据以及经过转换或处理的新数据将被存储到云存储系统 。 AWS Kinesis 提供了一种名为 “firehose” 的设置 , 它帮助我们轻松地配置将源数据存储到云存储 (AWS S3) 的整个过程
- 同步到数据仓库:经过转换或处理的新数据常常被装载到数据仓库以便于分析 。 我们也使用 AWS Redshift , 它在创业公司中相当普遍且份额正逐渐扩大 。 尽管大公司通常使用 Oracle 或其他专有的数据仓库技术 。 如果数据集足够庞大 , 对于分析而言 , 类 Hadoop 的 NoSQL MapReduce 技术将是必要的 。
- 人民网-财经频道|【行走自贸区】山东自贸区济南片区:力争拿出更多首创性改革试点经验
- 腕表之家|现代和复古冲撞融合 上手分享欧米茄海马300
- 云顶之弈|云顶之弈10.18阵容推荐 重装秘术蛇女阵容运营思路分享
- 美容|蒋依依分享护肤干货,网友纷纷不理解:20岁不到就要抗衰老了?
- 新闻联播|先后6次改扩建,山西“夺命”饭店事件背后:盖房没有图纸全凭经验
- 券商中国|银河证券罗黎明:用专业与客户同行,分享基金经理“最强大脑”
- 农村改革|农业农村部:总结经验,大力推进新一轮农村改革
- 【行走自贸区】山东自贸区济南片区:力争拿出更多首创性改革试点经验
- 怅然|华为虽好但别乱选,这三款才是极致性价比,看看哪款更让你心动
- 快科技|芯华章宣布林扬淳出任研发副总裁:世界级专家、30年EDA经验
