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