云计算时代的分布式WEB服务解决方案
- 格式:doc
- 大小:137.00 KB
- 文档页数:9
关于“云计算”概念的资料汇总云计算(Cloud Computing)是分布式处理(Distributed Computing)、并行处理(Parallel Computing)和网格计算(Grid Computing)的发展,或者说是这些计算机科学概念的商业实现。
云计算的基本原理是,通过使计算分布在大量的分布式计算机上,而非本地计算机或远程服务器中,企业数据中心的运行将更与互联网相似。
这使得企业能够将资源切换到需要的应用上,根据需求访问计算机和存储系统.这可是一种革命性的举措,打个比方,这就好比是从古老的单台发电机模式转向了电厂集中供电的模式。
它意味着计算能力也可以作为一种商品进行流通,就像煤气、水电一样,取用方便,费用低廉。
最大的不同在于,它是通过互联网进行传输的.云计算的蓝图已经呼之欲出:在未来,只需要一台笔记本或者一个手机,就可以通过网络服务来实现我们需要的一切,甚至包括超级计算这样的任务。
从这个角度而言,最终用户才是云计算的真正拥有者.云计算的应用包含这样的一种思想,把力量联合起来,给其中的每一个成员使用。
从最根本的意义来说,云计算就是利用互联网上的软件和数据的能力。
对于云计算,李开复(现任Google全球副总裁、中国区总裁)打了一个形象的比喻:钱庄. 最早人们只是把钱放在枕头底下,后来有了钱庄,很安全,不过兑现起来比较麻烦。
现在发展到银行可以到任何一个网点取钱,甚至通过ATM,或者国外的渠道。
就像用电不需要家家装备发电机,直接从电力公司购买一样。
“云计算”带来的就是这样一种变革——由谷歌、IBM这样的专业网络公司来搭建计算机存储、运算中心,用户通过一根网线借助浏览器就可以很方便的访问,把“云”做为资料存储以及应用服务的中心。
目前,PC依然是我们日常工作生活中的核心工具—-我们用PC处理文档、存储资料,通过电子邮件或U盘与他人分享信息。
如果PC硬盘坏了,我们会因为资料丢失而束手无策。
而在“云计算”时代,“云"会替我们做存储和计算的工作。
分布式系统架构中的数据一致性问题与解决方案在当今互联网时代,分布式系统架构被广泛应用于各个领域,尤其是大型网站、云计算和物联网等。
然而,分布式系统面临的一个核心挑战就是数据一致性问题。
本文将探讨分布式系统中数据一致性问题的原因,并介绍一些常见的解决方案。
一、数据一致性问题的原因1. 网络延迟:在分布式环境下,系统中的不同节点之间通过网络进行通信。
由于网络延迟等原因,数据在不同节点之间的同步存在一定的延迟,容易导致数据一致性问题。
2. 节点故障:分布式系统中的节点数量通常较多,节点之间可能存在软件或硬件故障。
节点故障会导致数据同步失败,进而引发数据不一致的问题。
3. 并发操作:分布式系统中的节点通常是并发运行的,多个操作同时对同一份数据进行读写操作,容易导致数据不一致的情况发生。
二、数据一致性问题的解决方案1. 强一致性强一致性要求系统中的所有节点在任意时刻都能够访问到一致的数据副本。
为了实现强一致性,可以采用以下方法:(1)原子操作:将多个操作包装成原子性的操作,要么全部执行成功,要么全部执行失败。
例如,可以使用分布式事务来保证数据一致性。
(2)主从复制:将数据分为主节点和从节点,主节点负责处理写操作,从节点负责复制主节点的数据并处理读操作。
主节点和从节点之间通过同步协议保持数据一致。
(3)多数投票:在系统中的多个节点中,若有超过半数的节点达成一致意见,则视为数据同步成功。
通过多数投票来保证数据的一致性。
2. 弱一致性弱一致性允许系统在某一时间点上出现数据不一致的情况,但最终数据会达到一致。
为了实现弱一致性,可以采用以下方法:(1)最终一致性:系统允许一段时间内的数据不一致,但最终会通过一定的机制使得数据最终达到一致。
例如,可以使用版本向量或向量时钟来记录和追踪数据的变更。
(2)基于时间戳:为每个操作添加时间戳,并根据时间戳进行数据的读写操作。
通过时间戳来解决数据冲突和同步的问题。
(3)可扩展性设计:通过设计合理的分布式算法和架构,将大规模的数据分片存储,并保持各个分片的数据一致性。
云计算解决方案云计算是一种基于互联网的计算模式,通过将计算资源、存储资源和应用程序提供给用户,帮助用户实现按需获取和使用计算资源的目标。
云计算解决方案是为了满足不同行业和企业的需求而设计的一系列技术和服务,旨在帮助用户提高效率、降低成本、增强安全性和灵活性。
一、云计算解决方案的概述云计算解决方案包括基础设施即服务(IaaS)、平台即服务(PaaS)和软件即服务(SaaS)等多个层次。
在IaaS层面,用户可以通过云服务提供商租用虚拟机、存储空间和网络资源,以实现灵活的资源管理和部署。
PaaS层面提供了开发、测试和部署应用程序的平台,用户可以通过云平台快速构建和扩展应用程序。
SaaS层面则提供了各种应用程序,用户可以直接通过互联网访问并使用这些应用程序,而无需安装和维护软件。
二、云计算解决方案的优势1. 灵活性和可扩展性:云计算解决方案可以根据用户的需求快速调整和扩展计算资源,满足不同规模和变化的业务需求。
2. 成本效益:通过使用云计算解决方案,用户无需购买和维护昂贵的硬件设备和软件许可证,可以大大降低IT成本。
3. 高可用性和可靠性:云计算解决方案通常具有多个数据中心和冗余架构,可以提供高可用性和可靠性的服务,保证用户业务的连续性。
4. 安全性:云计算解决方案提供了多层次的安全措施,包括数据加密、身份认证和访问控制等,保护用户数据的安全性和隐私。
5. 快速部署和易于管理:云计算解决方案可以快速部署和启动,用户可以通过简单的界面进行管理和监控。
三、云计算解决方案的应用场景1. 企业办公和协作:云计算解决方案可以提供包括电子邮件、文档管理、在线会议和团队协作等功能,帮助企业提高办公效率和协作能力。
2. 数据备份和恢复:云计算解决方案可以提供可靠的数据备份和恢复服务,保护用户数据的安全性和可用性。
3. 虚拟化和容器化:云计算解决方案可以通过虚拟化和容器化技术,实现资源的最大化利用和应用程序的快速部署。
4. 大数据分析和人工智能:云计算解决方案可以提供强大的计算和存储能力,支持大数据分析和人工智能应用的开发和部署。
云时代数据中心SDN网络解决方案随着云计算的快速发展和智能化的大数据应用,数据中心的规模和网络流量都大幅增加。
传统的数据中心网络结构面临着扩展性、可管理性、性能和安全性等方面的挑战。
为了解决这些问题,软件定义网络(Software Defined Networking)技术应运而生,并逐渐成为数据中心网络的主流解决方案。
SDN网络是一种将控制平面(Control Plane)和数据平面(Data Plane)分离的网络架构。
控制平面集中管理整个网络,并通过控制器向数据平面设备下发转发规则,从而实现对网络的灵活控制。
数据平面则负责实际的数据传输。
在云时代的数据中心中,SDN网络可以提供以下解决方案:1.灵活的网络架构:传统的数据中心网络结构通常是层叠式的,难以扩展和管理。
SDN网络可以根据需要动态调整网络拓扑,实现灵活的网络架构。
同时,SDN网络还支持多租户的隔离,为不同的应用提供专用的网络划分。
2.高性能和低延迟:SDN网络可以通过优化数据转发路径和流量分布,提高网络的性能,并降低延迟。
控制器可以根据网络状况实时调整流量的转发路径,保证数据的快速传输。
3.网络安全和策略管理:SDN网络通过集中控制平面的管理,可以更加有效地管理网络安全和策略。
控制器可以根据应用的安全需求下发相应的安全策略,对网络流量进行监控和过滤,从而保护数据中心的安全。
4.简化的网络管理:传统的数据中心网络管理需要对每个设备进行独立配置和管理,非常繁琐。
SDN网络通过集中管理控制器,实现对整个网络的统一配置和管理,大大简化了网络管理的工作。
5.跨数据中心互联:在大型云服务提供商中,通常会有多个数据中心进行资源的部署和负载均衡。
SDN网络可以实现不同数据中心之间的虚拟专网互连,为用户提供高可用性和灵活的公有云服务。
总的来说,云时代的数据中心SDN网络解决方案可以提高网络的灵活性、性能、安全性和管理效率。
它是未来数据中心网络的发展方向,将为大数据应用和云计算提供更好的基础支持。
web服务器配置方案一、简介Web服务器是指提供Web服务的软件和硬件设备。
在互联网时代,Web服务器扮演着至关重要的角色,负责接收用户请求并返回相应的网页内容。
为了保证Web服务器的性能和稳定性,合理的配置方案非常重要。
本文将提供一种Web服务器配置方案,旨在提高服务器性能、保障数据安全、提升用户体验。
二、硬件配置1. 型号选择对于小型网站或网页访问量较低的应用,可以选择低成本的服务器硬件。
但对于大型网站或高访问量的需求,应考虑选择高性能的服务器型号,以满足用户对速度和体验的需求。
2. 处理器和内存处理器是Web服务器的核心组件,直接影响服务器的计算能力和响应速度。
对于大型网站,建议选择多核处理器,并配置足够的内存以提高并发处理能力,避免系统崩溃或服务中断。
3. 硬盘和RAID为了保障数据安全,建议采用RAID(冗余磁盘阵列)技术。
RAID可以通过数据备份和容错机制,提高服务器存储的可靠性和读写性能。
同时,选择高速硬盘可以提高数据的读写速度,加快服务器响应时间。
三、软件配置1. 操作系统常见的Web服务器操作系统有Windows Server、Linux等。
根据具体需求和预算,选择适合的操作系统版本,并及时安装最新的安全补丁,以增强服务器的稳定性和安全性。
2. Web服务器软件最常用的Web服务器软件是Apache、Nginx和IIS。
根据具体需求和预算,选择合适的Web服务器软件。
同时,配置Web服务器软件的虚拟主机和负载均衡,可以提高服务器的并发处理能力和稳定性。
3. 数据库对于需要存储和管理大量数据的网站,合理选择和配置数据库非常重要。
常见的数据库软件有MySQL、SQL Server等。
根据需求选择合适的数据库软件,并进行性能调优,以提高数据库读写速度和查询效率。
四、安全配置1. 防火墙在Web服务器上安装并配置防火墙,可以有效保护服务器不受恶意攻击和非法访问。
防火墙可以设置访问控制规则、端口过滤等,提高服务器的安全性和稳定性。
服务器分布式部署方案服务器分布式部署方案1. 简介服务器分布式部署方案是一种将应用程序或服务的不同组件部署到多台服务器上,以实现负载均衡、提高系统可靠性和性能的解决方案。
在本文中,我们将详细介绍服务器分布式部署方案的原理、优势和常用实现方式。
2. 分布式部署原理分布式部署原理是将一个应用程序或服务的不同功能模块分散到多个服务器上,每台服务器负责处理其中的一部分任务。
通过这种方式,可以将负载分散到多台服务器上,提高系统的并发处理能力和吞吐量。
3. 分布式部署的优势3.1 提高系统可靠性分布式部署可以将应用程序或服务的不同组件部署到多台服务器上,当其中一台服务器发生故障时,其他服务器仍然可以继续提供服务,从而降低系统宕机的风险。
3.2 提高系统性能通过将负载均衡到多台服务器上,可以减轻单台服务器的压力,提高系统的并发处理能力和响应速度。
同时,通过增加服务器的数量,还可以实现横向扩展,进一步提高系统的性能。
3.3 灵活的资源管理分布式部署使得服务器资源可以更加灵活地管理和分配。
可以根据实际需求增加或减少服务器的数量,根据负载情况对服务器进行动态调度,以最大限度地利用服务器的资源。
4. 常用的分布式部署方案以下是常用的几种分布式部署方案:4.1 负载均衡负载均衡是一种通过将请求分发到不同的服务器上,以均衡服务器负载的技术。
常用的负载均衡算法有轮询、加权轮询、IP散列等,常用的负载均衡软件有Nginx、HAProxy等。
4.2 高可用集群高可用集群是通过将多个服务器组成一个集群,在集群内部实现故障自动转移和容错机制,以提供高可用性的服务。
常见的高可用集群方案有Keepalived、Pacemaker等。
4.3 数据分片数据分片是将数据按照某种规则切分成多个片段,每个片段存储在不同的服务器上,实现数据的分布式存储和查询。
常见的数据分片方案有数据库分片、分布式文件系统等。
4.4 微服务架构微服务架构是一种将系统拆分成多个小型、独立的服务并按照业务功能进行部署的架构。
云计算服务解决方案方案描述一、背景介绍云计算作为一种新兴的计算模式,已经在各行各业得到广泛应用。
随着企业对于数据存储和计算能力需求的不断增加,云计算服务的需求也日益旺盛。
为了满足企业的需求,我们公司特别设计了一套云计算服务解决方案,旨在为企业提供高效、安全、可靠的云计算服务。
二、解决方案概述我们的云计算服务解决方案基于先进的技术和丰富的经验,结合了公有云、私有云和混合云的优势,为企业提供全方位的云计算服务。
我们的解决方案包括以下几个方面:1. 云计算基础设施建设我们将根据企业的需求,设计和搭建云计算基础设施。
这包括服务器、存储设备、网络设备等硬件设施的选型和配置,以及虚拟化技术的应用和管理。
2. 云计算平台搭建我们将为企业搭建云计算平台,包括云计算操作系统、云存储、云网络等。
这样,企业可以通过云计算平台实现资源的共享和管理,提高资源利用率和运维效率。
3. 云安全解决方案我们将为企业提供全面的云安全解决方案,包括身份认证、数据加密、防火墙等。
通过这些安全措施,企业可以保护云计算环境中的敏感数据和业务安全。
4. 云计算服务管理我们将为企业提供云计算服务的全面管理,包括资源管理、性能监控、故障排除等。
通过这些管理措施,企业可以实时了解云计算服务的状态,并及时采取相应的措施。
5. 云计算服务优化我们将根据企业的需求和实际情况,对云计算服务进行优化。
这包括资源的动态调整、性能的优化、成本的控制等。
通过这些优化措施,企业可以最大程度地提高云计算服务的效率和性能。
三、解决方案的优势我们的云计算服务解决方案具有以下几个优势:1. 灵活性:我们的解决方案可以根据企业的需求进行定制,满足不同企业的特定需求。
2. 可扩展性:我们的解决方案可以根据企业的需求进行扩展,随着业务的发展而扩大规模。
3. 安全性:我们的解决方案采用了先进的安全技术和措施,保障企业的数据和业务的安全。
4. 可靠性:我们的解决方案采用了高可靠性的硬件设备和软件系统,保证云计算服务的稳定性和可靠性。
基于云计算的分布式计算系统设计一、引言随着数字化时代的到来,计算机技术迎来了一个新的发展时期,其应用领域也不断拓宽。
面对大规模数据的挑战,分布式计算系统因其在存储、计算和通信方面的优势而逐渐成为首选。
基于云计算的分布式计算系统将成为未来计算机科学研究的一个重要方向,本文将从系统架构、数据管理、任务调度三个方面阐述云计算的分布式计算系统的设计。
二、系统架构1.架构概述基于云计算的分布式计算系统是一种应用领域非常广泛的系统,其架构主要分为三个层次:客户端层、中间层和计算层。
客户端层是用户与系统交互的接口,中间层是系统的控制和管理中心,计算层是系统的任务执行和计算中心。
2.客户端层客户端层是系统的用户界面,主要是为用户提供任务提交、任务管理和任务结果更新等功能。
客户端层需要具有友好的用户界面,兼容性强,能够适应不同平台的操作系统,并且需要建立标准的数据交换协议,以便和中间层进行交互。
3.中间层中间层是系统的核心层,主要负责系统的管理、控制和任务调度等功能。
中间层需要实现任务的分配、资源的管理、实时监控、任务调度和异常处理等功能。
中间层需要设计一个合理的调度算法,以实现任务的动态分配和负载均衡等功能。
4.计算层计算层是系统的任务执行中心,主要负责任务的计算、数据的处理和结果的返回等功能。
计算层需要设计一个高效的计算方法,提高计算效率和系统性能,并能够保证数据的安全性和可靠性等要求。
三、数据管理1.数据存储数据存储是云计算的分布式计算系统中一个重要的环节,数据存储涉及到数据的传输、存储和共享等问题。
数据存储需要考虑到数据的容错性、安全性和可扩展性等因素,同时需要考虑到数据存储的位置、数据管理的方法、数据的备份和恢复等问题。
2.数据传输数据传输是云计算的分布式计算系统中另一个重要的环节,数据传输需要考虑到数据的传输速度、传输的稳定性和传输的安全性等因素。
数据传输需要采用高效率的数据传输技术,并且需要与各种协议兼容,如FTP和 HTTP 等。
分布式部署方案引言分布式系统的概念已经在计算机科学领域中被广泛讨论和应用。
在今天的云计算环境中,分布式部署方案对于应用程序的可伸缩性和可靠性至关重要。
本文将探讨分布式部署方案的概念、优势和常见的实践方法。
什么是分布式部署方案?分布式部署方案是一种将应用程序的不同模块或组件部署在多个计算机或服务器上的方法。
通过将应用程序分解为小的独立单元,每个单元可以在不同的机器上运行,从而实现应用程序的并行处理和负载均衡。
分布式部署方案可以提高应用程序的性能、可靠性和可伸缩性。
分布式部署方案的优势高可靠性分布式部署方案可以提高应用程序的可靠性。
当应用程序中的某个组件或服务器发生故障时,其他组件或服务器可以接管请求并继续提供服务,从而减少应用程序的中断时间。
高性能通过将应用程序的负载分散到多个服务器上,分布式部署方案可以实现并行处理和负载均衡,从而提高应用程序的性能。
每个服务器都可以专注于处理特定的任务,而不会被其他任务阻塞。
可伸缩性分布式部署方案可以根据需求的变化自动地扩展或缩减计算资源。
当请求量增加时,可以动态地增加服务器数量以处理更多的请求,而不会影响应用程序的性能。
相反,当请求量减少时,可以减少服务器数量以节省资源成本。
常见的分布式部署方案1. 容器化方案容器化方案是一种将应用程序打包为容器的方法,每个容器都包含了应用程序的所有依赖项和运行环境。
通过使用容器编排工具,如Docker和Kubernetes,可以在多个服务器上部署和管理容器。
容器化方案提供了一种轻量级、可移植和可复制的部署方式,使得应用程序的迁移和扩展变得更加容易。
2. 微服务架构微服务架构是一种将应用程序分解为小的独立服务的方法。
每个服务都有自己的数据库和业务逻辑,可以独立部署和扩展。
通过使用微服务架构,可以将应用程序拆分为多个小的服务,从而实现更高的灵活性和可伸缩性。
每个微服务可以在不同的服务器上部署,从而实现负载均衡和并行处理。
3. 分布式缓存分布式缓存是一种将数据缓存在多个服务器上的方法。
云计算服务解决方案方案描述一、背景介绍随着信息技术的不断发展和应用,云计算作为一种新型的计算模式,已经成为企业和个人日常工作中不可或缺的一部分。
云计算通过将计算、存储和网络等资源进行集中管理和分配,为用户提供灵活、可扩展的计算服务。
为了满足不同企业的需求,我们公司特别针对云计算服务提供了一套全面的解决方案。
二、解决方案概述我们的云计算服务解决方案旨在帮助企业快速搭建和管理自己的云计算平台,提供强大的计算、存储和网络等基础设施,以及各种应用和服务。
我们的解决方案包括以下几个关键组成部分:1. 基础设施服务我们提供可靠、高性能的基础设施服务,包括计算资源、存储资源和网络资源等。
用户可以根据自己的需求灵活选择和调整这些资源,以满足不同的业务需求。
我们的基础设施服务支持多种操作系统和开发语言,方便用户进行应用程序的开发和部署。
2. 数据管理服务我们提供全面的数据管理服务,包括数据存储、备份和恢复等功能。
用户可以将自己的数据安全地存储在我们的云平台上,并随时进行备份和恢复操作。
我们的数据管理服务还支持数据的加密和权限控制,确保用户的数据得到最高级别的保护。
3. 应用服务我们提供丰富多样的应用服务,包括虚拟机、容器、数据库和消息队列等。
用户可以根据自己的业务需求选择和使用这些应用服务,快速构建和部署自己的应用程序。
我们的应用服务支持自动扩展和负载均衡,以应对高并发和大规模用户访问。
4. 安全与监控服务我们提供全面的安全与监控服务,确保用户的云计算环境安全可靠。
我们的安全服务包括网络防火墙、入侵检测和数据加密等功能,保护用户的数据和应用程序不受到恶意攻击。
我们的监控服务可以实时监测云计算环境的运行状态,及时发现和解决潜在问题。
三、解决方案优势我们的云计算服务解决方案具有以下几个优势:1. 灵活可扩展:我们的解决方案采用分布式架构和弹性伸缩技术,可以根据用户的需求自动调整资源的分配和使用,实现快速扩展和收缩。
2. 高性能可靠:我们的解决方案基于先进的硬件设备和高速网络,保证用户的计算和存储能力得到充分的利用,同时确保数据的安全和可靠性。
云计算时代的分布式WEB服务解决方案Sina App Engine(简称SAE)是新浪研发中心于2009年上半年开始内部开发,并在2009年11月3日正式推出第一个Alpha版本的国内首个公有云计算平台,是新浪云计算(简称浪云)战略的核心组成部分。
SAE作为国内的公有云计算,借鉴吸纳了Google、Amazon等国外公司的公有云计算的成功技术经验,并很快推出具有自身特色的云计算平台。
SAE选择PHP 作为首选的支持语言,Web开发者可以在Linux/Mac/Windows上通过SDK或者Web 版在线SDK进行开发、部署、调试,团队开发时还可以进行成员协作,不同的角色将对代码、项目拥有不同的权限。
SAE还提供了一系列分布式计算、存储服务供开发者使用,包括分布式文件存储、分布式数据库集群、分布式缓存、分布式定时服务等,这些服务将大大降低开发者的开发成本。
同时又由于SAE整体架构的高可靠性和新浪的品牌保证,大大降低了开发者的运营风险。
另外,作为典型的云计算,SAE采用“所付即所用,所付仅所用”的计费理念,通过日志和统计中心精确的计算每个应用的资源消耗(包括CPU、内存、磁盘等)。
总之,SAE就是分布式Web服务的开发、运行平台。
SAE的目标和发展云计算在国外已经有4~5年的历史。
2006年,Amazon就推出了以EC2为代表的公有云计算,并且实现了大规模盈利;2008年,Google推出了以Google App Engine为代表的公有云计算。
国内的云计算一直是炒得很厉害,各大互联网公司都在宣传,但真正有技术实力做出来而又对外公开使用的少之又少。
从2004年开始,新浪就开始了私有云方向的研究和实践,以此为基础的动态应用平台目前已经支撑新浪内部的绝大部分业务。
从2008年起,新浪又启动了“浪云”的公有云计算计划,相继开发了分布式队列服务、P2P文件系统、分布式计算框架等一系列基础服务。
实际SAE就是“浪云”战略的产物。
SAE从架构设计和代码编写开始,就明确了自身的两个目标:第一,做公有云计算平台,公有云不同于私有云,更强调安全性和可靠性,这也对整体的架构设计和技术实现提出了更苛刻的要求;第二,为分布式Web服务提供一整套的解决方案,SAE争取提供开发者开发Web应用过程中所用到的所有服务。
经过技术团队一年的开发,SAE目前已经提供了十多种服务,整体上分为计算型和存储型,计算型又包括同步计算和异步计算,而存储型则分为持久化存储和非持久化存储,如表2所示。
SAE于2009年11月3日发布了Alpha1版本,2010年2月1日发布了Alpha2版本,2010年9月1日发布了Beta版本,经过将近一年的不断完善和改进,尽管SAE一直没有开放注册(实际云计算的模式也不以注册用户的规模为评价标准),但已经拥有了一批有价值的App和粉丝开发者。
截止10月1日,SAE拥有开发者4000多名,App总数3000个,活跃App将近1000个,每天独立代码部署行为超过1000次。
整体架构SAE从架构上采用分层设计,从上往下分别为反向代理层、路由逻辑层、Web 计算服务池。
而从Web计算服务层延伸出SAE附属的分布式计算型服务和分布式存储型服务,具体又分成同步计算型服务、异步计算型服务、持久化存储服务、非持久化存储服务。
各种服务统一向日志和统计中心汇报如图1所示。
7层反向代理层:HTTP反向代理,在最外层,负责响应用户的HTTP请求、分析请求并转发到后端的Web服务池上,提供负载均衡、健康检查等功能。
服务路由层:逻辑层,负责根据请求的唯一标识,快速地映射(O(1)时间复杂度)到相应的Web服务池及相应的硬件路径。
如果发现映射关系不存在或者错误,则给出相应的错误提示。
该层对用户隐藏了很多具体地址信息,使开发者无须关心服务的内部实际分配情况。
Web服务池:由一些不同特性的Web服务池组成。
每个Web服务池实际是由一组Apache Server组成的,这些池按照不同的SLA提供不同级别的服务。
每个Web服务进程实际处理用户的HTTP请求,进程运行在HTTP服务沙盒内,同时还同样内嵌运行在SAE沙盒内的PHP解析引擎。
用户的代码最终通过接口调用各种服务。
日志和统计中心:负责对用户所使用的所有服务的配额进行统计和资源计费,这里的配额有两种,一种是分钟配额,用来保证整个平台的稳定;一种是天配额,用户可以给自己设定每天资源消耗的最高上限。
日志中心负责将用户所有服务的日志汇总并备份,并提供检索查询服务。
各种分布式服务:SAE提供Web应用开发所需的大多数服务,同时支持接入第三方服务,用户可以通过StdLib(可以理解为SAE PHP版的STL)很方便地调用它们。
真正的用户代码是跑在SAE提供的Web运行环境下的,为了提供公有云计算特有的安全性,SAE设计多层沙盒来保证用户应用之间的隔离性,如图2所示。
最内层的就是用户代码,大部分PHP代码不需要做任何修改就可以跑在SAE 平台上,小部分代码需要做一些修改以适应SAE的平台特性。
这主要有两部分:第一,SAE因为安全性禁用了本地I/O,所以fwrite等函数需要修改为使用Tmpfs 读写本地临时文件或者直接通过Stor读写我们的分布式文件存储;第二,用户在SAE上不能通过Curl访问非“SAE域”的资源,用户有抓取公网资源等需求,需要修改为调用FetchURL服务。
我们提供了PHP Wrapper以方便用户的修改。
SAE Zend Sandbox为一个逻辑概念,为用户的代码运行提供良好的隔离性。
这里有两个层面,第一是通过标准的php.ini,我们设定了一些特殊配置和禁用函数;第二,为了达到一些php.ini无法实现的沙盒功能,我们对Zend解释器核做了一些改进,以便通过用户标识将资源进行隔离。
另外我们还把一些SAE 的特定服务也在Zend层做了融合。
Apache为标准的Apache Web Server,版本为2.2。
不过我们禁用了htaccess,并提供了自己实现的替换方案AppConfig。
用户可以通过类自然语言的方式编写AppConfig,如- compress: if(out_header[“Content-Length”] >= 500) compress 表示按条件启动页面压缩。
目前AppConfig提供的功能有:目录默认页面、自定义错误页面、压缩、页面重定向、页面过期、设置响应头的content-type、设置页面访问权限。
我们选择自行实现AppConfig还有一个考虑,就是因为传统Apache的htaccess因为要按目录递归方式合并配置文件,效率不能满足SAE的需求。
HTTP Server沙盒为Apache的安全可靠运行提供了多种保护功能,比如防止某个用户恶意占用连接数从而导致整个Web服务不正常。
最外层的是标准POSIX环境,目前我们的服务跑在Linux 2.6上。
上面就是对SAE整体架构的概述,接着将详细讨论我们在架构设计上的一些具体考量点。
扩展性扩展性是分布式系统的两个主要目的之一,SAE作为公有云计算,同样把服务的扩展性作为架构设计的重要指标,要求在用户增长、压力提升的情况下,可以实现自动的服务扩展,同样当压力降低时,可以将服务收缩,以节约资源,整个过程无须人工参与。
SAE人工只需做好容量规划和管理。
目前国外的公有云计算架构的扩展性主要有静态和动态两个思路。
静态扩展:用户和资源有强绑定关系。
最典型的例子为Amazon的EC2和Ruby 云计算平台Heroku,用户申请的资源和用户有严格的一对一关系,换句话说,A 用户申请的虚拟机在A退还资源前,B用户不能使用,哪怕A用户的虚拟机处于闲置状态。
动态扩展:用户和资源没有强绑定关系。
最典型的例子为Google App Engine,用户申请的资源和用户没有严格的一对一关系,换句话说,处理A用户请求的进程在处理完之后,可以马上处理B用户的请求。
两种扩展性各有利弊,静态扩展的长处是为平台提供了良好的隔离性,资源可以固定映射在某个用户下,但缺点是资源利用率不高;动态扩展的长处是资源利用率高,这样整个云计算平台的成本会很低,但缺点是对隔离性有更高的要求,因为资源可以在很短的时间被多个用户使用。
相比较,在安全性上,动态扩展要比静态扩展的技术门槛更高。
在SAE平台上,我们采用以动态扩展为主、静态扩展为辅的兼而有之的设计。
在Web计算池层是典型的动态扩展。
而在SAE的某些服务中,又是以静态扩展的方式展现,如RDC(Relational DB Cluster)分布式数据库集群,当用户申请了MySQL服务,我们就会在RDC后端根据SLA创建一主多从的DB给用户,在用户显式删除该DB前,该DB都不会被别人使用。
当然,通过RDC,任何一个用户也无需知道后端DB的实际地址,只需访问RDC统一的Host和Port即可。
高可靠性(High Availability,简称HA)HA是分布式系统的另一个主要目的,SAE同样以提供服务的高可靠性为架构设计的重要指标。
HA的实现途径主要有两个:一个是硬件保证,另一个是架构的冗余设计。
在SAE平台上,所有服务器都是新浪标准采购的硬件设备,运行在国内最好的机房内,网络资源方面则享用门户网站所使用的带宽环境。
另外,所有的硬件设备都有专门的运维部门负责,故障的响应速度和新浪内部服务一样。
在架构设计上,SAE通过对所有服务都进行冗余设计来提供服务的高可靠性。
这里的服务可以分成计算型和数据型两种类别讨论。
针对计算型服务,冗余设计就是程序在多节点运行。
我们要求SAE所有的内部代码程序要做到Stateless(无状态依赖),即无依赖部署无依赖启动,随时终止进程随时重启进程,这样一旦出现机器故障或者程序自身Bug时,所有进程能够随着硬件环境的重新恢复而在第一时间重启。
而多点执行的程序可以保证,当某些程序出现故障时,整个系统仍然能够正常提供服务。
计算型程序多点部署,会带来一致性问题,最主要的困扰就是选举问题,如何在多个节点中选出一个主节点来执行。
比如SAE上的分布式定时服务Cron,采用多点部署方式,多个计算节点相互隔离,通过时钟同步服务同时触发用户设定的定时任务,但要求只能有一个节点负责执行。
为了解决这个问题,SAE设计出了一套分布式锁算法来提供选举服务。
该算法可以在牺牲某些特定条件下的一致性来提供比Paxos算法更高的可靠性(3台机器在最高任意2台机器发生故障的情况下整个选举过程仍然正常,而Paxos算法最多容忍1台)。
目前,该算法正在申请专利,并广泛应用在SAE内部。
针对数据型服务,SAE主要是通过复制来保证服务的高可靠性。
SAE上的数据存储服务普遍采用被动复制和主动复制两种方式。