核心功能
水平扩展
传统的分布式集群存储扩容方案中,需要进行数据迁移,而数据迁移时是禁止对数据进行操作。数据量大的时候,迁移时间就会比较长,这样就影响了数据库的可用性。AntDB提供了hot expasion扩容方案,将数据原有的数据迁移分成数据同步和路由切换两个阶段,从而解决了这个问题。
在数据同步阶段,通过热备和流复制技术,保证新增节点增量追加源节点数据,不对表加锁,不影响数据库集群对外提供服务。
当新增节点与源节点数据同步时间在秒级时,进入路由切换阶段。锁住集群,暂停集群对外服务,等待并确认源节点与新增节点数据一致后,修改访问路由,最后解锁集群,恢复集群对外服务。
通过以上机制,AntDB在进行扩容时对集群可用性的影响时间,从整个数据迁移阶段缩小到路由切换阶段,由于路由切换正常在10秒内可以完成,从而极大的减少扩容对集群可用性的影响。
分布式事务
AntDB使用2PC来保证(Two-Phase Commit, 2PC)来实现分布式事务。2PC分两个阶段:第一阶段,协调者询问参与者事务是否可以执行,参与者回复同意(本地执行成功),回复取消(本地执行失败)。第二阶段,协调者根据第一阶段的投票结果进行决策,当且仅当所有的参与者同意提交事务时才能提交,否则回滚。
2PC在AntDB中的实现如下:
(1)CN1从GTM请求并获得,集群全局SnapShot。
(2)CN1从GTM请求并获取,集群全局唯一TransactionID 事务号100。
(3)CN1到DN1上对用户A减去50元。同时到DN2上对B用户加上50元。
(4)CN1分别操作A和B用户的数据成功后,需要提交该事务。两阶段的第一阶段,分别到DN1和DN2 预提交。即prepare Transaction T100。
(5)DN1和DN2都能预提交成功并且返回成功ACK。
(6)CN1本地结束事务号100。
(7)CN1分别到DN1和DN2上进行两阶段的第二阶段,真正的提交T100。
(8)DN1和DN2提交成功并且返回ACK。
如果第5步,任何一个节点返回预提交失败,第6,7 分别需要本地rollback,和两阶段第二阶段rollback prepared T100。通过这样就能实现两个或多个节点,同时成功或同时失败。
分层存储
AntDB分布式内存数据库支持以下两种存储结构:
- 内存
- 磁盘
内存包括通用的DDR内存,以及近年涌现的PMEM持久内存。相比DDR内存,MEM持久内存,适用于要求高性能的缓存业务,与全内存运行相比在牺牲一定响应时间的同时,可以获得更高的性价比。
AntDB分布式内存数据库可以通过建表语句指定表单数据的存储介质,目前支持的枚举包括“HOT”和“COLD”两种,从业务视角区分数据的冷、热程度以及存储方式。以交易类系统为例,在实际使用过程中,可以将与实时交易过程紧密相关的资料数据、资产数据相关表设定为“HOT”,这部分数据常驻内存,提供极高的访问速率与极低的延时,而针对庞大的运行日志数据则设定为“COLD”,这部分数据存储到廉价的磁盘整列,即不影响数据的访问,又可以提供整体数据库建设方案的性价比。
切换策略的设定。AntDB分布式内存数据库在支持多种存储引擎的同时,可以支持表单级的跨存储切换。交易类流水数据在业务上又一个渐冷的过程,例如近期的交易流水查询率较高,不能直接归入冷数据,但超过一定时间的交易流水几乎只有审查的作用,对实时交易过程并没有太多作用。针对这一类场景AntDB分布式内存数据库可以指定表单加条件的切换策略,如trans_yyyymmdd类的交易流水表,以时间轴为条件,定期进行存储的切换。这个过程是自动化的,过程无需人工干预。
多租户
AntDB提供多租户能力。租户是数据库集群和资源管理的基础。一个租户下面可以包含多个数据库集群,一个集群只属于一个租户。租户之间是完全隔离的。在数据安全方面,租户之间的数据不能相互访问。在资源方面,租户下的数据库分享租户的资源配额,每个数据库副本使用的资源为一个资源单元。
资源接入
资源管理层接入资源后,这些主机分属于若干个可用区(Zone),每台主机属于一个可用区。可用区是个逻辑概念,表示具有相似硬件可用性的一组节点,它在在不同的部署模式下代表不同的含义。
例如,当主机在同一个数据中心(IDC)内的时候,一个可用区的节点可以属于同一个机架,同一个交换机等。当分布在多个数据中心的时候,每个可用区可以对应于一个数据中心。每个可用区具有 IDC 和地域(Region)两个属性,描述该可用区所在的 IDC 及 IDC 所属的地域。一般地,地域指 IDC 所在的城市。可用区的 IDC 和 Region 属性需要反映部署时候的实际情况,以便数据库集群的自动容灾处理和优化策略能更好地工作。根据业务对数据库系统不同的高可用性需求,DBOPS提供了多种集群的部署模式,参见6.2.2。
租户的资源分配
在租户创建后,可以将接入的资源分配给租户。资源包括CPU、内存、磁盘等。资源分配的时候,可以不指定地域和可用区仅指定量的大小,也可以指定具体的主机列表,列表内的主机CPU、内存、磁盘都归该租户所有。租户分配的资源为租户内所有集群共享。
在给租户分配资源之后,可以创建资源单元。资源单元用于描述CPU、内存、存储空间的规格。例如8Core CPU、16G内存、500G磁盘。资源单元用于限制每个分片进程的资源占用情况。
集群部署
在数据库集群部署的时候,需要选择CN和DN的资源单元。同一集群内的CN和DN对资源的要求不同,可采用2种不同的资源单元,单机版的只需要选择一个资源单元。
资源监控
资源的监控包括了:
- 系统总体可用资源及资源的使用情况
- 租户可用资源及资源的使用情况
- 单主机的资源及资源使用情况
AntDB数据库始于2008年,在运营商的核心系统上,为全国24个省份的10亿多用户提供在线服务,具备高性能、弹性扩展、高可靠等产品特性,峰值每秒可处理百万笔电信核心交易,保障系统持续稳定运行近十年,并在通信、金融、交通、能源、物联网等行业成功商用落地。
服务器托管,北京服务器托管,服务器租用 http://www.fwqtg.net
机房租用,北京机房租用,IDC机房托管, http://www.fwqtg.net
相关推荐: 基于JavaFX的扫雷游戏实现(三)——交互逻辑
相信阅读过上期文章,动手能力强的朋友们已经自己跑出来界面了。所以这期我要讲的是交互部分,也就是对于鼠标点击事件的响应,包括计时计数对点击事件以及一些状态量的影响。 回忆下第一期介绍的扫雷规则和操作,游戏从开局到结束可能会涉及到哪些情况呢?我认为比较重要…