拆分不同的东西(Y轴原则)
有时该原则被称为通过服务或资源开展扩展,重点是扩展数据集合、事务和程序员小组。特别大的数据集合,数据间关系并不重要口大型的复杂系统,必须要特别扩展编程资源。
用动词拆分操作,用名词拆分资源,或者兼而有之口依据动词/名词方法的定义,拆分服务和数据。不仅能有效地扩展事务,还能有效地扩展与事务相应的大型数据集合。Y轴拆分,或者说面向数据服务的拆分,可以有效地扩展事务、大型数据集合,并且有助于故障隔离。
抛开关于面向服务的架构(SOA)和面向资源的架构(ROA)这两个概念的争论,深入清楚它们的基本前提就会发现,它们至少有一点是相同的,即都需求架构师和程序员考虑架构中的职责拆分。大体上便是采用动词(服务)和名词(资源)的概念来实现拆分。即扩展立方上的第二个轴,采用的便是这种方法。简而言之,是通过拆分站点中的多种基本功能和数据,从而实现扩展。采用简单方法便是把产品拆分为名词和动词,或者二者的组合。
最先,咋们看一看怎么用动词拆分站点。假如咋们的站点是相对简单的电子商务站点,那么可以用动词把它拆分为注册、登录、搜索、浏览、查看、加入购物车、购买。在这些事务中,每一个事务所需要要执行的数据可能都与其他事务必须要的大不相同。例如,可能有人会说,注册和登录必须要的数据是相同的,但其实它们都必须要一部分特有的数据。例如,注册可能必须要检查该顾客选择的ID是不是已经被别人选用了,而登录时则无需清楚其他顾客的ID。注册时可能必须要把大批的数据写入长久数据存储中,而登录则是一种验证顾客身份的只读应用。注册可能必须要顾客存储很多识别个人身份的信息,包含信用卡号等,而在顾客只是想建立登录连接时则无需浏览这些信息。
在研究搜索和登录这两种截然不同基本功能时,依据动词拆分的扩展方法的不同之处以及提供的好处就更加明显了。在登录时,咋们关心的通常是验证顾客身份,可能会建立某些会话(这里咋们采用术语会话,而不是采用状态)。登录基本功能关心的是顾客,因此必须要缓存顾客数据并与之开展交互操作。另一方面,搜索关心的是查找数据项,而最重要的是顾客的意图(通常是顾客在搜索框内输入的搜索字符串、查询或搜索项)以及咋们存储在目录中的目录项。拆分这些数据集,可以使咋们在系统有限的内存中缓存越来越多的数据,而且,由此产生的高缓存命中率也会加快事务的处置。在后端的长久性系统(如数据库)中标分数据,就可以在这些系统中分配越来越多的专用内存,加速对客户(应用服务器)请求的响应。由于更好地利用了系统资源,这两个系统都会相应地更快。显然,这是拓展这些系统最简单的方法,受内存限制地更少。此外,通过采用X轴扩展)相同的方法拆分事务,Y轴的事务扩展能力也增加了。
稍等!假如咋们想把顾客和产品信息合并在一起,例如向客户推荐产品,又该怎么办呢?注意,这里用了新的动词一一推荐。这是另一种必须要拆分数据和事务的情况。咋们可能会加入一种推荐服务,依据顾客过去的购买行为,与具有相似购买行为的顾客开展异步评估。这样子可能会把数据移植到登录基本功能或搜索基本功能(当顾客与系统交互时就会向他显示)。或者也可能是顾客浏览器发出的一个单独的同步伐用,显示在专门分配给这样的推荐调用的区域。
现在可以考虑如何用名词来拆分项了。还是拿电子商务的例子来说,咋们可以标识一部分最终会对其开展操作的资源(而不是表示要执行的操作的动词)。咋们可以认为电子商务站点是由产品目录、产品库存清单、顾客账户信息、市场营销信息等构成的。采用名词拆分的方法,可以依据这些分类拆分数据,然后定义一套高级的原函数,如创建、读、更新和删除等,对这些原数据开展操作。
Y轴拆分不仅适用于扩展数据集合,还适用于扩展代码库。由于服务和资源都被拆分了,那么执行的操作和执行它们所必需的代码也会被拆分。这就意味着可以把开发复杂系统的大型编程小组拆分成每个子系统的专家组,程序员不必再担心自个必须是网站开发系统每一部分的全能专家了。当然,由于可以拆分服务,故此扩展事务也就相当简单了。
本文章由新概念互动原创,如没特殊注明,转载请注明来自:http://www.jianzhan0.com/jingyand/72164.html