互联网技术架构——拆分数据库

通过克隆和复制的方法扩展数据库和服务,分离功能或服务以及跨存储和应用分拆相似的数据集系统。也即通过将数据复制到只读数据库整合了X轴;通过对Y轴的服务,功能或基于资源拆分,实现额外的基于服务的故障隔离、更大的数据缓存、更快的研发人员吞吐量;通过Z轴的客户拆分降低客户的密度。


X轴扩展

也叫水平扩展,通过复制服务或数据库以分散事务处理带来的负载。适用于数据库读写比例很高,或者事务增长超过数据增长的系统。可以以复制数据和功能为代价获得事务的快速扩展。

需要在克隆服务的同时配置负载均衡器,而且确保使用数据库的代码清楚读和写的区别。

首先要拒绝所有数据必须实时同步。时间敏感性是指与写数据库相比,只读数据库的拷贝有多么新鲜或者有多大比例完全正确。要求数据必须即时、实时、同步和完全准确的成本是非常高的。

可以使用在数据库的前面加缓冲层。让读操作从对象缓存中取数据,而不是通过应用反复查询数据库。只有当相关的数据被标注为过期时,才会查询主要事务型数据库,从而检索数据和更新缓存。

也可以使用数据库复制。通过主从方式来实现复制,主数据库是负责写入的主要事务型数据库,而从数据库是主数据库的只读副本。主数据库不断地跟踪数据的更新、插入、删除,并把记录存入一个二进制日志。从数据库从主数据库那里获得二进制日志后,在从数据库上重新执行这些命令。这是一个异步的过程,数据之间的时间延迟,取决于主数据库插入和更新的数据量。

这种扩展不止可以用于数据库,还可以很容易地克隆网络服务器和应用服务器。


Y轴扩展

也叫服务或者资源扩展,聚焦在沿着动词(服务)和名词(资源)的边界拆分数据集、交易和技术团队。适用于数据之间的关系不是那么必要的大型数据集,或者需要专业化拆分技术资源的大型复杂系统。

首先,按照动词来拆分。例如,一个简单的电子商务网站,可以分解为注册、登录、搜索、浏览、查看、添加到购物车和购买这几个必要的动词。执行某种事务所需要的数据可以明显不同于执行其他事务所需要的数据。例如,注册可能需要把大量的数据写入永久性的数据存储,而登录可能是一个验证用户凭证的读取密集型的应用。

然后,按照名词来拆分。例如,以电子商务网站为例,可以确定某些最终将采取行动的资源。假设电子商务网站由产品目录、产品库存。用户账户信息和营销信息等组成。使用名词把数据按类拆分,然后定义一组有关的操作:创建、读取、更新和删除。

Y轴扩展对数据集的扩展最有价值,同时也对代码库的扩展很有用途。随着服务或资源的拆分,我们所执行的操作和支持这些操作所必需的代码也会被拆分。这意味着工程师可以更专注于自己所研发的系统的子集。


Z轴扩展

经常根据客户的独特属性(例如ID、姓名、地理位置等)进行拆分。适用于非常大而且类似的数据集,或者当响应时间对在地理上广泛分布的客户变得很重要的时候。因为客户的快速增长超过了其他形式的数据增长,或者在扩展时,需要在某些客户群之间进行必要的故障隔离。

也称为分片,把一个数据集或服务分割成几块。这样可以通过先把代码发布到含有少量客户的一个小块来控制风险,当感觉已经发现并解决了主要的问题后,再发布给含有大量用户的其他块。

可以根据地理位置或者用户使用的频率来进行分片。也可以拆分产品目录。


  • 通过克隆扩展——通过克隆或复制数据和服务使你很容易地扩展事务。
  • 通过拆分不同的东西来扩展——通过名词或动词标识来拆分数据和服务。可以有效地扩展事务和数据集。
  • 通过拆分类似的东西来扩展——通常是客户数据集。依据客户属性拆分客户数据,形成独特和隔离的数据分片或者泳道,以实现事务和数据的扩展。

想了解更多关于互联网技术架构:互联网技术架构专栏

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值