如何基于OceanBase构建应用和数据库的异地多活

如何基于OceanBase构建应用和数据库的异地多活

前言


 

OceanBase是一个通用的分布式的关系型数据库,有很多独特的特点。比如数据库的多租户、高可用、极致弹性伸缩能力。如果把OceanBase当作单库使用,就没有把OceanBase的分布式优势发挥到极致。

本文主要分享一个基于分布式架构的应用把OceanBase数据库的分布式优势发挥到极致所需要了解的OceanBase基础,这也是理解蚂蚁金服的基于OceanBase构建的三地五中心异地多活架构的基础。

 

分布式数据库开发相关问题


好的性能首先是设计出来的,应用如果追求极致的性能,就需要关注OceanBase里数据的相关事情。如:

  • 数据如何分布?

  • 数据如何读写?

  • 存储容量瓶颈怎么办?

  • 访问性能瓶颈怎么办?

  • 数据库出故障时数据可用性和可靠性具体怎样?应用需要做什么特殊处理么?

  • 数据库扩展时应用需要迁移数据么?数据迁移的时候对应用有什么影响?

这些问题对理解OceanBase的分布式特点很有帮助。后面我们逐步看看OceanBase是如何应对。

 

OceanBase集群外观


首先简介一下OceanBase集群的外观。

OceanBase是以集群形式运行的,由一堆服务器组成。上图是「三副本」部署,机器会分为三组,每组一个区域(称为Zone),各个机器通过网络互相访问。没有光纤交换机、共享存储以及直连网线等。

服务器通常建议CPU、内存和磁盘尽可能的大,磁盘建议用普通SSD盘。普通服务器的好处是便宜,劣势是可靠性和性能可能不如小型机那么高。也就是说OceanBase可以部署在一组可靠性和性能不是特别高的普通服务器上,却提供了高性能、高可用和高可靠、弹性伸缩等多项能力。

以上是一个OceanBase集群的外观和能力,但是提供给业务的并不是这个集群的全部资源和能力,而是其子集,即租户(Tenant)。

 

OceanBase多租户特性

OceanBase定义了一些基本的资源规格(Resource unit config,如4CPU8Gmem500Gdisk等),然后选取某类资源规格创建一组资源池(Resource Pool),此时集群资源就有一部分被分配出去了。最后将这个资源池关联到一个新建租户,则租户就可以使用这个资源池的能力。

OceanBase默认有个sys租户,管理整个集群。用户租户必须在sys租户内部创建。

如下示例就是创建租户的过程。

#sys租户登录方法

$mysql -hxxx.xx.11.11 -uroot@sys#obdemo -P2883 -proot oceanbase -A

#资源规格(UnitConfig)
create resourceunit S0_uc max_cpu=2,max_memory='5G',…

资源单元(Unit)
create resourcepool Po

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值