笔记:云计算服务架构

date
Apr 21, 2023
slug
serveless-intro
status
Published
tags
计算机
summary
云计算,大势所趋
type
Post
先看看基于ChatGPT来的脑图,不一定全面,但有个总体认识:
notion image
追本溯源、循序渐进,并且结合脑图,来问几个问题:

一、云计算由何而来?

云计算是由IT技术和商业需要共同推动形成的产物。随着互联网的发展,数字化信息呈指数级增长,企业需要更多的计算、存储、网络及安全资源来支持业务需求,传统IT基础设施无法满足云端应用程序快速部署和大规模运行的要求,这就催生了云计算的需求。
云计算的本质是将计算资源及相关服务通过网络和自动化技术进行集成和提供,用户可以通过互联网按需使用和支付相应费用。云计算具有优秀的灵活性、可伸缩性和成本效益,可以快速地响应变化的业务需求,降低企业IT基础设施的运维成本,提高业务的敏捷性和稳定性。
云计算市场呈现高速增长的趋势,越来越多的企业和组织把应用程序和数据迁移到云端,从传统的资本支出转向操作支出。公有云服务商以Amazon Web Services、Azure、Google Cloud Platform为代表,强大的基础设施和应用程序支持,使得云计算成为了当前应用程序开发和运维的热门趋势之一。大多数企业并不拥有自己的IT基础设施来实现应用程序的部署和运维,他们往往依靠云服务商的云平台、基础设施和技术,通过订阅和按需付费的方式使用云服务,因此,云计算在企业中的价值日益显现,成为了大势所趋。
简洁的白话说:为了适应数字化发展,需要更灵活、可伸缩的信息化服务方案,于是诞生了云计算(或者说设计出了一套架构,就叫云计算)。
 

二、云计算,相比传统IT架构,有哪些优点?

云计算是一种具有高弹性、低成本、高性能、高可靠性、可扩展性等特点的新型 IT 架构。这种架构不仅能够为企业带来先进的技术和服务,还能满足不断增长的数据存储和处理需求,使企业的 IT 系统更加高效、可靠和灵活。相比传统IT架构的亮点有:
  1. 弹性伸缩:云计算平台可以根据应用程序的实际流量和负载需求,实时自动扩展或缩减计算和存储资源。这种弹性伸缩的特性可以帮助企业在处理突发流量和峰值负载时,避免了大量的资源浪费和成本支出。
  1. 低延迟:云计算平台通常采用分布式架构来进行云服务的部署和运行,使得多个节点之间能够共享和处理数据。这种方式可以降低单节点的负载和响应时间,从而提高整个系统的性能和响应速度。
  1. 可靠性:云计算平台往往采用多个节点分布式技术来部署服务,从而可以实现负载均衡、故障转移和容错等机制。这种可靠性机制可以确保服务在某些节点或设备出现失败的情况下依然能够正常运行。
  1. 资源共享:云计算平台允许多个应用程序运行在同一硬件平台上,通过对硬件和软件资源进行有效的分配和管理,能够实现资源的高效共享,提高资源利用率和降低成本。
  1. 无处不在的访问:云计算平台允许用户通过任何设备和网络接入互联网,可以随时访问到企业的数据和应用程序服务,实现了计算和数据的无处不在。这种灵活的访问方式使得企业更加便捷地进行协作和数据分享,增强了工作效率和生产力。
简洁的白话说:云计算架构的亮点=4高1低(高弹性、高性能、高可靠性、高扩展性、低成本)

三、云计算企业,提供了什么产品或服务?

云服务厂商提供的服务可以看作是将服务器、负载均衡、数据库等整合成了现成的方案,供客户选择和使用。这些服务可以通过一个面向用户的控制台进行管理和配置,客户可以根据自己的需求进行相应的设置,而不需要关注具体的服务器架构、网络拓扑、负载均衡算法等技术细节。
通过使用云服务,客户可以享受到更快速的集成、更低的成本和更高的可靠性。云服务厂商通常提供弹性扩展、容错机制和备份策略等功能,以确保客户服务的稳定性和安全性。同时,客户也可以根据自己的需求选择不同的云服务类型,如IaaS、PaaS或SaaS等,以满足自己的业务需求和发展规划。
IaaS提供的是整个计算基础设施,包括计算、存储和网络等,用户可以在云平台上购买或租赁虚拟机、存储空间和网络带宽等硬件资源,拥有最高的自由度和灵活性。示例产品包括:AWS EC2、Azure VM、Google Compute Engine等。
PaaS则在IaaS的基础上提供更上层封装的平台服务,例如容器服务、服务器函数、自动伸缩等等,简化了应用程序的部署和管理。示例产品包括:AWS Elastic Beanstalk、Heroku、Google App Engine等。
SaaS是基于云计算提供的应用程序,用户可以直接访问和使用,而不需要关心底层的云基础设施和中间件。SaaS产品主要用于成熟的应用程序,例如CRM、ERP、HRM、视频会议等等。示例产品包括:Salesforce、Zoom、Office 365等。
因此,可以说,IaaS、PaaS、SaaS是云服务的主要分类方式,云计算服务提供商根据不同层次需求,提供不同的产品和服务,这些即是上述提到的计算基础设施服务、云平台服务、标准应用程序服务和其他相关的工具和服务。
简洁的白话说:类比现实中,你能选择土地、毛坯房、精装房,云计算也提供了三个层次的服务。

四、云计算的数据库有哪些方案?

在云计算环境中,有很多适用于不同用途和需求的数据库选项。下面是一些常见的云计算数据库类型:
  1. 关系型数据库:传统的关系型数据库非常适用于处理基于事务的应用程序,例如ERP,CRM和在线购物商店。在云计算环境中,各种商用数据库,如Oracle、Microsoft SQL Server、IBM Db2、MySQL、PostgreSQL等,都有各种产品和服务选项。
  1. 非关系型数据库:非关系型或“NoSQL”数据库广泛应用于大数据集和非结构化数据。在云计算环境中,各种NoSQL数据库,如MongoDB、Cassandra、Redis、Couchbase、Amazon DynamoDB等,也提供了各种服务选项。
  1. 数据仓库:这是一种特殊的关系数据库,用于处理分析性查询和大批量数据加载。Amazon Redshift、Google BigQuery等云数据仓库提供商提供了各种处理数据仓库的服务。
  1. 图形数据库:图形数据库适用于构建具有一定复杂性的应用,如社交网络和推荐系统。Neo4j、ArangoDB、Amazon Neptune等供应商提供了各种类型的图形数据库。
  1. 时间序列数据库:这是一种特殊类型的数据库,适用于存储和处理大量时间序列数据。InfluxDB、TimescaleDB等提供商在云环境中提供了各种类型的时间序列数据库产品和服务。
  1. 商业智能数据库:这是专门为报表、分析和商业智能用途设计的数据库。Microsoft Power BI、Oracle Business Intelligence等云产品提供商针对这一领域提供了丰富的数据库解决方案。
总之,在云计算环境中,数据库选项非常多样化,可以根据特定的应用程序、数据性质、性能需求和可扩展性需求来进行选择。
并且,云计算在数据库方面确实很好地实现了兼容性与适应性。云计算平台可以很好地兼容多种新、旧的数据库,可以在云上运行各种数据库,如Oracle、Microsoft SQL Server、MySQL、PostgreSQL、MongoDB等等。同时,云计算提供商也提供了许多专为云环境而设计的新型数据库,例如Amazon Aurora、Google Cloud Spanner等。这些数据库提供了更高的性能、可扩展性和可用性,可以满足不同的应用需求。
此外,云计算虚拟化技术也为数据库的迁移、备份和恢复提供了便捷的方式,同时也简化了数据库管理的工作。云计算平台提供许多用于管理、监控和优化数据库的工具和服务,如Oracle Cloud Infrastructure、Amazon RDS等,这些工具极大地简化了数据库的运维工作。
综上所述,云计算为不同的数据库提供了多个适配方案,可以支持不同的应用需求。无论是新的数据库,还是现有的数据库,都可以在云环境中找到一个合适的解决方案来满足当前和未来的需求。
举个例子,比如对于社交应用,数据库方案的选择应该基于以下几个方面:
  1. 数据安全:社交应用通常需要处理用户个人信息,包括敏感数据。因此,安全是一个非常重要的因素。社交应用应考虑选择安全性较强的数据库,如Amazon RDS或Azure SQL Database。
  1. 可扩展性和高性能:社交应用需要处理大量的用户数据和交互数据,因此需要具备高性能和可扩展性。应该选择支持按需扩展,能够根据业务需求快速调整资源,并具备高可用性的数据库,如Amazon DynamoDB或MongoDB等。
  1. 数据模型:社交应用通常需要处理非结构化数据,并具备强大的查询功能。因此,应该考虑选择NoSQL类型的数据库,如MongoDB或Cassandra,在数据存储和检索方面表现良好。
  1. 成本:对于一些初创的社交应用来说,开发和运营成本可能是一个重要的考虑因素。因此,应该考虑一些具备更低成本或者开放源代码的数据库,例如Redis或Couchbase。
基于上述因素,使用NoSQL数据库,例如MongoDB或Cassandra,可以为社交应用提供高度可扩展性、高性能和强大的数据模型。如果业务非常适合关系型数据库,例如进行金融交易等高度结构化数据的场合,可以考虑使用Amazon RDS或者Azure SQL Database等关系型数据库,并进行性能测试和保护敏感数据的安全。
简洁的白话说:云计算的数据库方案兼容并包又推陈出新。
 

五、云计算的缓存有哪些方案,意义何在?

在云计算环境中,缓存是提高应用程序性能和可扩展性最常用的手段之一。缓存技术利用高速缓存器存储和提供经常访问的数据,从而减少对后端数据库或其他存储系统的访问次数,降低了系统的延迟和响应时间。下面是一些常用的云缓存方案:
  1. Redis:Redis是一种开源的高性能内存数据结构存储系统,可以充当缓存、消息队列和键值存储库。在云计算环境中,Redis通常与其他存储系统如关系型数据库、NoSQL数据库等一起使用,用来缓存经常读取的数据。
  1. Memcached:Memcached也是一种内存数据结构存储系统,通常用于缓存敏感数据以加快应用程序的访问速度。与Redis不同的是,Memcached主要用于存储键值对,并且通常被用来作为缓存层与关系型数据库之间的媒介。
  1. Amazon ElastiCache:ElastiCache是亚马逊提供的一项服务,用于在云环境中提供高效、可扩展的缓存解决方案。ElastiCache支持Memcached和Redis两种缓存引擎,允许用户根据应用程序的特定需求选择不同的方案。
  1. Google Cloud Memorystore:Google Cloud Memorystore同样是一项由Google提供的云缓存解决方案,支持Redis和Memcached两种引擎。Memorystore针对Google云计算环境进行了优化,可以在秒级别内创建、扩展和管理Redis和Memcached缓存实例。
以上列举的是一些著名的云缓存技术和供应商,当然还有其他商业和开源的缓存方案可供选择。利用缓存技术可以显著提高应用程序的性能和可扩展性,减少后端数据库的访问请求量,从而提高系统的效率和响应时间。
简洁的白话说:缓存是IT技术的必要思想,是设计一个服务架构的必要手段。云计算也不例外。

六、云计算的消息队列有哪些方案,意义何在?

在云计算环境中,消息队列是一种常用的异步通信解决方案。消息队列系统可以将应用程序中的异步消息(Task)收集到队列中,这些消息能异步地进行处理,同时不影响主线程的正常处理;并且防止应用程序出现运行时间过长或者宕机的情况下,数据丢失的问题。消息队列可以帮助解决分布式应用程序中的数据传输、异步任务处理、扩展性及故障转移等问题。以下是几种常见的云消息队列方案:
  1. Amazon Simple Queue Service (SQS) : Amazon SQS 是一项完全托管的消息队列服务,可用于在云中分离和扩展分布式应用程序组件,并且无需管理消息复杂性。使用 Amazon SQS 可以进行高可用性,并带有内置的错误处理,可以缓解接收者(第二个组件)故障对发送者(第一个组件)的影响,从而保障应用稳定性。
  1. Apache Kafka: Apache Kafka是一个分布式流处理平台,由Apache基金会开源,它既是消息系统,又是分布式存储系统。与传统的消息队列系统不同,Kafka不仅可以处理实时数据,而且可以处理离线处理数据。Kafka通过在数据流中添加上下文管理,提高了消息处理的效率,同时,其跨平台和集群支持,使其成为了处理大规模数据的理想平台。
  1. RabbitMQ: RabbitMQ是一款开源的消息队列中间件,设计的目的是为了满足在分布式系统中,数据量和并发量的需要。RabbitMQ 支持多种消息传递协议,包括 AMQP、STOMP、MQTT 等。它也拥有多语言的客户端库,适用于不同的编程语言。
  1. Google Cloud Pub/Sub: Google Cloud Pub/Sub 是一项完全托管的消息传递服务,能够在各种应用程序中可靠地分离和分配事件,并且具有可扩展性、可定制性和无服务器化的优势。Cloud Pub/Sub 可以支持使用内存保存大量数据,通常被认为是高吞吐量、低延迟数据传输的首选解决方案。
  1. Apache RocketMQ: Apache RocketMQ 是从阿里巴巴内部 Message Queue 发展而来的一款分布式消息中间件,以高吞吐、稳定可靠、灵活扩展等特点被广泛使用。
推荐使用消息队列的原因之一是它们提供了解耦的方式,即发送者和接收者不直接相互通信,而是通过消息队列进行传递。这种方式有助于软件架构中应用程序的松散耦合,使得应用程序更加灵活,同时也更容易维护。消息队列还可以提高应用程序的可扩展性,通过可以增加队列的数量来拓展处理规模来处理数据洪流。
简洁的白话说:消息队列的目的是松耦合,本质是异步通信,是设计一个服务架构的必要手段。
 

© Jason 2023 - 2025