怅然|经验分享:资深架构师教你什么是网络应用架构?( 二 )
2. 负载均衡
在深入介绍负载均衡之前 , 我们需要先行解释应用架构的水平拓展和垂直拓展 。
你肯定会好奇这两个概念的含义和区别:简单来说 , 水平拓展是指你向资源池增加更多机器设备 , 而垂直拓展则意味着增加更多算力资源(CPU , 内存)到现有机器设备 。 对于 Web 开发 , 水平拓展常常是最好的选择 。
毕竟 , 所有事物都可能中断 , 服务器有时崩溃 , 网络会降速 , 甚至整个数据中心也会偶尔断线 。 如果要防止出错 , 除了保持简单 , 我们别无选择 。 使用服务器集群可以帮你有效应对突发情况 , 增强业务的健壮性和容错性 , 确保应用持续稳定地运行 。
其次 , 水平拓展允许你将后端服务 (网络服务器 , 数据库 , 应用服务) 的不同组件分配在不同服务器 , 借此你可以高效地调用后端服务的不同组件 。
最后 , 垂直拓展很容易遇到规模瓶颈 , 谷歌的搜索服务平台是一个相当典型的案例 , 这个场景也同时适用于 Storyblocks 这样的中小型公司 , 举例来说 , 我们在任意时刻都运行着 150 到 400 个 AWS EC2 实例 , 如果要通过垂直拓展模式提供同等算力 , 很难想象我们需要使用何种级别和规模的计算机设备(估计得使用超算了) 。
现在我们回到负载均衡器 , 它们是实现业务水平拓展的重要部分 , 它们将接收的访问请求路由到互为备份的应用服务器集群中的任意一个 , 并将应用服务器的响应返回到客户端 。 任何一个应用服务器的处理方式都完全相同 , 通过这种方式 , 负载均衡器将访问请求均匀地分派到不同的服务器以防止服务器过载 。
负载均衡器的业务原理相当简单 , 但是要深入理解 , 就涉及到很多复杂的概念 , 这些更加复杂的概念 , 我们将在以后进行讲解 。
3. Web 应用服务器
从抽象角度来说 , Web 应用服务器的作用是这样的:它们被用来执行诸如处理用户请求和将 HTML 返回用户浏览器等核心业务逻辑 。 为了确保任务完成 , 应用服务器通常会和数据库 , 缓存层 , 任务队列 , 搜索服务 , 其他微服务组件 , 数据/日志队列等一系列后端基础设施交互 。
正如上文所提及 , 很多时候 , 由于负载均衡器的存在 , 应用服务器需要成倍地连接更多服务 , 以便于处理大规模的用户访问请求 。
应用服务的技术实现首先基于特定后端语言 , 如 Node.js, Ruby, Scala, Java, C#, .NET 等等 , 同时需要选择基于该后端语言的 Web MVC 框架 , 如 Express 之于 Node.js, Ruby on Rails, Play 之于 Scala, Laravel 之于 PHP 等等 。 本文仅做基本介绍 , 不会过于深入介绍这些语言和框架的具体实现细节 。
4. 数据库服务器
任何一个现代的 Web 应用都使用一个或以上的数据库存储信息 。 数据库帮助我们完成诸如定义数据结构 , 插入数据 , 查找数据 , 更新和删除数据 , 以及执行数据计算等各种数据库操作 。
在大多数情况下 , Web 应用服务器和专有的数据库服务器直接通信 , 对于任务服务器也是如此 。 另外 , 任何一个后端服务都可能拥有一个独立于其他应用的专有服务器 。
尽管我在试图避免在每个组件上过于深入细节 , 但是如果我不详细解释数据库的一些基础概念 , (SQL 和 NoSQL) , 必将会影响你理解接下来的其他概念 。
- 人民网-财经频道|【行走自贸区】山东自贸区济南片区:力争拿出更多首创性改革试点经验
- 腕表之家|现代和复古冲撞融合 上手分享欧米茄海马300
- 云顶之弈|云顶之弈10.18阵容推荐 重装秘术蛇女阵容运营思路分享
- 美容|蒋依依分享护肤干货,网友纷纷不理解:20岁不到就要抗衰老了?
- 新闻联播|先后6次改扩建,山西“夺命”饭店事件背后:盖房没有图纸全凭经验
- 券商中国|银河证券罗黎明:用专业与客户同行,分享基金经理“最强大脑”
- 农村改革|农业农村部:总结经验,大力推进新一轮农村改革
- 【行走自贸区】山东自贸区济南片区:力争拿出更多首创性改革试点经验
- 怅然|华为虽好但别乱选,这三款才是极致性价比,看看哪款更让你心动
- 快科技|芯华章宣布林扬淳出任研发副总裁:世界级专家、30年EDA经验