《企业级容器云架构开发指南》—2.1.2 如何利用扩展立方体切分应用和数据

举报
华章计算机 发表于 2019/05/30 16:46:42 2019/05/30
【摘要】 本书摘自《企业级容器云架构开发指南》一书中的第2章,第2.1.2节,编著是闫健勇 龚 正 吴治辉  屈晓萌 王健飞 王 伟 刘晓红。

2.1.2 如何利用扩展立方体切分应用和数据

谈到如何切分应用,免不了要谈扩展立方体。拓展立方体并不是特定应用于软件的,而是全行业很多领域都可以适配。

图2-2是一个三维轴线立方体,我们将3个轴线的交点称为初始点,其坐标值x=0、y=0和z=0,每个轴线描述扩展性的一个维度。坐标原点(0,0,0)代表任何系统、流程、产品中最小的可扩展性。

image.png

举例来说,如果要在一座大厦里创建一个打字社,随着业务量的扩大,如何进行扩展?如图2-2所示,可能最初只有一个店员,业务量增大后又招聘了几个店员,这就是按照X轴进行扩展,他们的工种、工作是一样的,这是一种完全的克隆。Y轴是什么?当业务继续增大时,我们会发现,信函、合同、法律文件等所需要的模板以及上下文背景是不同的,可能还需要熟悉相关文案,那么我们就会发现由一个人承担上述全部工作是不现实的,因为一个人不可能具备全部的业务技能,这就需要按照工作进行分类,把人分成几组,不同的人分别负责信函、合同、法律文件,这就是按照Y轴进行切分扩展。随着业务的发展,我们会发现诸如领导的任务需要优先安排,那么又需要添加人手专门服务领导或VIP客户,这实际上就是按照业务来源进行切分,也就是按照Z轴进行切分。所以无论做什么事,涉及如何扩展、增大规模,如何应对持续加大的业务量时,都可以用这个立方体进行适配。

回到微服务领域,如何将扩展立方体应用于切分应用就比较好理解了,如图2-3所示。

X轴表示把相同的数据或镜像分散在多个实体上,通常依赖于复制,并对节点数设限制。X轴的分割往往是最廉价的分割实施,但它对客户或数据增长的扩展没有帮助。

Y轴表示基于服务、资源或数据关系的意义分离和分散数据。Y轴分割有助于帮助解决数据扩展问题,并且有助于故障隔离,但对交易增长的扩展没有X轴分割有效,并且比X轴分割的实施成本要高。

Z轴表示基于请求的属性分割数据。例如,基于客户或产品ID分割数据,一般通过查找获取分割数据。Z轴分割有助于交易增长和数据增长的可扩展性,并且能实现比Y轴分割更均衡的负载均衡,同时也有助于故障隔离,但同样成本高昂。

也就是说,单体系统是原点,我们想从原点慢慢扩展,最初可能是水平复制,克隆出许多相同的系统,前面加一个负载均衡,这就是X轴的切分。微服务一般都是基于功能的,按照商品、订单、物流、支付分解成不同的模块,这就是Y轴,按照我们的动作去切分。Z轴是按照来源切分,例如,系统来源的请求是多个省份的,就可以按照省份切分,或者用一个算法统一将来源进行切分。

这里需要补充的是我们在做Y轴和Z轴切分的同时都可以配X轴,再加一个负载均衡,后面就可以克隆出很多的订单、商品模块,或者按照某一个数据库水平切分之后,某些量大的会辅之以更多应用、进程进行支撑,所以都会有X轴的切分。并且我们一般的做法是先切分X轴,同时切分Y轴再配X轴,再往前一步配Z轴。最终的目的是X、Y、Z轴都做了切分之后,进入一个无限扩展的愿景。

X轴的分割代表把相同的工作或应用镜像分配给多个实体,X轴的分割很好地解决了交易量的扩展问题,并且实施成本较低,但它无法解决越来越多的数据所产生的问题,也无法解决软件实施、平台或产品的复杂性问题。Y轴分割代表把工作职责基于“动词”或动作进行分割并分配到多个实体。Y轴分割是为了解决复杂的代码和数据集不断增长所带来的问题。其目的是为分割后的交易处理建立故障隔离,减少交易响应时间。但由于团队需要重写服务或至少分解原有的紧密耦合的单体应用,所以拆分成本比较高。同时,拆分带来了更多的运维工作,特别是在配置管理和系统管理方面的复杂度也进一步增加。Z轴分割代表按照客户、位置分配工作,可以建立故障隔离,而且可以沿着客户的边界扩展。Z轴分割可以解决客户增长问题,同时有助于提高灾难恢复能力,把事故的影响限制在一部分特定的客户范围内。但在3个维度的分割中,Z轴分割的成本往往最大,并且增加了运维的复杂性。image.png

那么如何去切分数据?如图2-4所示,其实原理是一样的。如果只切分X轴,其实就是将一个数据库作为写库,将其他的作为读库。读库直接复制原来的数据库,这就是X轴的切分;Y轴可以配合应用的切分,订单数据单独建一个库,商品数据又是单独的一个库,用这样的方式做数据的切分;Z轴更好理解,直接将库表按照分片或者其他方式进行区分,同时按照扩展立方体切分数据和应用。



【版权声明】本文为华为云社区用户原创内容,转载时必须标注文章的来源(华为云社区)、文章链接、文章作者等基本信息, 否则作者和本社区有权追究责任。如果您发现本社区中有涉嫌抄袭的内容,欢迎发送邮件进行举报,并提供相关证据,一经查实,本社区将立刻删除涉嫌侵权内容,举报邮箱: cloudbbs@huaweicloud.com
  • 点赞
  • 收藏
  • 关注作者

评论(0

0/1000
抱歉,系统识别当前为高风险访问,暂不支持该操作

全部回复

上滑加载中

设置昵称

在此一键设置昵称,即可参与社区互动!

*长度不超过10个汉字或20个英文字符,设置后3个月内不可修改。

*长度不超过10个汉字或20个英文字符,设置后3个月内不可修改。