分享|经验分享:资深架构师教你什么是网络应用架构?( 二 )
文章图片
在大多数情况下,Web 应用服务器和专有的数据库服务器直接通信,对于任务服务器也是如此。另外,任何一个后端服务都可能拥有一个独立于其他应用的专有服务器。尽管我在试图避免在每个组件上过于深入细节,但是如果我不详细解释数据库的一些基础概念,(SQL 和 NoSQL),必将会影响你理解接下来的其他概念。SQL(Structured Query Language, SQL),代表 「结构化查询语言」。被发明于上世纪七十年代,作为标准的关系数据库数据查询方式,最终被广泛接受和使用。SQL 数据库将数据存储在数据表中,通过 ID 等字段进行表关联。
文章图片
如果你对 SQL 不太了解,我强烈建议你学习这个基础教程,可汗学院的 SQL 入门课:数据查询与数据管理 ,SQL 在 Web 开发领域应用相当广泛,你至少需要了解基础知识,这样才能恰当地设计应用架构。NoSQL 代表 Non-SQL 或 Not-Only-SQL,是指新一代的数据库技术,用于处理大型网络应用所产生的巨量数据(大多数关系型数据库无法很好地水平拓展,只能垂直拓展,直到性能瓶颈)。如果你对 NoSQL 一无所知,我建议你从以下介绍入手:值得注意的是,基于 SQL 查询已经成为数据库的通行接口标准,即使对于 NoSQL 数据库也是如此。所以如果你对 SQL 缺乏了解,很有必要认真学习一番,在互联网行业,SQL 是无可避免的。5. 缓存服务
文章图片
缓存服务为相关信息提供简单的键值数据存储,可在接近 O(1) 时间内保存和查找信息。O(1) 是指算法的时间复杂度为常数阶,换言之,此场景下,任何单次查询的时间都是相对稳定的,和该条查询指令复杂度基本无关。应用服务同样会利用缓存服务预先存储一些计算量较大的计算结果,以便于下次需要时直接从缓存中获取结果而重新计算。应用服务也可能从其他服务获取缓存,如数据库查询结果,外部服务调用结果,指定URL 的 HTML 文件,以及其他服务。下面是真实世界的一些案例:使用最广泛的两种缓存服务器技术是 Redis 和 Memcache,后续也会针对这两种技术进行介绍。6. 任务队列和服务器
文章图片
尽管有很多应用架构可用于完成异步任务,但最通用的是「任务队列架构 (Job Quene)」。它包括两个组件:一系列等待被执行的「任务」和数个用于执行任务的任务服务器(通常被称为 Workers )任务队列存储一系列需要被异步执行的任务。先进先出(First In First Out, FIFO)队列是最简单的任务队列,尽管多数应用最终需要可以按照优先级排序的队列系统。不管是由日常任务调度安排或是由用户操作触发,一旦应用服务需要执行任务,它都会将合适的任务添加到队列中。例如,Storyblocks,将任务队列用于强化那些用于支持市场的幕后工作:例如视频和图片的编码,包含元数据标签的 CSV 的处理,用户统计数据的聚合,密码重置邮件的发送等任务。起初我们使用简单的 FIFO 队列,但最终我们还是升级为优先级列队以确保那些时间敏感的任务可以迅速完成(如密码重置邮件的发送)7. 全文检索服务
文章图片
当用户输入文字进行查询时,多数网络应用都或多或少地提供检索功能,应用服务返回最相关的查询结果。这种用于支持文本查询的功能,通常被称为「全文检索」,全文检索使用反向索引以便快速查询包含关键词的文件信息。
文章图片
上图说明如何将这三个文档标题转换为反向索引,以便于从特定关键字快速查找到标题中具有该关键字的文档。请注意,如 “in”,”with” 等常见单词,通常不包括在倒置索引中的常见单词(被称为停止词: stop words)尽管有些数据库直接提供全文检索特性(例如,MySQL 支持全文搜索)但将一般将计算生成并存储反向索引的「检索服务」作为独立服务并提供查询接口。现在最流行的全文检索平台是 Elasticsearch,同时 Sphinx 和 Apache Solr 也是常见的备用选择。8. 服务
文章图片
当应用达到一定规模,其中有些服务需要拆分出来成为单独的应用。这些新应用不一定用于开放给外部系统,但是一定会用于和原应用以及其他服务交互。举例来说,Storyblocks 有以下几种操作和计划服务:9. 数据处理
文章图片
应用架构图中未提及的一个环节是:将数据从网络应用和服务的生产数据库装载到数据仓库。比如在 Storyblocks 我们每天装载视频块,音频块,故事块(VideoBlocks, AudioBlocks, Storyblocks)和账户服务以及参与者门户数据库到 RedShift。由此通过整合核心业务数据和用户行为事件数据,为数据分析师提供完整的数据集。10. 云存储
推荐阅读
- 经验教程|抖音怎么卖货?
- 吴良镛|对学识和事业要“贪得无厌”,这三位资深学者拥有这样的精神
- 经验教程|有钱说赢销:微信小商店是什么?功能有哪些?如何申请开通?
- 经验教程|雅思学渣的备考干货宝藏!你就是下一匹黑马
- Microsoft|外媒Android Authority分享Surface Duo真机开箱视频
- 经验教程|肥乡农村小子被北大录取!,高分“诀窍”强力来袭!
- 吴尊|吴尊分享儿女开学照 NeiNei对镜比耶Max超兴奋
- 支教|天津河北区:援甘教师分享在外支教经验
- 可口|夏季不想吃饭没有食欲?分享几道香辣可口的家常菜美食,好吃下饭
- 演员|资深配音演员陈阿喜因病去世 她参与配音的经典作品无数