背景
本文档的目标读者为即将或正在实施Oracle 19c新一代RAC数据库平台的用户,包括架构师,DBA,系统管理员,运维或研发部门Leader,或更高级的信息科技部决策者。提供的信息仅供参考。
本文档的技术方向主要是基于Exadata平台进行规划,但大部分技术特征也适用于一般的X86系统,但具体案例需要具体分析。
本文档主要是针对On-premise部署方式以及涉及私有云架构。不涉及公有云环境。
NG RAC的意思是:19c Next Generation RAC,您会在本文中多次见到这个缩写。
概述
上一代数据库的优点和缺点
上一代数据库架构一般指的单节数据库和从Real Application Cluster(RAC)推出到现在依然被大量的采用架构,2节点集群(如下图),采用的数据库版本一般是11.2和12.1,和已经很少见的10.2,Oracle 9i 基本已经退出市场。但目前这些数据库版本,基本已经退出服务周期或者出于特别支持周期。具体可以参考后续的版本建议章节。
RAC对比2010年以前大量使用的单节点数据库架构,提供了革命性的提升:
l提供数据库计算实例级别的高可用性能力
l提供了一定的弹性计算能力
基于上一代Oracle架构的数据中心的组网图,一般是下图案例:
在本文的最后,有一副利用NG RAC技术改造后数据中心想象图。
在运维管理上的缺点
大部分数据库基于昂贵硬件平台的2节点的11g 或者12.1 RAC架构,满足了过去数据库中心建设,对性能,可用性,可靠性的基本需求。但在面临新的市场和新的整体技术架构的挑战时,存在以下缺点:
数据库数量多,服务器多。大量系统为小型机构架,独占资源,故障率搞,维护时间长,效率低,成本高。
即使采用一般X86架构,鉴于稳定性和可用性未能达到核心系统的SLA,无法为核心数据库提供部署。
整合能力差,无法将多套关联系统整合在一起,降低成本,提高效率。即使通过schema整合,业务隔离性差。也无法提供数据库级别快速的拆分技术。
供应能力不佳,新业务需要实施一整套新系统,时间长,成本高。
集群性能问题很常见(和私网质量也有一定关系),应用大都被迫采用数据隔离,性能和高可用性必须妥协。弹性能力不佳。所以很少见大于2节点的部署方式。
当发生数据库节点故障后,切换较慢,影响业务。应用连续性不佳。
容灾架构同样笨重。过去大量采用BCV存储复制,有坏块蔓延的风险。小型机平台采用Data guard方案进行保护,容灾库也必须采用小型机。如果容灾库降低配置,则可能无法承载业务。TCO居高不下。
业务数据的变化剧烈,偶尔会导致SQL性能不稳定,DBA需要投入大量精力进行性能优化和执行计划稳定。
各套数据库系统之间形成了数据孤岛,数据库迁移,数据复制的方法都很笨重。
对新的应用架构的支持乏力
然而在过去10余年中,应用程序的架构体系也经历了快速的发展,如下图所示:
目前,应用架构流行的趋势为微服务化,
在微服务架构下,数据库架构应该怎么样设计呢?因为老的数据库架构开始在新的技术体系和市场变革下,出现一些明显的局限性。
当应用改造为微服务化后,常见的一种数据库设计如下图所示(shared database):
1.左图,数据库内继续紧耦合。应用微服务化,完全没有考虑数据层。
2.右图,数据库内,为微服务对表进行的初步的拆分和隔离(有一定进步)
这种架构显而易见,底层数据处于紧耦合,违背了微服务架构的原则,同时伴随着风险和落后产能。这种情况,大部分是由于应用设计人员,对数据层缺乏认识导致,是不可取的,例如上百个微服务的数据库只有一套基于传统架构的数据库,那么当数据库发生故障,则微服务会受到大面积的影响。符合规范和正确的微服务架构的另外一种设计叫做,Database per service,一服务一数据库,我们稍后讨论。
当然数据库层的微服务改造不是一蹴而就,首先我们要采用新一代数据库的架构,使得我们有支持新技术体系的基础,再做进一步的业务改造。
新一代RAC数据库架构介绍
新一代架构,有3个最关键的特征:
1 数据库整合,带来简化的IT架构,数据库及服务的快速供应
2 弹性伸缩的性能,应对各种类型的负载,交易场景,互联网场景,并最大化资源利用率
3 升级的高可用性,能最大化屏蔽云架构中数据库的故障,让应用的交易完全不受影响
硬件架构推荐
Exadata是最佳的数据库整合平台,可以将具有同类SLA级别的数据库部署在一起。Exadata平台提供了无与伦比的高速网络,高速存储系统,智能软件,智能管理,和Oracle19c版本一起大大提升Oracle数据库的性能,高可用性,可靠性和安全。理想架构推荐的硬件的硬件平台有三个必备特征:
具有多计算节点(推荐2-10节点):“云”基础设置底层,一定是大量的节点,才具备高可用性
采用Infiniband或者Roce交换机组建私有网络:对RAC性能至关重要
采用高速的存储设备:可以整合更多的数据库
注:本文不对Exadata做详细介绍。
如果计划采用General X86 Linux System 平台,使得关键的硬件性能(特别是私网和存储)和可靠性满足要求,合理的进行设计和实施,也能够达到大部分目标。
软件架构概览
推荐采用基于Oracle 19c Multitenant架构的NG RAC数据库,简要的软件架构如下:下图所示例子是一个4节点RAC,承载了4个微服务业务。同时您还可以看到很多其它软件组件,它们都会在NG RAC理想架构组发挥作用。
为什么要采用新架构
当今市场竞争日趋激烈,业务的快速变化,新的技术架构层出不穷。IT系统架构的建设目标,已经从过去的纯粹追求支撑业务,稳定,高性能,数据安全,发展了到要对业态的变化进行快速的响应,从而占领市场先机。所以软件系统架构也进化到中台,微服务架构,同理数据库系统也进行了响应变化,以满足应用系统的对弹性,可用性,敏捷的需求。如果继续在新环境下采用过去的部署方式,只能够满足一些特定行业(长期无变化)的需求。对于社会运行的主要行业来说,部署下一代架构是市场竞争的选择和技术发展必然的趋势。
在现实世界中,有的应有系统虽然完成微服务架构改造,但数据库却没有进行相应的改造,那么从从IT系统的整体来看,实际上是头重脚轻,而这个“脚”,恰好又是至关重要的前进的根基。
新架构可以达到的目标
新架构除了对高性能,高可用性,安全性的加强外,总体来说,具有以下特征。
l提供快速整合,供给和拆分数据库能力。易于管理和运维,提高效率。节约机房和电力资源。减低总体拥有成本TCO。
将具有同类SLA等级的数据库部署在一起,未来也可以快速的供应新的数据库服务,或者按服务对数据库进行快速的拆分为PDB。它是最佳微服务数据库平台之一
l提供具有弹性的计算能力的NG RAC
通过open更多instance在更多的节点,即可提供弹性增长的计算能力,并可以回缩
l提供兼具高性能和高可用性的NG RAC
不再担心GC问题,并且提供更好的可用性和应用连续性
l提供最佳的透明应用连续性(TAC)
实例级故障,事务(DML)可以平滑地在存活节点重发
l提供基于业务的均衡负载的能力
l提供更佳的SQL自动优化特性
l提供资源的动态隔离和控制能力
l提供融合数据支持,支持异构的数据类型完美存储在Oracle数据库中。它是最佳微服务数据库平台之一
l更佳的安全特性
l打通数据动脉,提供数据敏捷特性
l利用EM13c进行统一管理,建设DBaaS平台
可以看出新架构突出了大量的云化特性,以及对微服务体系支持。后续章节,将对如何逐步实现以上目标,进行描述。其中关键的技术包括采用:
üOracle19c版本
üOracle多租户技术
üOracle Service
使用Oracle Service
作为理想架构的关键技术之一:
Oracle建议采用自定Service,不要再使用默认的数据库Service。我们19c NG RAC理想架构的关键特性是基于自定义Service的,这是必备条件之一。自定义Service是一个逻辑抽象。 Service通过提供单个系统映像进行关联,从而向客户端隐藏了底层系统的复杂性(节点,实例,监听)。 同时必须使用服务才能使用Oracle新架构下的新特性,例如FAN、Draining和TAC,消费组,以及基于业务,并配置在服务器端的均衡负载策略。自定义 Service不能是默认的数据库服务或默认的PDB服务(与数据库或PDB同名的服务)。 Service也被看做可用性单元,资源可以单独地,快速地恢复。同时性能,也可以在service级别继续度量。
使用如下命令创建服务:
基本服务的例子
$ srvctl add service -db mydb -service MYSERVICE –preferred inst1 -available inst2 -notification TRUE -drain_timeout 300 -stopoption IMMEDIATE -role PRIMARY |
应用连续性的服务例子
$ srvctl add service -db mydb -service ACSERVICE -preferred inst1 -available inst2 -failover_restore LEVEL1 -commit_outcome TRUE -failovertype TRANSACTION -session_state dynamic -replay_init_time 600 -retention 86400 -notification TRUE -drain_timeout 300 -stopoption IMMEDIATE -role PRIMARY |
透明应用连续性的例子
$ srvctl add service -db mydb -service TACSERVICE –preferred inst1 -available inst2 -failover_restore AUTO -commit_outcome TRUE -failovertype AUTO -replay_init_time 600 -retention 86400 -notification TRUE -drain_timeout 300 -stopoption IMMEDIATE -role PRIMARY |
关于透明应用连续性,我们在后续章节有专门的说明。
使用Oracle 多租户架构
作为理想架构的关键技术之一:
多租户架构使Oracle 数据库能够充当多租户容器数据库 (CDB)。它是实现真正的高性能,高可用性的关键,以及提供弹性伸缩,快速供应等云特性的主要技术。
使用多租户架构进行数据库整合具有以下优势:
降低成本,电力,空间,管理人员,等
更轻松、更快速地移动数据库
更轻松地管理和监控物理数
确保管理职责安全性
易于性能调整
更少的数据库补丁和升级
更容易升级PDB数据库
例如,无需将 CDB 从一个数据库版本升级到另一个,您可以快速从现有 CDB 中拔出 PDB,然后将其插入更高版本的新创建的 CDB。
更容易在服务器之间迁移
防止 PDB 中的数据损坏
与 Oracle 数据库资源管理器Em13c集成
多租户融合数据库是微服务架构和传统架构的最佳支持
微服务体系结构是一种将应用程序构建为服务集合的体系结构样式 。微服务架构能够快速、频繁和可靠地交付大型、复杂的应用程序。 它还使组织能够发展其技术堆栈。目前已经广泛成为主流行业的主要系统架构之一。
微服务它具有以下特征:
l业务逻辑分解为具有明确定义了职责范围的细粒度组件。
l每个组件都负责一个独立的业务领域,并且完全独立开发,测试和部署。此外,一个微服务应该可以被多个业务复用。
l微服务通信的基于HT*P或JSON(JavaScript Object Notation)这样的轻量级通信协议,在服务消费者和服务提供者之间进行数据交换。
l服务的底层可以采用多种技术,应用程序始终通用协议(例如JSON)进行通信。构建在微服务能够使用多种编程语言和技术进行构建,以及采用异构的数据存储格式。
那么对于微服务的数据库部署的原则,有两个显著的特征
l每个微服务要有自己独立的数据库,避免数据库层面的耦合。
l每个微服务可以采用不同的编程语言以及对应不同数据存储技术,独立部署,围绕业务能力构建。
基于Oracle NG RAC多租户架构的融合数据库,则是同时满足微服务体系的两种原则,且兼具所有前文提到的云特性和满足传统需求的最佳数据库平台!
Oracle多租户技术通过PDB来满足Database per service的需求,提供快速的PDB数据库供应,移植,拆分的能力。同时实施理想架构后,对每个独立的PDB同时具有ACID,高可用性,弹性的高性能,数据敏捷等多种云数据库能力,完全满足微服务架构对容错性,弹性,隔离性的需求。采用Exadata平台,计算能力可满足水平扩展的企业潜在需求。
根据每种微服务数据类型的特点而去选择数据存储的方法,被称为混合持久化,混合持久化和微服务架构的理念是同时发展起来的。最早架构师就会选择多种类型的数据库来满足业务的需求,但是数据库种类多,也导致了学习和管理成本的大大增加。后来市场上,根据这一需求出现了融合(也叫多模)数据库。Oracle的多模数据库,提供对各种数据类型的完善支持,包括JSON,XML,图,区块链,GIS,能够满足微服务架构下对数据多模的需求。而且Oracle提供几乎对所有主流编程语言的数据库编程能力。
采用Oracle 19c NC RAC理想架构支持微服务体系,能大大减少数据库的学习,研发和管理成本。
同时该架构对需要部署一平台一系统的传统用户来说,也是0兼容和学习成本,应用无需改动,即可以简单地创建一CDB,一PDB的数据库提供服务。同时采用Oracle 19c 也可以获得数据库本身升级带来的性能,可用性,安全等方面提升。
微服务体系下数据库架构设计,有以下几种,我们这里主要讨论了其中两种和数据库选型和部署方式密切相关的模式(红色字体)。
lThe Database-per-Service pattern
lThe API Composition pattern
lThe CQRS pattern
lThe Event Sourcing pattern
lThe Saga pattern
lThe Shared Database anti-pattern
未完待续.
NG RAC主要的提升和技术点
私网网络质量提升对RAC性能的影响
NG RAC的功能优化
软件版本和补丁的选择
数据库整合的部署设计
多租户数据库的高可用性设计
PDB高可用场景下资源利用率镜像
关于隐藏参数
配置透明应用连续性
数据库测试要点
资源管理器的设计和使用
SQL执行计划稳定技术的使用
迁移和升级到Exadata
部署和使用Em13c
数据敏捷
多租户的数据复制技术
OGG微服务架构介绍
数据库容灾架构