怅然|经验分享:资深架构师教你什么是网络应用架构?

导读:本文作者基于其公司 (StoryBlock) 的实际业务架构向我们分享了一节生动详细的网络架构入门课 , 虽然作者的预期阅读对象是前端开发人员 , 但是也非常适合产品经理阅读和学习 , 尤其是已经有一定工作经验的产品经理 , 希望对大家有用 。
怅然|经验分享:资深架构师教你什么是网络应用架构?01 从一个场景开始
怅然|经验分享:资深架构师教你什么是网络应用架构?以上的架构图是对 Storyblocks 业务架构的一个很好的概括 。 对于那些相对缺乏经验的 web 开发者 , 或许你会觉得这个架构有些复杂 。 没关系 , 在讲解相关组件的具体业务细节之前 , 我们先举个例子 , 帮你更容易地理解 Storyblocks 的业务架构 。
先从一个场景开始:用户用谷歌搜索 「美丽的浓雾和林间的阳光」。 首个结果正好出自 Storyblocks:一个知名的图片和矢量图资源网站 , 用户点击该条结果 , 浏览器重定向到该图片的所在的详情页面 。
这个场景背后 , 用户浏览器向 DNS 服务器发送请求 , 查询 Storyblocks 的域名信息 , 然后发送访问请求 。 访问请求首先经过负载均衡器 , 负载均衡器会从十多台运行网站服务的网络服务器选择任意一台 , 将请求发送到这台服务器进行处理 , 网络服务器先从缓存服务器查询图片的详情信息 , 然后从数据库获取图片的其他相关信息 。
我们注意到这张图片的色彩配置信息还没被计算出来 , 于是服务器将一个新的色彩配置任务推送到任务队列 , 我们的任务队列服务器将异步地处理图片的色彩配置信息计算 , 一旦计算完成 , 便将配置信息更新到数据库中 。
下一步 , 服务器将图片标题作为关键词 , 向全文检索服务发送查询请求以寻找相似图片 。 此时用户登入他的 Storyblocks 账户 , 相应地 , 服务器从账户服务中获取用户账户信息 。
接下来 , 我们将这个页面浏览事件加载到 data firehose(AWS 推出的流数据装载服务) 以记录到云存储系统 , 并最终存储到数据仓库 , 便于分析师分析使用并帮助解答业务问题 。
服务端将视图呈现为为 HTML 页面并经由负载均衡器 , 返回用户的浏览器客户端 。 这个页面同时包含存储在云存储系统的 Javascript 和 CSS 代码文件 , 云服务器直接连接到 CDN 集群 , 内容也经由 CDN 分发 , 用户浏览器访问 CDN 集群并获取内容 。
最终 , 浏览器渲染页面使用户可以浏览阅读 。
接下来 , 我将带你遍历每个组件 , 并做简要说明和介绍 , 帮助你形成一个相对准确的概念模型 , 以便于理解网络架构和组件间的交互 。 我仍将遵循已经分享的文章中给出的一些实践建议 , 这些建议基于我在 Stroyblocks 的业务经验 , 具有一定参考价值 。
02 网络架构诸组件1. DNS 服务
怅然|经验分享:资深架构师教你什么是网络应用架构?DNS (Domain Name System)代表 「域名系统」 , 这是实现互联网相互连接的核心技术 。 DNS提供从域名 (例如 google.com) 到 IP 地址 (85.129.83.120) 的最底层的键值对查询服务 , 事实上 , 计算机基于网站的 IP 地址路由到合适的服务器 。 用电话号码比喻的话:域名和 IP 地址的关系 , 类似于联系人姓名和号码的关系 。
正如你需要通过电话簿来查询特定联系人的电话号码 , 你同样需要通过 DNS 来查询指定域名的 IP 地址 , 所以你完全可以把 DNS 理解为互联网的电话号码簿 。
我们以后会深入介绍关于 DNS 的详细原理 , 现在进入下一个话题 。