架构图解

架构图

这是一个很典型的架构描述图,下面我们就以此为例聊聊架构的基础概念。

架构流程示例

假设用户在搜索引擎中搜索“森林里浓雾和阳光”。

用户点击了搜索结果中的一个图片网站链接,打开一张图片的详情页。

这个页面的主要内容包括:

  • 主图
  • 图片信息,如标题、作者、描述、标签、评论 ……
  • 相关类似图片
  • 用户信息

从用户点击了搜索结果中的那条连接,一直到呈现出最终的页面,中间经历了什么?

架构图

(为了便于对照,再放一张)

用户点击链接后,浏览器首先会去请求 DNS 服务器(图中的【1】),获得网站的 IP 地址,然后通过 IP 请求网站。

请求首先会到达网站的负载均衡器(图中的【2】)。

负载均衡器从多个 web server 中选择一个,把请求转过去,让他处理。(图中的【3】)。

web server 从 cache 中获取图片的常用信息,从数据库中获取图片的其他信息。(图中的 【4】【5】)。

如果发现图片还没有被处理过,例如颜色还没调整,就向队列中发一个任务(图中的【6a】),任务处理服务器从队列中接收任务并处理(图中的【6b】)。

架构图

(为了便于对照,再放一张)

web server 接下来需要获取相关类似图片信息,使用“图片标题”请求全文搜索服务(图中的【7】)。

如果发现此用户是已经登录的用户,请求 account service 获取用户的详细信息(图中的【8】)。

web server 现在已经拿到页面展示所需的全部信息。

最后,发送一个页面访问事件,放入流数据处理系统,事件会进入到云存储系统和数据仓库,用于做商业分析(图中的【9a】【9b】【9c】【10】)。

web server 开始组织 HTML 页面,然后通过负载均衡器返回给浏览器。

页面中包含 JS 和 CSS 资源,这些资源会被放入云存储系统,这个系统与CDN连接,所以 JS 和 CSS 就会载入 CDN。

这样,浏览器加载页面中的 JS 和 CSS 时就可以直接从 CDN 中读取(图中的【11】)。

最终,浏览器把页面渲染出来,呈现给用户。

核心部件

1. DNS

全称“Domain Name System”,提供根据域名找 IP 的服务。

例如:google.com -> 85.129.83.120。

2. Load Balancer 负载均衡器

用户的请求先发到负载均衡器(LB)上,LB 再从后面众多的 web 服务器中选一个,把请求交给他处理。

后面的那些web服务器都是一样的,处理逻辑一致。

web 服务器处理完后,把结果交给 LB,LB 再返回给用户。

3. web 服务器

接收请求,执行业务逻辑,返回响应信息。

会调用后端一系列的服务,如数据库、缓存、队列、搜索、其他服务、日志 ……

4. 数据库

数据库可以是 SQL,也可能是 NoSQL,或者混合使用。

5. 缓存

用来进行简单的 key/value 存储,速度快。

例如搜索引擎可以把常用的搜索结果保存在缓存中;内容型网站会把文章放到缓存 ……

6.任务队列、任务处理服务器

用于做异步处理。

队列接收任务,任务处理服务器(worker,可以有多个)从队列中拿出任务进行处理。

队列是一个需要异步执行的任务列表,常用的是先进先出模式,严格按照入队顺序出队,还有优先级模式,入队时给任务添加一个优先级,出队按照优先级出队,相当于给任务赋予了特权。

队列应用的场景非常多,例如:

  • 用户上传图片、视频,后台进行异步处理、转码
  • 用户数据统计聚合
  • 用户注册发送邮件、短信

7. 全文搜索

有一个重要的概念:倒排索引。

例如上图,对标题进行分词,然后以每个词作为关键字,指出谁的标题中含有这个关键字,这就是倒排索引。

主流的全文搜索服务有 Elasticsearch、Sphinx、Apache Solr。

8. Service

不直接暴露给外部,内部调用,例如:

  • 用户服务
  • 内容服务
  • 支付服务
  • HTML 转 PDF 服务

9. Data

如今,数据可以说是企业的命脉,大家都会尽可能的收集数据、分析数据,以便进行有效的商业决策。

典型的数据管道包括:

  • 应用发送数据,例如用户交互行为,发送到流数据系统中,如 kafka。
  • 保存原始数据,就是从应用端发送来的数据,未经处理的,保存起来,例如保存到云存储系统中。
  • 放入数据仓库进行分析,根据自己的分析模型对数据进行处理。

10. Cloud storage 云存储

云存储太方便了,使用简单、扩展性好、性能强。

本地的文件都可以放到云存储上,例如图片、音频、视频、JS、CSS ……

11. CDN

CDN 是内容分发网络,可以简单理解为资源缓存,图片、音频、视频、JS、CSS 都可以加载到 CDN。

没有CDN时,需要直接请求从服务器,如果用户距离服务器很远,那就非常慢了。

有了CDN以后,用户可以从距离自己最近的 CDN 节点中拿到资源,速度快,还减轻了服务器的压力。

推荐阅读:

Image placeholder
IT头条
未设置
  54人点赞

没有讨论,发表一下自己的看法吧

推荐文章
万字详解Oracle架构、原理、进程,学会世间再无复杂架构

学习是一个循序渐进的过程,从面到点、从宏观到微观,逐步渗透,各个击破,对于Oracle, 怎么样从宏观上来理解呢?先来看一个图,这个图取自于教材,这个图对于从整体上理解ORACLE 的体系结构组件,非

架构转型先行——金融业务场景下的新一代架构实践

  赵勇中国农业银行研发中心架构管理办公室主任工程师中国农业银行研发中心架构管理办公室主任工程师,十年以上金融行业信息化架构设计与管控经验。历经互联网金融、两地三中心、分布式核心银行等大型银行系统工程

数字转型 架构演进 2019中国系统架构师大会盛大召开

2019年10月31日~11月2日,由IT168旗下ChinaUnix社区主办的第十一届中国系统架构师大会(SACC2019)在北京隆重召开。自2009年举办以来,大会云集了国内CTO、研发总监、高级

阿里支付宝架构师:谈谈我眼中的高并发架构【好文】

来源:my.oschina.net/u/3772106/blog/1793561前言高并发经常会发生在有大活跃用户量,用户高聚集的业务场景中,如:秒杀活动,定时领取红包等。为了让业务可以流畅的运行并且

架构师眼中的高并发架构

前言高并发经常发生在有大活跃用户量和用户高聚集的业务场景中,如:秒杀活动、定时领取红包等。为了让业务可以流畅的运行并且给用户一个好的交互体验,我们需要根据业务场景预估达到的并发量等因素,来设计适合自己

SOA架构和微服务架构的区别是什么?

来源:rrd.me/fqdANSOA架构和微服务架构的区别首先SOA和微服务架构一个层面的东西,而对于ESB和微服务网关是一个层面的东西,一个谈到是架构风格和方法,一个谈的是实现工具或组件。1.SOA

微博广告策略工程架构体系演进

概述 1.广告样式与场景 上图是微博广告目前商业场景流,“一屏四大流”。“一屏”指打开微博的Fashion,“四大流”指占据微博商业化的主体,包括关系信息流、热门流、评论流和热搜流。右图为广告投放的

深度解读当代前端架构演进与趋势(上)

软件架构的核心思想,就是推断软件系统各个组件之间数据流动的方式。软件架构的质量取决于你设法推断这些数据流的难易程度!本文要讲的内容,就是在今天的Web应用程序背后探索这些数据流和最终的体系结构。We

软件架构被高估,清晰简单的设计被低估

软件架构最佳实践、企业架构模式以及系统描述的正式方法都是非常重要且实用的工具,总会有合适的场景让它们发挥作用。但在设计系统时,请从简单始、以简单终,尽可能避免一切会无谓提高复杂度的架构与正式工具。

Laravel 使用 CURD 之外- Domain,大中型 Laravel 项目架构设计

0x01面向领域的Laravel 人类分类思考,我们的代码应该映射这一点 首先说明,我没有提出这个术语『领域』-我从流行的开发模式DDD中学来的。引用牛津词典,『领域』可以描述为『一个特定范围的活

上市公司招聘 PHP 高级架构师, 负责公司资讯网站

薪资35-40k*14【职位介绍】负责公司资讯平台开发,管理后端小团队岗位职责:负责公司资讯平台开发,管理后端小团队 负责平台开发、测试和维护工作; 岗位要求:计算机专业5年以上PHP开发经验,熟悉m

上市公司招聘 PHP 高级架构师 (负责人)

薪资35-40k*14【职位介绍】负责公司资讯平台开发,管理后端小团队岗位职责:负责公司资讯平台开发,管理后端小团队 负责平台开发、测试和维护工作; 岗位要求:计算机专业5年以上PHP开发经验,熟悉m

Kafka 优秀的架构设计!它的高性能是如何保证的?

应大部分的小伙伴的要求,今天这篇咱们用大白话带你认识Kafka。Kafka 基础消息系统的作用大部分小伙伴应该都清楚,这里用机油装箱举个例子:所以消息系统就是如上图我们所说的仓库,能在中间过程作为缓存

一个解决方案 四种架构 英特尔oneAPI来了

面向不断扩展的多元化计算需求,英特尔提出了全新的产品和技术战略,扎根于六大技术支柱——制程和封装,架构,内存和存储,互连,安全,软件。英特尔将通过横跨这六大技术的全方位计算创新,驱动计算性能的指数级提

Nebula 架构剖析系列(二)图数据库的查询引擎设计

摘要上文(存储篇)说到数据库重要的两部分为存储和计算,本篇内容为你解读图数据库Nebula在查询引擎QueryEngine方面的设计实践。在Nebula中,QueryEngine是用来处理Nebula

Linux系统——架构浅析

导语:掐指一算自己从研究生开始投入到Linux的海洋也有几年的时间,即便如此依然对其各种功能模块一知半解。无数次看了Linux内核的技术文章后一头雾水,为了更系统地更有方法的学Linux,特此记录。历

核心业务“瘦身”进行时!手把手带你搭建海量数据实时处理架构

01背景 在线交易服务平台目的是减轻核心系统计算压力和核心性能负荷压力,通过该平台可以将核心系统的交易数据实时捕获、实时计算加工、计算结果保存于SequoiaDB中。并能实时的为用户提供在线交易查询服

用户从0到5亿,中国移动 OneLink 架构演进之路

导语本文根据范良泽老师在2019年10月31日【第十一届中国系统架构师大会(SACC)】现场演讲内容整理而成。范良泽(中移物联网有限公司系统架构专家)2008年毕业于上海交通大学,曾供职于华为、Ope

SACC 2019:云闪付APP架构优化实践之路

中国银联科技事业部架构师 程朝程朝2011年加入中国银联,拥有三年应用开发设计经验,三年MySQL与Redis内核开发设计经验,三年应用架构设计经验;擅长分布式系统设计,有丰富的系统设计与调优经验,现

一个多业务、多状态、多操作的交易链路?闲鱼架构这样演进

前言双十一刚刚结束,成交额2684亿震惊全世界,每秒订单峰值达54.4W笔。在闲鱼2000万DAU,交易数额同样增长迅速的今天,我们如何保障交易链路的稳定与快速支撑业务?这篇文章从客户端开发的角度,介

微服务架构:拆分单体应用的难点

拆分单体应用为服务的难点从表面上看,通过定义与业务能力或子域相对应的服务来创建微服务架构的策略看起来很简单。但是,你可能会遇到几个障碍:网络延迟。同步进程间通信导致可用性降低。 在服务之间维持数据一致

云架构远没想象般安全 派拓网络五大建议助力云安全

当企业业务大量向云端转移,云上安全问题变得愈加严峻,如何保障云端业务的安全成为企业关注的重点问题之一。前不久,网络安全企业PaloAltoNetworks(派拓网络)发布了一份云安全报告,揭示亚太区大

数据库之互联网常用架构方案一览

1.数据库架构原则1.高可用2.高性能3.一致性4.扩展性2.常见的架构方案方案一:主备架构,只有主库提供读写服务,备库冗余作故障转移用jdbc:mysql://vip:3306/xxdb1、高可用分

微服务架构的四大金刚利器

Photo@ChristopherCampbell 文 | 孔凡勇概述互联网应用发展到今天,从单体应用架构到SOA以及今天的微服务,随着微服务化的不断升级进化,服务和服务之间的稳定性变得越来越重要,分

包银消费CTO汤向军:消费金融大数据风控架构与实践

01风险在哪里1.1 信用风险根据银行业的风险理论,信用风险是指借款人因各种原因未能及时、足额偿还债权人或银行贷款而违约的可能性。信用风险的风控重点在于,甄别客户违约的原因究竟是还款能力,还是还款意愿