1. 电商场景应用
腾讯云在电商行业有非常多的客户,电商客户的需求和痛点我们体会得比较深。前不久6.18的时候腾讯云 MySQL 也支撑了很多电商的大促,其中秒杀是常见的场景。秒杀发展到现在,其实已经不只是电商场景在使用,其他比如抢红包,春运抢票等也属于秒杀。秒杀场景的特点有三高,分别是瞬时并发性高、数据一致性高和热点更新频度高,商品要频繁进行库存加1或减1的操作,会给企业级数据库造成巨大的压力。大量的数据更新并发度,按照MySQL数据结构和引擎的特点容易产生数据库的行锁等待,导致数据库性能持续的下降。腾讯云MySQL8.0针对电商场景秒杀进行了专项优化,帮助客户任何秒杀的场景都可以稳如泰山。8.0 电商场景里做的第一个优化是热点更新,热点更新可以大幅度优化对单行数据的频繁更新,在控制台一点就可以开启热点更新,内核系统会自动探测是否有单行热点更新,如果有的话,会让热点更新的用户线程排队以减少大量的行锁,以减少并发性能的下降。如上图所示,开启热点更新功能后,在高并发的情况下,MySQL性能有数十倍的性能提升。大家知道,当数据架构上层的缓存(比如Redis)透传后,海量的SQL访问一下子涌入MySQL,会导致一些极端的现象,可能导致MySQL数据库性能的急剧下降和连接数打满。腾讯云MySQL8.0的SQL限流功能,会针对性对超高并发度 SQL 进行限流,避免 MySQL 系统性能下降或连接数打满。该特性也集成到腾讯云数据库智能管家 DBbrain 中,用户可灵活进行 SQL 限流的配置。该项功能主要通过限制某些 SQL 语句的操作,来避免 SQL 语句使用不当所导致的系统资源占用过大,导致系统整体性能下降或假死的情况。通过云上控制台的简单配置,即可完成对指定 限流 SQL 语句关键字的匹配以及限流方式,非常灵活便捷。第三个优化是多队列线程池,因为有多队列的模型,可以超高并发下使用线程池技术让MySQL性能不减,减少线程频繁的销毁造成的CPU切换。在大规模连接和复杂混合 SQL 模型下,保持 MySQL 持续稳定。通过腾讯云MySQL8.0的SQL限流、热点更新和多队列线程池三大技术功能保障,让秒杀场景下MySQL数据库持续稳定运行。除了这三大优化外,腾讯云MySQL还有很多企业级产品能力支撑电商行业,比如老牌的功能:只读实例,可以挂多个只读实例进行负载均衡,方便用户读写分离。另外还有置放群组功能,置放群组是一个分散部署,保障MySQL高可用性的产品功能。有客户会担心一台物理机上部署的都是同一个客户自己的MySQL实例,如果这台机器挂了,那这个客户的实例就会全部挂了。通过置放群组功能可以把同一个客户的多个MySQL实例水平分布到不同的物理机中去,这样可以很好保障这个客户的所有MySQL实例的可用性。
2. 游戏场景应用
游戏行业的特点首先是部署能力要快,游戏行业经常的开服合服,一旦有服务器不活跃了就要开新的服。二是游戏行业要求对数据库回档能力要求非常高,原因是有些游戏行业可能遇到数据道具的回溯(比如:遇到外挂或游戏异常)。三是大型游戏是要出海的,讲究全球同服,多地的数据要能够同步,玩家要就近接入访问,保障竞技公平性。不可能让新加坡玩家访问广州的服务器,这样延时太大,游戏玩家也会投诉。另外,游戏行业数据的存储需求灵活多样,传统的MySQL存储是二维表,每添加一个属性就要加字段、修改字段,或者把字段删除,这对游戏行业来说并不友好。因为游戏行业每一行数据结构都可能不同,游戏行业有很多道具和玩家角色的需求,数据存储特点上属于schema-less架构。基于这样几个行业特点,腾讯云MySQL8.0在JSON数据类型上进行了扩展,丰富了游戏业务上的灵活性和支持。比如玩家的道具、玩家的角色属性都可以放一个JSON字段中去存储,同时提供丰富的JSON函数去读取游戏属性的数据。当然,MySQL 8.0 比其他的版本在加字段上也更友好,因为加列是秒级了,但是要修改一些字段的属性肯定还是不如直接用JSON数据类型更加的方便。二是腾讯云MySQL在回档的基础上强化了恢复功能,可以从物理备份里快速把备份克隆为一个新的实例,可以按时间点进行克隆恢复,这样对游戏行业比较友好。开一个新的服务,拓展一个新的同类型的游戏时候使用克隆实例功能,一键可以完成数据库的拓载。三是腾讯云 MySQL 8.0 提供跨可用区部署主备节点的功能,因为游戏行业对高可用要求非常高,也有容灾切换的诉求,8.0 主节点和备节点可以放在不同可用区,主库广州三区、备库在广州四区,即使三区整个可用区挂了也可以无缝的为游戏提供服务。以上就是腾讯云 MySQL 8.0 对游戏行业的赋能。
3. 金融场景应用
金融行业最大的两个诉求,一是数据一致性,一条数据也不能丢,因为一条数据往往意味着大几十万、几百万金额的订单。二是金融行业需要高安全,金融行业不仅仅是对自身业务有安全诉求,同时也有监管的需求,国家的银监会、保监会会对金融行业有安全门槛设定,不然政策上首先就能把金融业务卡住。我们针对金融场景也做了定制优化,首先是 TDE 透明数据加密,结合云上KMS和CAM访问控制系统进一步强化了数据安全的保障,用户可以把自己的密钥导入进来,也可以用云上密钥。还可以区分根帐号、子帐号,根帐号可以赋予子帐号不同的权限,比如赋予子帐号只能创建实例不能销毁实例,只能下载备份不能删除备份等。另外,金融行业里面有很多财务对帐和分析统计的需求,金融报表很复杂,之前的MySQL做对帐的功能非常的烦琐。MySQL8.0提供便于数据分析的窗口函数和 CETS 公共表达式,可以在数据库表里实现复杂的统计功能。只读实例能用腾讯云MySQL 8.0 完成复杂的统计需求,这对金融行业来说也十分友好。安全性方面更不用说,之前的腾讯数据库 5.7 版本已经满足了需求,比如金融行业最基本的刚需是两地三中心的架构,一主一备、跨可用区和搭建异地的灾备,部署腾讯云数据库可以实现两地三中心的架构,保障金融行业7*24业务的稳定运行。腾讯云数据库 MySQL 8.0 提供三节点(一主两备)金融版,采用强同步复制模式,更快、更高、更稳的金融企业级服务。强同步复制需要一主两从的架构,仅需其中一台 Slave 成功执行即可返回,避免了单台 Slave 不可用影响 Master 上操作的问题,提高了强同步复制集群的可用性和性能。
4. 新零售场景
第四个场景,是这几年很火的新零售的场景。比如智慧商超(家乐福)、智慧门店、大型的餐饮连锁(麦当劳)、和最近很火的叮咚到家都属于新零售。新零售的特点是有一个门店系统,类似传统的O2O,现在具像化成了新零售,线上线下结合形成门店的效应。零售行业中也有会员制,如何通过会员的属性达到会员数据于一体,整合新零售线上线下渠道实现营销一体化,是这些业务架构的特点。
典型的如商超,这个场景对数据库也有一定的要求,新零售的首要要求是必须把业务中台和数据后台相结合,打破信息孤岛。要去分析商圈和会员的数据,建立很多后端的零售数据分析模型,以方便业务灵活的应对。针对这种场景,腾讯云 MySQL 8.0 推出了 Cstore 引擎功能,Cstore是列存型的引擎,可以实现高效的中台数据分析和列式存储。传统的 InnoDB 提供的是 OLTP 服务的存储引擎,适用于事务密集型的业务场景。对于分析型 OLAP 的业务场景,InnoDB 就无法胜任。通过 CSTORE,用户可以完成大型数据的查询与分析,可以适用于历史存档数据、日志数据、大数据、更新不频繁的 OLTP 数据和数据仓库和分析处理,数据处理量达到 PB 级别。在性能方面,通过高压缩比、快速加载、针对性的查询优化这些技术实现,向用户提供高效的服务,从而达到单节点可支持百亿行记录的秒级查询。TXSQL 的列存储可以达到 10:1 的压缩比,通过减少磁盘空间的使用,实现大批量数据的秒级写入和读取。在已有 MySQL 查询优化的基础上,利用多种形式的稀疏索引过滤数据实现高速的数据过滤于选择。并利用多列并行处理的方式,高速完成数据的加载与处理。除了前文提到的电商、游戏、金融、新零售行业,腾讯云 MySQL 8.0 在其他行业也有着许多应用,为包括交通、文创、教育行业赋能。我们也在积极推进这些行业尽快升级到 8.0 版本,以适配更多优秀的特性。