标签:
云设计模式是为解决在使用云技术时遇到的常见系统设计问题所提供的一组解决方案和设计思路。
为了创建CDP,我们回顾了许多不同云架构所创建的设计,并将这些设计按照所需解决的问题进行分类,然后基于特定的问题创建通用型的设计模式。有一些问题利用传统的数据中心技术也能得到解决,但是我们对这些问题仍然提出了云方案,主要是因为基于云的解决方案所需成本更低,并且灵活性更高。
这个测试中的云设计模式网站是众多不同架构的最新工作成果,包括Ninja of Three在建立云解决方案时的专业技术和经验的分享。
云设计模式将依据以下各项进行描述
1、基础模式
快照模式(数据备份):主要解决基本的磁盘数据备份问题,将EBS的快照存储在S3上,实现自动化、高持久、容量无限制的数据备份。
章模式(服务器复制):主要解决新建服务器的问题,通过捕获EC2某一状态时的AMI,实现自动化创建所需要的实例,而无需手动进行各种复杂配置操作。
纵向扩展模式(动态服务器规格伸缩):主要解决服务器规格调整的问题,通过CloudWatch监控资源利用率,一旦规格不够或过大就利用管理控制台对实例类型进行调整。
按需磁盘模式(动态地增加/减少磁盘容量):主要解决磁盘容量不足的问题,基于原EBS的快照来创建新的EBS卷,从而实现磁盘空间快速扩容。
2、提高可用性的模式
多服务器模式(服务器冗余):主要解决服务器失效的问题,利用ELB绑定多个EC2实例(基于印章模式创建),轻松快速地实现服务器冗余。
多数据中心模式(数据中心级别的冗余):主要解决数据中心级别的失效问题,利用多服务器模式的思想,将冗余实例置于不同的可用区域(AZ),从而实现数据中心级别的冗余。
浮动IP模式(浮动的IP地址):主要解决服务器的更换问题,通过将弹性IP(EIP)与新实例进行绑定,实现快速替换服务器。
深度健康检查模式(系统健康检查):主要解决检查系统运行状态的问题,利用ELB的健康检查功能对系统整体运行状态进行检查。
3、处理动态内容的模式
横向扩展模式(动态地增加服务器数量):主要解决应对网络负载变化的问题,通过CloudWatch进行指标监控,利用ELB进行负载分配,由Auto Scaling实现自动伸缩服务器规模数量(基于印章模式)。
克隆服务器模式(克隆一个服务器):主要解决初始规模较小的系统如何应对网络负载变化的问题,通过使用具有同步机制的AMI创建新实例,并结合使用ELB,从而在无需修改现有系统的情况下实现横向扩展(基于印章模式)。
NFS共享模式(使用共享的内容):主要解决多个服务器间的数据同步与共享问题,通过建立一个存储共享内容的NFS服务器,使横向扩展服务器都引用NFS服务器中的内容,从而实现多个服务器间的内容同步(涉及横向扩展模式)。
NFS复制模式(复制共享的内容):主要解决多个服务器间数据同步与共享的性能提升问题,利用NFS服务器存储共享内容,新启动的EC2实例将从NFS服务器拷贝内容至自带的EBS中,从而通过直接引用EBS上的内容来避免NFS服务器成为性能瓶颈或造成单点故障(源于NFS共享模式)。
状态共享模式(共享状态信息):主要解决服务器状态信息的继承问题,利用数据存储代替web/AP服务器来对状态信息进行保存与更新,从而保证状态信息的继承(涉及横向扩展模式)。
URL改写模式(保存静态内容):主要解决对网站静态内容的大量访问的问题,通过将一部分静态内容保存于S3中,并将原网页中静态内容的URL改写为S3或CloudFront上的地址,从而实现高效的数据传输,并降低服务器的负载。(涉及网络存储模式)
改写代理模式(为URL的改写设置代理):主要解决大量访问网站静态内容时对系统进行修改的问题,利用代理服务器来修改访问地址,从而无需修改现有系统即可利用S3或CloudFront来分配静态内容(URL改写模式的优化)。
高速缓存代理模式(提供高速缓存):主要解决服务器在高负载量下性能不足的问题,通过在web/AP服务器上游增设缓存服务器来提高系统性能。
预定的横向扩展模式(按预定增加或减少服务器的数量):主要解决负载量骤增而导致服务器不能及时响应的问题,通过预先设置的时间来执行横向扩展,从而实现及时处理负载的骤增(基于横向扩展模式)。
4、处理静态内容的模式
网络存储模式(使用高可用性的网络存储):主要解决网站大文件的传输问题,通过将静态的大文件保存在S3中,使用户可以直接从S3上下载或共享内容,从而降低服务器的负载量(可结合URL改写模式)。
直接寄存模式(使用网络存储直接寄存):主要解决访问量骤增以及服务器负载过大的问题,通过将静态内容传至S3上,使S3托管网站并进行内容的分发,从而实现内容的快速传递并最大程度地降低服务器负载。
私有分配模式(给特定的用户分发数据):主要解决网络存储中的访问控制问题,通过为内容对象创建有限制的URL,使用有限制的URL实现对内容访问的控制(基于网络存储模式)。
高速缓存分配模式(将数据放置在离用户地理位置较近的地方):主要解决远距离数据传输的延迟问题,使用CloudFront云推送服务,利用缓存服务器(“边缘服务器”)实现全球范围的高效内容分发。
重命名分配模式(保证无更新延迟的分配):主要解决主服务器和缓存服务器间的数据同步问题,通过将原始内容的URL更新为新内容的URL,实现缓存服务器能最快地传输更新内容(基于高速缓存分配模式)。
5、上传数据的模式
写代理模式(向网络存储高速上传数据):主要解决向网络存储中写大文件时性能较低的问题,通过使用“上传服务器”将内容间接上传至S3,从而提高写性能。
存储索引模式(增加网络存储的效率):主要解决提高网络存储的检索性能的问题,通过将S3中的元数据保存至具有高检索性能的KVS中,利用KVS的检索结果从S3中获取数据,从而提升网络存储的检索性能。
直接对象上传模式(简化上传过程):主要解决大量数据上传而导致的服务器负载过大的问题,通过创建执行上传的HTML表单将数据内容直接上传至S3中,从而降低服务器端负载。
6、关系型数据库的模式
数据库复制模式(复制在线数据库):主要解决数据库容灾备份的问题,通过将主备数据库存放于不同的区域或地区,从而在失效或灾难发生时,仍能保证业务的连续性。
读复本模式(通过读复制达到负荷分配):主要解决数据库访问造成的性能瓶颈问题,通过为主数据库创建若干只读副本,使应用直接从副本中读取数据,从而提高数据库的读取性能。
内存中DB缓存模式(缓存高频数据):主要解决数据库读取性能不足的问题,利用数据缓存服务,常用数据将会被保存在缓存服务器中,通过提高数据库读取性能来提升系统的整体性能。
分片写模式(提高写的效率):主要解决数据库写入性能不足的问题,利用多个具有相同结构的数据库服务器同时进行写数据,从而提高数据库的写入速度。
7、批处理的模式
队列链表模式(系统的松耦合):主要解决多任务环境下系统间联系过于紧密的问题,利用简单队列服务,通过消息传递来转换工作,从而实现系统的松散耦合与高可靠性。
优先级队列模式(改变优先级):主要解决大量工作任务的优先级管理问题,通过对不同优先级的任务准备不同的消息队列,从而实现按优先级来处理多个任务(基于队列链表模式)。
工作观察者模式(监控工作并增加/删减服务器):主要解决批处理服务器按需动态伸缩问题,通过使用CloudWatch监控队列消息数量,并将消息数量作为指标,在必要时触发Auto Scaling来实现自动增加或减少批处理服务器的数量(涉及横向扩展模式)。
预定的自动伸缩模式(自动地启动和关闭批次服务器):主要解决批处理服务器资源利用率过低的问题,通过设置Auto Scaling在指定时间启动所需的批处理服务器,并在批处理结束后终止不需要的实例,从而提高批处理服务器的利用率并降低使用成本(基于印章模式、类似预定的横向扩展模式)。
8、操作和维护的模式
引导程序模式(自动获取启动设置):主要解决机器镜像的更新问题,通过创建一个包含引导程序的AMI,在实例初始化时自动获取所需的参数或程序包,实现动态地创建实例,从而无需在打补丁或更新实例时进行AMI的重建(印章模式的优化)。
云DI模式(对于那些经常更新的部分进行外部配置):主要解决服务器初始化的配置问题,通过在EC2实例启动时添加标签信息,实现灵活地初始化服务器(基于印章模式、引导程序模式)。
栈部署模式(创建设立群组服务器的模板):主要解决大量虚拟机的部署操作问题,利用云编排服务,为启动一组服务器设置一个模板,通过使用一次性启动所有服务器,实现整个系统的快速创建或删除(基于印章模式创建)。
服务器交换模式(转移服务器):主要解决服务器失效后的快速恢复问题,通过将故障服务器中的EBS挂接至新启动的实例上,实现快速恢复服务器失效前的状态(基于印章模式,常与浮动IP模式结合)。
监控集成模式(监控工具的集中化):主要解决系统的集中化监控问题,通过调用云监控服务提供的API,从云监控系统获取信息,实现在自己的监控系统中进行集中化的控制。
网络存储归档模式(归档大量数据):主要解决大量日志和备份文件的存储问题,通过将日志或备份文件存储至S3上,从而无需担心磁盘失效或空间不足带来的问题。
权值转换模式(使用权值轮询调度法转换):主要解决系统环境的迁移问题,利用Route 53中的“加权轮循调度”功能,在域名不变且不关闭系统的前提下,实现系统的平稳迁移。
混合备份模式(利用云备份):主要解决构建灾备系统代价过高的问题,通过将内部系统与AWS云相连来进行备份,从而构建一个高持久性的DR系统。
9、网络的模式
按需NAT(network address translation)模式(在维护时期改变网络设置):主要解决NAT服务器资源闲置的问题,通过在VPC中创建NAT实例,按需要启动或终止NAT实例,从而实现NAT服务器资源的利益率并降低使用成本。
Backnet模式(建立管理网络):主要解决网络访问接口的管理问题,通过使用两个不同的虚拟网络接口,对公共网络接口与管理网络接口进行区分,从而降低网络管理的风险。
功能型防火墙模式(多层访问控制):主要解决防火墙的大量配置与维护工作的问题,利用网络安全组的功能,将集群服务器按功能进行分组,实现防火墙按组进行集中控制。
操作型防火墙模式(通过单个功能控制访问):主要解决针对多个组织的系统访问控制问题,利用网络安全组的功能,为不同的组织分别创建安全组,实现防火墙按不同组织进行集中化控制。
多路负荷平衡模式(设置多个负载平衡器):主要解决多种设备访问同一网络的设置操作问题,通过指定多个具有不同设置的虚拟负载均衡器,实现不同设备的访问管理。
WAF代理模式(有效地利用一个昂贵的Web应用防护系统):主要解决网络应用防护系统难以应用的问题,通过在EC2和ELB之间设置WAF代理服务器,轻松实现WAF的应用。
CloudHub模式(设置VPN地址):主要解决多站点间构建VPN连接的问题,利用AWS提供的VPN功能,为不同的站点建立VPN并路由至VPC,实现在多站点间轻松构建VPN连接。
标签:
原文地址:http://blog.csdn.net/qxk2001/article/details/51643574