AllScale公司的数据架构师认为数据架构将在三个维度上受到限制,即交易量的增长、第23章所做的扩展应用的决策以及客户和产品的增长。因此,他们需要依靠AKF数据库扩展立方的所有坐标轴。
架构师团队决定划分站点的功能,以便适应应用复杂度的增长。也许你还记得,像浏览、搜索、产品目录上传、存货管理等无需知道客户特定的信息就能执行的动作,都可以成为站点上的一个功能分支,具有自己的代码库。决定把这些功能放入泳道,每个泳道都需要具有它那部分功能所需的数据。架构师团队认识到,要这样做,就要修改数据架构的形式,有些数据元素要被复制到整个架构中。要确保对于任何数据元素都有且只有一个节点,用于存放最近最新的数据副本。在理想状况下,架构师团队把数据的更新放在一个泳道中,同时在客户交易之外,采用某种形式的异步更新方法,来更新架构中的其他部分中的数据。所有的客户信息都要被划分到N个豆荚中,其中N是个可配置的参数。每个豆荚中会驻留大约1/N的客户。这是根据客户进行的Z轴划分。在每个Z轴划分中,架构师团队准备对代码和执行代码所需的数据进行Y轴划分。登录/登出是一个功能,支付是一个功能,账户状态和汇总是一个功能,支持这些功能所需的数据也会随应用作出相应的划分。每个Y轴划分的泳道只需了解1/N的客户,因此,需要缓存的数据(如登录信息)就大大减少了,缓存速度就更快了。
最后,架构师团队在所有划分中都应用了X轴划分,以便扩展这些划分中的交易量。
搜索这个功能引起了AlScale的数据和软件架构师的担心,所以最终他们决定对这个领域给予更多的关注。他们打算利用扩展立方的X轴、Y轴和Z轴来满足搜素的需求,让最终用户非常快地就能得到搜索结果。把搜索功能单独划分出来,就是Y轴划分了,所以我们接下来要关注的是X轴和Z轴划分。对于下面的讨论。
架构师团队决定采用聚合器来加速处理搜索请求。这些聚合器要负责处理交易量的增长,每个聚合器都是其他聚合器的克隆品,这就创建了一个X轴实现。最终请求被发送给N个系统,每个系统中存放了1/N的要销售的产品,N是应用到产品目录上的模数。这种N项划分就是一种根据产品编号进行的Z轴划分。此外,每个Z轴划分中还有M个克隆的数据集,这样可以应对交易量的增长。
一个搜索请求可以经过负载均衡器被分配到任何一个聚合器上,然后这个聚合器会划分出N个单独的请求,每一个对应于N个产品数据库层中的一个。这些产品数据库中的每一个都有1/N(产品编号对N取模)的数据。接下来,每个数据层中都有M个克隆品,它们是这1/N数据的副本,对这个数据层的请求会被负载均衡地分配到这M个副本中的一个上。随着每个数据层返回一个结果,聚合器会把这些数据元素编辑成一个完整的列表,完成后就把这个排列好的列表发送给请求者。这N个Z轴划分返回结果都非常快,因为数据可以驻留在内存中,而且每个数据库只查找1/N的数据。由于有多个聚合器,而且N个Z轴划分中都有M个X轴副本,所以这个系统是完全冗余的。只要增加聚合器和网站制作数据的X轴副本,这个系统就能轻松地扩展交易量。如果必要,当聚合器一次需要同太多Z轴划分交互时,还可以增加聚合器的聚合器。
>>> 查看《数据库扩展立方在电子商务网站平台的实际应用》更多相关资讯 <<<
本文地址:http://www.phpweb.com.cn/news/html/3897.html