Item | 区分 | OLAP | OLTP |
---|---|---|---|
1 | 名称 | 在线分析处理(Online Analytical Processing) 在线事务处理 | (Online Transaction Processing) |
2 | 作用 | 处理企业级的决策分析、战略分析以及业务分析等 | 处理企业级的常规业务操作,如公司的采购、销售、存储、支付等 |
3 | 侧重点 | 多维数据分析技术和聚合算法,方便分析数据 | 强调数据的精确、事务的原子性和并发性 |
4 | 数据类型 | 历史性、汇总性、非实时性、不可变性数据 | 实时的、明细的、实时性的、可变性数据 |
5 | 场景 | 数据仓库 | 常规业务操作 |
6 | 查询模式 | 采用复杂的算法和存储结构,如多维数据库和立方体结构 | 需要简单的SQL语句,如基本的、事务相关的查询 |
7 | 性能要求 | 更高的存储要求和处理能力 | 快速且稳定的响应速度,可扩展性和高可用性 |
8 | 应用场景 | 企业级的决策支持和战略分析等领域 | 采购、销售、库存管理、银行交易等领域,极短的时间内快速响应用户请求,从而保证业务的正常运行 |
所以,在日常的企业级应用中,OLAP和OLTP针对不同的业务场景,有不同的解决方案。OLAP主要用于企业级决策和战略分析,需要快速的数据查询和分析技术。相反,OLTP主要用于企业日常操作,需要快速的数据更新和处理技术。
TDSQL-C MySQL Serverless实例提供了CPU、内存的实时弹性能力,构建云上资源架构下的MySQL产品新形态。
Item | 业务方案 | 业务痛点 | Serverless实例解决方案 |
---|---|---|---|
1 | 自建MySQL实例 | (1). 需要购买大量的云服务器构建MySQL集群,设备成本费用高 (2). 专人运维成本,部署业务 (3). 双11等活动时,提前负责服务的扩缩容 | (1). 按量收费,不使用不收费 (2). 云函数计算,从CI/CD到服务部署,扩缩容,全部自动完成,客户可以更专注于业务代码 |
2 | 传统的云数据库 | (1). 提供多种内存/CPU规格给用户购买 (2). 用户只能按最大负载量购买满负载配置,即使没有使用到,也需要为选中的规格付费 | (1). 自动扩缩容,访问量上来时自动扩容,降低时自动缩容,用户不需要关注规格 (2). 按照实际使用的资源付费 (3). 不使用不计费,如果没有访问,不应该收费 |
举个场景:如果自己想要出行就只能购买汽车、摩托车,现在可以直接通过滴滴等第三方平台使用打车服务,只需输入目的地即可,不需要再关注买车的坑、开车怕被撞和汽车保养的问题,核心诉求得到了更好的满足。
Serverless数据库可以看做,直接在云上直接购买虚拟机,部署业务,负责服务的扩缩容,从CI/CD到服务部署,扩缩容,全部自动完成,用户只需要更专注于业务代码即可。
Serverless数据库的基本特点是无需运维、以API方式提供服务、按实际使用计费、无使用无费用等。
由上图可以看到,在业务波动较大的场景下:
Item | 数据实例 | 资源低谷期 | 资源高峰期 | 灵活性 |
---|---|---|---|---|
1 | 普通实例 | 在低谷期浪费的资源较多 | 在高峰期资源不足,业务受损 | 比较固定的资源 |
2 | Serverless实例 | 在低谷期可以动态弹性释放不需要的资源,从而减少了资源浪费 | 在高峰期也能完全满足业务需求,保证业务不受损,提高了系统的稳定性 | 动态弹性伸缩能力 |
总结:由于Serverless实例的规格会随业务需求量随时调整,总体浪费的资源很少,提升了资源利用率,降低了资源使用量。
Item | 优势项 | 描述 |
---|---|---|
1 | 更低的成本 | (1). 对于创业初期的企业,MySQL Serverless不依赖其它的基础设施和相关服务。 (2). 即买即用并可以提供稳定和高效的数据存取服务。 (3). 使用期间只需要为占用的资源按使用量付费。 |
2 | 更大的存储空间 | (1). 存储空间最大可高达32 TB。 (2). 根据实例数据量自动扩展,可以有效避免集群存储资源不足对业务造成影响。 |
3 | 计算资源自动弹性扩缩容 | (1). 用户读取和写入需要的计算资源可弹性伸缩。 (2). 不需要手动扩缩容,极大减少了运维成本和系统风险。 |
4 | 全面托管和免运维 | (1). 版本升级、系统部署、扩缩容、报警处理等底层服务不需要关心。 (2). 用户无感知,业务无影响,服务持续可用,真正免运维。 |
Serverless 是腾讯自研云原生数据库 TDSQL-C MySQL 版的无服务器架构版,自动扩缩容,仅按照实际使用量计费,不用不计费,轻松应对业务数据量动态变化和持续增长。
Serverless 服务支持自定义实例自动暂停时间,无连接时实例会自动暂停。当有任务连接接入时,实例会秒级无间断自动唤醒。
可调整 CCU 弹性扩缩容的范围,Serverless 集群会在该范围内根据实际业务压力自动增加或减少 CCU。
Serverless 集群会持续监控用户的 CPU、内存等 workload 负载情况,根据一定的规则触发自动扩缩容策略。
1. 需求背景: |
---|
可根据业务需要,自助开启或关闭自动暂停设置 |
2. 实现思路: |
---|
1. 自动启停的逻辑比较简单,默认只要1小时(用户可配)内监测到没有访问就回收掉计算节点,访问回来就把节点重新拉起。 2. 也可以在控制台,指定数据库实例进行手动暂停操作。 |
date +"%T.%N" && mysql -h gz-cynosdbmysql-grp-9eujfhd.sql.tencentcdb.com -P 27304 -u root -pDb123. -Nse "show databases" && date +"%T.%N"
Linux的date命令可以用来显示或设定系统的日期与时间,通过获取命令开始前时间,再获取命令开始后时间,可以得到这条命令一共花费的时间值。
命令参数:
%T 时间(含时分秒,小时以24小时制来表示)。
%N 在显示时,插入新的一行。
先将TDSQL-C MySQL如上述两种方法停掉,使用MySQL自带的“show databases”命令查看所有的数据库,因为默认的命令,也不涉及到什么慢查询,只能算空负载运行。可以看到执行的时间差,可以是秒级连接。
从TDSQL-C MySQL的实时监控报表也可以看出,在14:15之前的时间段是暂停的状态,在15:00左右,有连接访问,马上就秒级启动服务器,充分的说明了当没有数据库请求时,监控服务会触发计算资源的回收。当用户再次访问时,接入层则会唤醒集群,再次提供访问。
TDSQL-C Serverless冷启动秒级内就能完成,怎么做到能贴近云函数的启动时间呢?
当有连接访问时,系统会秒级自动启动处于暂停状态的数据库,用户不需设置重连机制。
1. 计费模式 |
---|
(1). Serverless 服务的计算和存储独立计费。 (2). 计算按 CCU 个数计费,存储按使用量 GB 计费,计费系统按秒计费,按小时结算。 |
2. 计费公式 |
---|
Serverless 总费用 = 计算节点费用 + 存储空间费用 = Serverless 算力价格 × CCU 量 + 存储空间价格 × 存储空间 |
定义了一个算力单元CCU(TDSQL-C Compute Unit)=max {CPU, MEM/2, 最小规格}。
创建一张订单表,用于方便写SQL语句进行压测,如下我们会进行一下insert写的场景压测,分析一下,TDSQL-C MySQL怎么样实现使用量计费。
CREATE TABLE `orders` ( `order_id` bigint(20) NOT NULL COMMENT '订单编号', `customer_id` bigint(10) NOT NULL COMMENT '下单用户编号', `product_id` bigint(15) NOT NULL COMMENT '产品编号', `product_name` varchar(30) NOT NULL COMMENT '产品名称', `product_price` decimal(10,2) NOT NULL COMMENT '产品价格', `quantity` int(11) NOT NULL COMMENT '产品数量', `total_price` decimal(10,2) NOT NULL COMMENT '总价格', `order_time` datetime NOT NULL COMMENT '下单时间', `delivery_time` datetime NOT NULL COMMENT '发货时间', `status` int(1) NOT NULL DEFAULT '1' COMMENT '订单状态 1:已完成 0:未完成', `address` varchar(100) NOT NULL COMMENT '家庭住址', `phone` bigint(11) NOT NULL COMMENT '联系电话', PRIMARY KEY (`order_id`) ) ENGINE=InnoDB DEFAULT CHARSET=utf8 COMMENT='订单信息表';
创建表执行SQL成功。
云压测(Performance Testing Service, PTS)是一款分布式性能测试服务,可模拟海量用户的真实业务场景,全方位验证系统可用性和稳定性。支持按需发起压测任务,提供百万并发多地域流量发起能力。提供流量录制、场景编排、流量定制、高级脚本定制等功能,可快速根据业务模型定义压测场景,真实还原应用大规模业务访问场景,帮助用户提前识别应用性能问题。
创建一个压测的案例场景,为了更好的说明按使用量来计费,我们选择了递增压测的方案,模拟一下根据不同的业务量,产生不同的负载,Serverless 集群会在该范围内根据实际业务压力自动增加或减少 CCU,根据不同的算力CCU产生不同的费用。
压测场景说明:
一共压测2000VUM,最大的并发数是10VUs,为了还原生产的场景,按阶段性递增进行压测,一共压测4分钟,在1分钟内分3次过去逐渐增加并发数,由3.33VUs到6.66VUs,再到10VUs,演示流量逐渐慢慢增长,看一下CCU的弹性自动扩容能力。
以下是这次递增压测的结果报表,一共是576809个请求(接近6w个请求),没有一个网络请求失败的,平均的响应时间是在3.75ms,最高的并发数是在10VUs,下面的折线图也是分为3次有规律的进行递增。
举例说明,我们设置了算力配置为:选择最小最大规格为0.25核-1核:
从图中可以看到,递增压测分为3波:
下图可以看到我们在压测产生的同时,CCU的费用也提高了,可以很方便的进行自动扩缩容,访问量上来时自动扩容,降低时自动缩容,按照实际使用的资源付费,不使用不计费,如果没有访问,就不收费。
以下为CPU、内存的性能数据参考,都是正比的增长趋势,所以,上面讲到的CCU的计费方式,跟CPU和内存是有关系的。
目标是做到秒级的扩缩容,并且期间对用户是平滑的,无感知的。
以上图为例子,用户在购买时选择最小规格为1核2G,最大规格为2核4G。
初始为1核2G,当业务访问过来,把CPU用满了时,用户需要手动去修改规则,修改后需要重启后才能生效。
这里也是采用子递增压测的方式,但是之次使用最大的并发数为80VUs,在1分钟内全部压测完,然后,在前30s使用40VUs,后面30s直接使用80VUS。
这里也是模拟一下,应对于突发急剧增加的流量,TDSQL-C MySQL是如何进行扩容的。
从上图,我们可以得出一个结论:
由于压测的并发数比较大,也可以看到TDSQL-C MySQL有一些诊断提示,我们也可以根据一些警告进行一些系统的优化,以对应业务的变化。
很多公司目前的主流架构是采用单体冗余架构(一主多从),这种架构在扩展性存在很大的问题。
为了解决一主多从架构在扩展性这方面的问题,大多数采用的方案是采用存算分离架构。
腾讯云优先选择了基于共享存储架构的数据库产品TDSQL-C提供Serverless服务。
TDSQL-C是腾讯云基于共享存储架构的云原生数据库,由于ToB业务对稳定性的要求很高,复用了云上比较成熟的组件。
作为存储底座,加上云硬盘CBS、云分布式文件系统CFS等多款云上的产品,提供副本同步、故障自动迁移、数据校验等一系列完善的数据安全保障能力,这正是TDSQL-C MySQL Serverless产品能够稳定运行数年的重要基石。
随着云计算的发展,Serverless架构带来的优势,就是用户不用更多的去考虑服务器的相关的运维工作,无需再去考虑规格大小、存储类型、网络带宽的问题,Serverless架构会帮助自动扩缩容、无需服务器运维了、无需备份数据、软件配置等工作。
随着 Serverless 概念的迅速普及,腾讯云数据库TDSQL-C也推出了 Serverless 产品形态,可以为用户提供更低成本、更灵活的云数据库服务,减少了用户维护数据库规格的负担。
通过上面对TDSQL-C Serverless 在自动扩缩容、按使用量计费、不使用不计费3个方面进行学习与探讨,TDSQL-C Serverless在无负载时不产生任何费用,而当业务流量到来时能够秒级自动扩容扛起突发请求,做到按使用量分配计算资源、按使用量进行扣除费用。
对于开发者和企业来说,Serverless 服务是腾讯云自研的新一代云原生关系型数据库 TDSQL-C MySQL 版的无服务器架构版,是全 Serverless 架构的云原生数据库。Serverless 服务支持按实际计算和存储资源使用量收取费用,不用不付费,可以为企业很好的进行降本增效。