10年程序员了竟然不懂大型网站架构技术细节:云计算服务工作原理

简介: 云计算服务的工作原理在讨论云计算服务架构之前,先介绍云计算服务的应用场景,然后介绍其开发语言及框架,之后再讲解云计算服务的工作原理。在了解了云计算服务的工作原理之后,我们才能更好地理解云计算服务架构需要关注的细节。

云计算服务的工作原理

在讨论云计算服务架构之前,先介绍云计算服务的应用场景,然后介绍其开发语言及框架,之后再讲解云计算服务的工作原理。在了解了云计算服务的工作原理之后,我们才能更好地理解云计算服务架构需要关注的细节。

云计算服务的应用场景

云计算服务一般是运行时间较长或者需要持续运行的软件,如视频转码服务、爬虫服务和数据分析服务等。也就是说,云计算服务提供的是网站系统的云计算能力。云计算服务的应用场景众多,根据网站系统的服务对象和所在领域不同会有所不同。

那么,为什么云计算服务需要和后端应用程序分离呢?这是因为后端应用程序处理的是频繁且生命周期较短的请求,而云计算服务是需要长时间运行的,如果后端应用程序运行时间过长,就会造成请求超时和Web应用服务器线程阻塞等问题。例如,前端发送一个视频转码请求到后端应用程序,后端应用程序接收到该请求后,会开启云计算服务的视频转码服务并返回结果,而云计算服务的转码服务会持续执行一段时间,如图5.1所示。

网络异常,图片无法展示
|

图5.1 视频转码任务的调度流程

云计算开发语言及其框架

由于云计算服务软件应用场景众多,且不同开发语言的擅长领域有所区别,所以云计算服务软件的开发语言是不固定的。例如,人工智能方向的云计算服务软件一般是使用Python编写的,大数据方向的云计算服务软件一般是使用Java或Python编写的,音视频方向的云计算服务软件一般是使用C++编写的。

至于云计算服务软件的框架,也是不统一的,一般是开发团队根据实际情况搭建的。搭建云计算服务软件框架需要考虑很多问题,如任务调度、异常重试、弹性伸缩和任务进程管理等,这些问题都需要长时间的验证和试错,这无疑会增加自建云计算服务的难度。不过,一套稳定的云计算服务软件框架,无疑会成为大型网站系统的强大后盾。

注意:如果云计算服务与海量数据分析相关,那么可以使用现今比较流行的Hadoop框架。然而本章介绍的是通用的云计算服务,因此不会对Hadoop展开介绍。

云计算服务软件的工作原理

通过5.1.1小节的学习可知,后端应用程序与云计算服务软件是相互独立的,且一般是多对多的关系,如图5.2所示。其中,应用程序1到应用程序4指的是相同的后端应用程序,它们部署在不同的服务器上,服务软件1到服务软件4指的是相同的云计算服务软件,它们可能部署在一个或多个服务器上。一般情况下,同一时间内,一个云计算服务软件一次只能处理一个任务。

网络异常,图片无法展示
|

图5.2 后端应用程序与云计算服务软件的多对多关系

说明:图5.2中的应用程序1到应用程序4指的是相同的后端应用程序。

因为在大型网站系统中,后端应用程序需要处理大量的请求,而单个服务器的处理能力有限,所以相同的后端应用程序会被部署在多个服务器上。

在了解了后端应用程序和云计算服务软件的关系后,下面开始介绍云计算服务的工作原理。云计算服务按任务的生命周期和云计算服务软件的稳定性可以分成任务发布和任务回馈、任务进度或中间结果、任务变更、云计算服务软件监控4个部分。

注意:以下介绍的云计算服务软件的工作原理是基于通用场景介绍的,具体实践可能会有所差异,读者需要根据实际情况斟酌参考。

1.任务发布和任务回馈

由于后端应用程序和云计算服务是多对多的关系,而且云计算服务执行一次任务一般需要较长的时间,即任务发布时可能没有空闲的云计算服务软件(存在任务无法立刻被执行的情况),所以需要在后端应用程序与云计算服务之间添加一个任务池,作为后端应用程序和云计算服务间接通信的枢纽。

任务发布时,后端应用程序生成唯一的任务ID,然后把任务发布到任务池中,并把任务标记为“等待”状态,且将状态记录在数据库中(也可以记录在Redis等非关系型数据库中)。多个空闲的云计算服务软件会在任务池中监听任务,一个任务只会被一个云计算服务软件占有。一个云计算服务软件取得任务后,开始执行任务并通知后端应用程序“任务开始执行”,后端应用程序把任务状态改为“开始”。

任务处理完毕后或发生异常时,云计算服务软件向后端应用程序回馈结果,回馈的结果包括错误码及其描述,以及任务结果参数等。后端应用程序把任务状态改为“结束”,并把错误码及其描述以及任务结果参数记录下来。

任务发布和任务回馈的流程如图5.3所示。其中,云计算服务通知后端应用程序的方式一般是直接调用后端应用程序提供的RESTful API。

网络异常,图片无法展示
|

图5.3 任务发布和任务回馈流程

2.任务进度或中间结果

在任务执行期间,前端往往需要获取任务进度或一些中间结果,以视频转码为例,前端需要获取视频文件的转码进度。而获取任务进度或中间结果的最直接方法,应该是前端向后端应用程序发送请求,后端应用程序从云计算服务获取任务进度或中间结果。

但是,由于后端应用程序和云计算服务是多对多的关系,后端应用程序直接从云计算服务获取任务进度或中间结果的做法实际上是十分烦琐的,所以需要在后端应用程序与云计算服务之间添加一个进度数据池,作为后端应用程序和云计算服务间接通信的枢纽。

任务开始后,云计算服务软件定期向进度数据池更新任务进度或中间结果,后端应用程序根据任务ID从进度数据池中获取对应任务的进度或中间结果,如图5.4所示。

网络异常,图片无法展示
|

图5.4 任务进度或中间结果获取流程

3.任务变更

在执行任务期间,云计算服务还需要处理任务的变更,例如取消任务、暂停任务、设置变更和执行指令等。当发生任务变更时,后端应用程序需要通知正在执行该任务的云计算服务软件。为了实现这样的目的,需要在后端应用程序与云计算服务软件之间增加一个指令池。

每个云计算服务软件在初始化时都需要向指令池注册一个独有的消息队列并监听该消息队列。当开始执行任务时,云计算服务软件在通知后端应用程序“任务开始执行”时需要携带指令池中的消息队列标识,后端应用程序需要把消息队列标识记录到数据库中(也可以记录到Redis等非关系型数据库中)。

当需要执行任务变更时,云计算服务软件根据消息队列标识向指令池发送任务指令,云计算服务软件从指令池中获取任务指令后开始执行任务指令。任务变更流程如图5.5所示。

网络异常,图片无法展示
|

图5.5 任务变更流程

4.云计算服务软件监控

加入了任务池、进度数据池和指令池后,云计算服务软件就可以顺利地执行任务。由于一个云计算服务软件在同一时间只能处理一个任务,因此在一个服务器当中存在多个同时运行的云计算服务软件。这些云计算服务软件是独立运行的,运行的过程中可能会发生意想不到的错误、崩溃和异常退出等情况,当出现这些问题时,云计算服务软件需要被重新启动。

说明:当云计算服务软件出现错误、崩溃和异常退出等情况时,当然是需要被修复的。但是这些问题往往是在正式运营后才会逐渐浮现出来的,而且这些问题往往需要特殊的条件才能触发(一般情况下不会发生)。因此,如果云计算服务软件异常退出后可以重新启动,则大概率能降低该特殊情况造成的影响。因此,在每个运行云计算服务软件的服务器中都需要一个监控软件,其职责为监控和启动云计算服务软件。在服务器开机启动时,监控软件会按配置启动几个云计算服务软件并记录其进程ID。云计算服务软件在运行过程中,需要定时向监控软件汇报当前状态(运行或空闲状态)。

由于云计算服务软件和监控软件是相互独立的,所以在它们之间需要加入一个状态数据池。云计算服务软件向监控软件汇报当前状态时,只需要向状态数据池写入其状态即可。监控软件检查云计算服务软件的状态时,也只需要读取状态数据池中的相关数据即可。

监控软件定时检查各个云计算服务软件的状态,若存在长时间未汇报的云计算服务软件,则判定为该软件已经发生异常。当发现异常的云计算服务软件时,监控软件凭借进程ID将其销毁(存在异常软件已经自动退出的情况),并启动新的云计算服务软件。另外,当所有的云计算服务软件处于运行状态时(执行任务时),监控软件根据具体情况(当前CPU和内存的使用率、配置的最大云计算服务软件个数),决定是否启动新的云计算服务软件。

另外,一个云计算服务软件在执行完几次任务后需要自动退出,不可长时间运行。云计算服务软件自动退出后,由于其不再向状态数据池更新状态,监控软件会认为该软件发生了异常,进而启动一个新的云计算服务软件。

云计算服务软件的自动消亡和重启,可以避免一些由于长时间运行而造成的问题,如内存泄漏等。一般情况下,软件需要经过长年累月的测试与修复,才能达到长时间稳定运行的程度(如Tomcat)。但是,即使是这些稳定的软件,也难免会受到操作系统或某些物理因素的影响而发生异常。而一般的云计算服务软件,其实只需要保证一个或几个任务周期内顺利运行即可,无须保证长时间运行的稳定性。

通过自动消亡和重启云计算服务软件,可以规避一些稳定性的问题,也能节省一些开发成本。

综上,在一个服务器内,监控软件与云计算服务的工作流程如图5.6所示。其中,由于监控软件也可能存在异常退出的情况,所以监控软件也应该被监控。对于监控软件的监控将会在5.6节“监控软件的构造”中详细介绍。

网络异常,图片无法展示
|

图5.6 监控软件与云计算服务的工作流程

本文给大家讲解的内容是大型网站架构的技术细节:云计算服务的工作原理

  1. 下篇文章给大家讲解的内容是大型网站架构的技术细节:云计算服务架构需要解决的问题
  2. 感谢大家的支持
相关文章
|
3天前
|
存储 安全 网络安全
云计算与网络安全:技术融合下的风险与对策
【9月更文挑战第16天】在数字化时代的浪潮中,云计算以其高效、便捷的特点成为企业信息化的首选。然而,云服务的普及也带来了新的网络安全挑战。本文将深入探讨云计算环境中的安全风险,分析云服务模型特有的安全需求,并提出相应的信息安全措施。我们将通过实际案例,了解如何在享受云计算便利的同时,保障数据的安全性和隐私性。
|
3天前
|
Cloud Native 持续交付 云计算
云原生技术:重塑软件开发与架构的未来
在云计算的推动下,云原生技术正逐渐成为软件开发的新标准,强调利用容器、服务网格、微服务等技术实现敏捷开发与高效运维。本文探讨了云原生技术如何重塑软件开发与架构的未来,介绍了其核心概念(如容器化、微服务架构、CI/CD)及优势(如敏捷性、可扩展性、成本效益),并讨论了其在金融服务、电子商务和物联网等领域的实际应用及面临的挑战。尽管存在技术复杂性和人才短缺等问题,云原生技术仍将成为软件开发的主流趋势。
|
3天前
|
存储 安全 网络安全
云计算与网络安全:技术融合与挑战
【9月更文挑战第16天】随着云计算技术的飞速发展,其便捷性和高效性已经得到了广泛认可。然而,云服务的安全性问题也随之凸显。本文将围绕云计算和网络安全的交叉领域进行探讨,分析云服务中的安全风险,并提出相应的防护措施。同时,通过代码示例,展示如何在实际环境中加强云服务的安全防护。
|
1天前
|
运维 Cloud Native Devops
云原生技术:重塑现代IT架构的新引擎
在当今数字化转型的浪潮中,云原生技术以其敏捷、高效和可扩展的特性,正引领着一场IT架构的革命。本文旨在深入探讨云原生的概念、核心组件及其在现代企业中的应用价值,揭示其如何助力企业实现更快的创新速度、更高的资源利用率以及更优的用户体验。不同于传统的云计算模式,云原生从一开始就为云环境量身打造,通过容器化、微服务、DevOps等关键技术,解锁了软件开发和运维的新范式。
|
6天前
|
存储 安全 网络安全
云计算与网络安全:技术融合与挑战
【9月更文挑战第12天】在数字化时代,云计算和网络安全已成为企业和个人用户不可或缺的技术支柱。本文将深入探讨云计算的基本原理、服务模型以及它在现代IT架构中的作用。同时,我们将分析网络安全的重要性,特别是在云计算环境中,如何保护数据免受威胁。文章还将涵盖信息安全的关键概念,包括加密技术和安全协议的应用。通过实际案例分析,我们将揭示云服务供应商如何应对网络攻击,并讨论未来云计算和网络安全技术的发展趋势。最后,我们将提供一些实用建议,帮助读者在享受云计算带来的便利的同时,确保他们的网络环境安全无虞。
|
4天前
|
存储 安全 网络安全
云计算与网络安全:技术融合下的风险与机遇
【9月更文挑战第15天】在数字化浪潮的推动下,云计算已成为企业信息技术架构的核心。然而,随着云服务的广泛应用,网络安全问题也日益凸显。本文将深入探讨云计算环境下的网络安全挑战,分析信息安全的关键技术领域,并提供实用的安全策略和建议。我们将通过案例分析,了解如何在享受云计算带来的便利的同时,保障数据的安全和隐私。
16 3
|
6天前
|
存储 安全 网络安全
云计算与网络安全:技术挑战与未来展望
【9月更文挑战第12天】本文将深入探讨云计算与网络安全之间的紧密联系,分析云服务在提升企业效率的同时带来的信息安全风险,并展示如何通过先进的网络安全措施来确保数据的安全。文章还将提供实际的代码示例,帮助读者理解如何在云计算环境中实施安全策略。
|
2天前
|
存储 缓存 关系型数据库
后端技术在现代软件架构中的关键作用
本文将深入探讨后端技术在现代软件架构中的关键作用,从其定义、重要性到具体应用案例,全面解析后端技术如何支撑复杂系统的高效运行。通过简明易懂的语言和条理清晰的结构,帮助读者理解后端技术的核心概念及其在实际项目中的应用。
10 0
|
5天前
|
云安全 安全 网络安全
探索云计算与网络安全的共生之道在数字化浪潮席卷全球的今天,云计算作为信息技术的一大革新,正重塑着企业的运营模式与服务交付。然而,随着云服务的普及,网络安全与信息安全的挑战也日益凸显,成为制约其发展的关键因素。本文旨在深入探讨云计算环境下的网络安全问题,分析云服务、网络安全及信息安全之间的相互关系,并提出相应的解决策略,以期为构建一个更安全、可靠的云计算生态系统提供参考。
本文聚焦于云计算环境中的网络安全议题,首先界定了云服务的基本概念及其广泛应用领域,随后剖析了当前网络安全面临的主要威胁,如数据泄露、身份盗用等,并强调了信息安全在维护网络空间秩序中的核心地位。通过对现有安全技术和策略的评估,包括加密技术、访问控制、安全审计等,文章指出了这些措施在应对复杂网络攻击时的局限性。最后,提出了一系列加强云计算安全的建议,如采用零信任架构、实施持续的安全监控与自动化响应机制、提升员工的安全意识教育以及制定严格的合规性标准等,旨在为云计算的安全可持续发展提供实践指南。
21 0
|
6天前
|
存储 安全 算法
探索操作系统的心脏:内核技术与架构
本文深入探讨了现代操作系统中至关重要的部分——内核。通过分析其功能、架构以及在系统性能和稳定性中的作用,揭示了内核技术背后的复杂性及其对操作系统整体表现的影响。我们将从基本概念入手,逐步深入到内核的具体实现细节,旨在为读者提供一个全面而清晰的理解框架。

热门文章

最新文章