云设计模式
文章平均质量分 72
牛知道
国内首个商用云操作系统(BingoCloudOS)是我的团队创造的
展开
-
【CDP-云设计模式】第3章,4.深度健康检查模式(Deep Health Check Pattern)
要解决的问题:在分配负载进程时,可以在负载均衡器中使用健康检查功能来评估绑定于负载均衡器上的服务器状态。例如:在一个包含web服务器、代理服务器、应用程序服务器和数据库服务器的配置中,让我们考虑在web服务器之前使用负载均衡器的情况。然而,负载均衡器不能识别后端服务器状态,例如代理服务器、应用程序服务器和数据库服务器。原创 2016-07-11 08:37:22 · 773 阅读 · 0 评论 -
【CDP-云设计模式】第4章,8.缓存代理模式(Cache Proxy Pattern)
要解决的问题:当使用多个web/AP服务器来处理高负载量时,成本也相应增加了。如果预算比较紧张的话,则需要考虑不用增加web/AP服务器数量的技术。原创 2016-07-19 21:21:49 · 750 阅读 · 0 评论 -
【CDP-云设计模式】第7章,3.内存中DB缓存模式(Inmemory DB Cache Pattern)
要解决的问题:大部分的数据库工作负载在于读数据。由此,可以通过提升数据库的读取性能来全面提升系统性能。原创 2016-08-15 15:54:26 · 597 阅读 · 0 评论 -
【CDP-云设计模式】第6章,2.存储索引模式(Storage Index Pattern)
要解决的问题:因为将数据分布在不同的位置,所以就持久性和可用性而言网络存储是非常棒的选择。然而由于网络存储是通过网络访问的,所以较之本地访问,响应通常是很慢的。在未能提供高速搜索功能的情况下,当特定用户检索一个数据表或搜索指定日期范围的数据时,需要在应用程序端采取一些措施原创 2016-08-03 21:20:42 · 512 阅读 · 0 评论 -
【CDP-云设计模式】第6章,1.写代理模式(Write Proxy Pattern)
要解决的问题:通常,对于读取信息网络存储具有极大的容量和极高的数据持久性。然而,为了保证冗余,数据不仅要被写在多处,而且客户端之间的通信是通过HTTP协议的。结果导致写的速度比较慢。因此,当向网络存储写大文件时会出现性能问题原创 2016-08-03 21:18:16 · 591 阅读 · 0 评论 -
【CDP-云设计模式】第4章,9.预定的横向扩展模式(Scheduled Scale Out Pattern)
要解决的问题:当处理构建在云环境中的web服务的大流量拥塞时,横向扩展模式是很有效的。然而,在访问量迅速增加(例如在不到5分钟内流量翻倍)时,通过监测负载状态来手动添加虚拟服务器或根据虚拟服务器的负载状态自动增加实例可能都不能满足需求原创 2016-07-21 18:48:16 · 566 阅读 · 0 评论 -
【CDP-云设计模式】第6章,3.直接对象上传模式(Direct Object Upload Pattern)
要解决的问题:许多用户会上传大数据文件到图片与视频分享网站。某些情况下,甚至是一些中等型规模的网站,在上传过程中会出现服务器端高负荷(尤其是网络负载),这时就需要一个虚拟服务器专门用于上传原创 2016-08-04 20:52:22 · 552 阅读 · 0 评论 -
【CDP-云设计模式】第5章,1.网络存储模式(Web Storage Pattern)
要解决的问题:从单个web服务器传输大文件(如视频、高清图片和压缩文件)时会带来网络负载问题。在这种情况下,可以通过多个web服务器来分配负荷以减小网络负载压力。但是由于需要将大文件放置在多个服务器上,出于对成本的考虑这又是一个问题。原创 2016-07-22 09:31:07 · 530 阅读 · 0 评论 -
【CDP-云设计模式】第5章,5.重命名分配模式(Rename Distribution Pattern)
要解决的问题:如果使用缓存分配模式来传输内容,当主服务器上的文件更新后,边缘服务器(缓存服务器)上的数据直到超时才会被更新。这样不能实现在给定的时间内进行更新原创 2016-08-02 13:01:58 · 503 阅读 · 0 评论 -
【CDP-云设计模式】第7章,1.数据库复制模式(DB Replication Pattern)
要解决的问题:将数据保存到数据库这一基本存储技术对系统来说至关重要。近来,数据库备份功能渐渐被广泛地使用。虽然相对普遍地实现了复制,但在过去,由于费用关系,这项功能被限制于已有的数据中心。然而,考虑整个数据中心出现故障的情况也很重要。(大型灾难,例如日本东部大地震,已经导致了这种情况的发生)原创 2016-08-07 19:24:39 · 969 阅读 · 3 评论 -
【CDP-云设计模式】第7章,2.读副本模式(Read Replica Pattern)
要解决的问题:在数据库访问频率变高而导致数据库服务器不堪重负时,通常会对服务器规格进行升级(也就是服务器的纵向扩展)。当纵向扩展很难时,你可以采用横向扩张来水平分布数据库服务器;然而,这种方法一向非常困难。对数据库服务器来说,一般读数据的比例是多于写数据的,所以总体来说应该主要提升系统的读性能原创 2016-08-08 10:26:46 · 1051 阅读 · 0 评论 -
【CDP-云设计模式】第7章,4.分片写模式(Sharding Write Pattern)
要解决的问题:提高关系型数据库管理系统(RDBMS)的数据写入速度极其重要,但是这非常困难。当然,可以使用多个数据库服务器来实现通过纵向扩展才能达到的性能,但是怎样做到这一点是相当重要的问题原创 2016-09-16 22:03:13 · 884 阅读 · 0 评论 -
【CDP-云设计模式】第8章,1.队列链表模式(Queuing Chain Pattern)
要解决的问题:如果对运行在多个系统上的相关进程(例如,在图像处理过程中,上传、存储、图像转码、创建缩略图等等顺序操作)执行顺序处理,往往会因为系统间联系过于紧密而造成性能瓶颈。当出现故障时,这种紧密的联系同样会使恢复操作变得复杂。所以,考虑到性能和维护的需要,应尽可能地使系统实现松耦合原创 2016-09-16 22:16:02 · 1063 阅读 · 0 评论 -
【CDP-云设计模式】第8章,2.优先级队列模式(Priority Queue Pattern)
要解决的问题:有时会有大量工作需要处理,而且这些工作可能需要重新定义优先级。例如,未付款用户和订阅用户(如截止出版时间)可享受的不同级别的服务之间存在区别,举个例子,从web浏览器上传出版物的描述文件。当用户上传一个描述文件时,例如对于出版物所执行的转换过程在系统端表现为一批进程,转换结束后文件就被发布了。那么此时给这些批处理进程指定优先级对于各类用户来说就显得十分重要了原创 2016-09-20 08:59:42 · 1146 阅读 · 0 评论 -
【CDP-云设计模式】第8章,3.工作观察者模式(Job Observer Pattern)
要解决的问题:在为批处理进程分配负载时,可以通过使用队列来控制工作请求,被列队的工作请求将被多个批服务器平行处理。然而,如果不采用云技术,批处理服务器的创建数量将由高峰请求量决定,那么在高峰期外的其他时段多余的批处理服务器将造成资源浪费,这不利于经济效益。除此之外,当出现无法预估的大量请求负载时,批处理系统也不能及时响应。原创 2016-10-02 00:05:35 · 712 阅读 · 0 评论 -
【CDP-云设计模式】第8章,4.预定的自动伸缩模式(Scheduled Autoscaling Pattern)
要解决的问题:在许多系统中,批处理进程是在特定的时间被执行,通常在持续运行的服务器中会使用调度程序(例如UNIX中的cron)。然而,执行批处理的时间其实很短,所以在其他时段就造成了服务器资源的浪费,而导致较低的成本效益。我们要解决的问题就是如何在这种场景下有效利用批处理服务器资源原创 2016-10-03 09:14:43 · 944 阅读 · 0 评论 -
【CDP-云设计模式】第4章,7.改写代理模式(Rewrite Proxy Pattern)
要解决的问题:将静态内容放在网络存储或内容分发服务上是一个处理负载的技术。然而,这个技术要求你改变网络存储上静态内容的访问地址,并且需要对现有系统进行修改,例如重写包含静态内容的URL地址或是为web服务器设置过滤器(filters)原创 2016-07-19 21:18:52 · 696 阅读 · 0 评论 -
【CDP-云设计模式】第3章,3.浮动IP模式(Floating IP Pattern)
要解决的问题:当你对服务器进行打补丁或升级(来增加处理能力)时,你需要停止服务器。由于停止服务器会导致服务的中断,所以你需要将停机时间降至最低。对于网络服务器,你可以使用DNS来置换服务器。然而,在这种情况下,通常的置换时间不能缩短至生存时间(TTL)值以内,所以这就不适合即时交换。原创 2016-07-07 21:51:16 · 1270 阅读 · 0 评论 -
【CDP-云设计模式】第4章,6.URL改写模式(URL Rewriting Pattern)
要解决的问题:当由多个虚拟服务器提供web服务时,如果访问量变得很大,将通过增加虚拟服务器数量或提高虚拟服务器规格来处理负载。然而,大多数访问都是对静态内容的请求,所以如何分配访问静态内容变得至关重要。原创 2016-07-18 08:31:39 · 906 阅读 · 0 评论 -
【CDP-云设计模式】第4章,1.横向扩展模式(Scale Out Pattern)
要解决的问题:为了应对大流量,通常会需要一个高配置的Web服务器。这种使用更高配置的设备来提高处理性能的方法称为“纵向扩展”。然而这种方法有一些问题。一般来说,高性能服务器的配置越高,每个单元的处理成本就越高。而且大家都知道服务器的规格是有限制的——它的性能不可能无限制地提高。原创 2016-07-12 21:21:44 · 720 阅读 · 0 评论 -
【CDP-云设计模式】第4章,2.克隆服务器模式(Clone Server Pattern)
要解决的问题:横向扩展架构是一项常见技术,但是在那些开始于小规模的系统中,其架构往往不会使用多个服务器来提供多服务器服务。 在这种情况下,采取措施来处理增加的负载可能非常耗时。原创 2016-07-12 21:25:45 · 611 阅读 · 0 评论 -
【CDP-云设计模式】第5章,2.直接托管模式(Direct Hosting Pattern)
要解决的问题:在短时间内一般很难通过增加机器数量来应对突发性的访问量增加。尽管可以考虑通过预测访问量的方式增加服务器来解决这一问题,但出于成本考虑这样增加服务器数量耗费很大原创 2016-07-25 09:42:22 · 650 阅读 · 0 评论 -
【CDP-云设计模式】第5章,3.私有分配模式(Private Distribution Pattern)
要解决的问题:网络存储具有高可用性和高持久性,并且目的在于传输大文件以及应对频繁访问内容文件。然而,当给指定用户传输内容时,必须与内容创建程序的验证系统相配合。这就使得只利用网络存储很难实现访问控制。原创 2016-07-25 09:46:39 · 578 阅读 · 0 评论 -
【CDP-云设计模式】第2章,4.按需磁盘模式(On-demand Disk Pattern)
要解决的问题:提前预测出系统所需的磁盘容量是很难的。所以,通常在系统部署时,设计者会提供一个预计几年内所需的磁盘容量,再乘以一个安全系数来确定最终值。磁盘不仅仅现在不能被完全使用,实际上,也许很多年都将不能被完全利用。然而,却要为这些磁盘付全部的费用。原创 2016-07-04 18:21:57 · 853 阅读 · 0 评论 -
【CDP-云设计模式】第5章,4.高速缓存分配模式(Cache Distribution Pattern)
要解决的问题:鉴于计算机和移动设备的日益普及,越来越多的用户访问网络内容的所处位置不断扩大。除此之外,现在图片和视频数据越来越高清,所以数据规模也变得十分庞大。从用户体验的角度来说,你必须将数据更快更稳地提供给用户,但是现今的技术仍然不足以满足需求。例如,当从日本访问一个在美国东海岸的服务器至少会有200ms的通信延迟。因此,仅仅只有一个源节点用来传输内容将会给用户体验带来负面影响。原创 2016-07-27 09:46:05 · 565 阅读 · 0 评论 -
【CDP-云设计模式】第4章,3.NFS共享模式(NFS Sharing Pattern)
要解决的问题:当通过多个服务器分配负载时内容同步是必须的。虽然定期地从主服务器到从服务器单向同步很简单,但在使用定期同步时会有一个延时问题。不仅如此,如果一条记录或文件在从服务器被修改,这仍然会有一个问题就是如何将这个改变反映至主服务器和其他的从服务器。原创 2016-07-16 15:31:47 · 923 阅读 · 0 评论 -
【CDP-云设计模式】第4章,4.NFS复制模式(NFS Replica Pattern)
要解决的问题:当多个服务器使用NFS来共享文件时,如果共享文件的服务器数量增加并且访问频率过高,NFS部分的性能损失将会变得非常严重。原创 2016-07-16 15:34:31 · 788 阅读 · 0 评论 -
【CDP-云设计模式】第4章,5.状态共享模式(State Sharing Pattern)
要解决的问题:当生成动态内容时,常常需要使用包含用户特有的状态信息(HTTP会话信息)。然而,当利用负载均衡对多个网站/应用服务器的运行进行控制时,如果让每一个服务器都各自保存状态信息,那么一旦某个服务器失效或者人为地减少服务器数量,这就会导致状态信息的丢失。原创 2016-07-16 15:37:47 · 584 阅读 · 0 评论 -
【CDP-云设计模式】第3章,1.多服务器模式(Multi-Server Pattern)
要解决的问题:你可以使用多种方法提高不同层面上的可用性。例如,你可以在磁盘层设置RAID,或是在网络层提供备用线路。这同样也适用于服务器,你可以使用多个物理服务器进行冗余。然而,要知道仅仅是简单地增加服务器数量不一定能建立冗余的结构。因为提供冗余所需的材料,如物理服务器和负载均衡器,这涉及相当大的费用,有时出于成本考虑,最好的方式就是不管它。原创 2016-07-06 16:56:26 · 785 阅读 · 0 评论 -
【CDP-云设计模式】第2章,3.纵向扩展模式(Scale Up Pattern)
要解决的问题:通常在系统开发阶段是很难估计出在部署之后需要多少服务器资源。 如果在部署后服务器资源不够,那么服务器将不能很好地执行或不能跟上批处理过程。另一方面,过多的服务器资源需要过多的投资。而这有可能带来损失。原创 2016-07-04 18:17:44 · 1397 阅读 · 0 评论 -
【CDP-云设计模式】第2章,2.印章模式(Stamp Pattern)
要解决的问题:虚拟服务器是不依赖于硬件的,就是说,它是一个服务器软件。实际上,多个虚拟服务器跑在一个物理服务器之上。物理服务器不需要任何重大改变,虚拟服务器就能像一台物理机一样工作。虽然使用虚拟机的时机显著增加,但使用虚拟机时要求的设置操作(例如,设置操作系统以及安装设置应用程序)仍要耗费大量人力、时间和成本。原创 2016-07-03 19:22:58 · 827 阅读 · 0 评论 -
【CDP-云设计模式】第2章,1.快照模式(Snapshot Pattern)
要解决的问题:如果数据安全对你来说是头等大事,这意味着你必须对数据进行备份。例如,你可能会使用磁带在另一个地区来备份数据。然而,使用磁带备份会带来很大的支出,包括更换和保存磁带的费用,而且这些繁杂的操作很难自动化。这时你或许可以购置昂贵的设备来提供一定程度的自动化,但之后仍会面临磁带容量有限以及很难实现完全备份等问题。原创 2016-07-03 10:25:36 · 1072 阅读 · 0 评论 -
【CDP-云设计模式】第1章,概念及分类
CDP(Cloud Design Pattern)云设计模式是为解决在使用云技术时遇到的常见系统设计问题所提供的一组解决方案和设计思路。 为了创建CDP,我们回顾了许多不同云架构所创建的设计,并将这些设计按照所需解决的问题进行分类,然后基于特定的问题创建通用型的设计模式。有一些问题利用传统的数据中心技术也能得到解决,但是我们对这些问题仍然提出了云方案,主要是因为基于云的解决方案所需成本更低,并且灵活性更高。原创 2016-06-12 08:31:08 · 6186 阅读 · 0 评论 -
【CDP-云设计模式】第3章,2.多数据中心模式(Multi-Datacenter Pattern)
要解决的问题:虽然可以使用多服务器模式来提高在服务器失效情况下的可用性,但它不能处理数据中心级别的失效(例如电力供应中断、地震、网络故障等等)。当考虑到数据中心级别的失效情况时,就需要使用多个数据中心。然而,要保证和维护相距足够远的多个数据中心,以及为系统提供冗余而去购买物理设备,这些都要耗费极大的成本。除此以外,采购和装配也需要花费大量时间。从成本效益的角度考虑,这些通常难以达到。原创 2016-07-06 20:40:17 · 1327 阅读 · 0 评论 -
【CDP-云设计模式】第9章,1.引导程序模式(Bootstrap Pattern)
要解决的问题:经常会争论这样一个问题,当由机器镜像创建虚拟服务器时,即使用印章模式时,就操作效率而言,应该多久保存一次镜像。 在印章模式中,您可以在所有配置完成(从中间件到应用)之后,中间件和应用被启动并运行时创建机器镜像。虽然这种模式可以极快地启动虚拟服务器,但是如果您需要升级其中的一个中间件产品,或者您需要变更应用的某项设置,您就需要重新创建机器镜像。原创 2016-10-07 15:13:46 · 959 阅读 · 0 评论