毋庸置疑,数据已经成为信息化社会最关键的基础元素之一。离开数据的支持,大数据、人工智能等技术就都没有了用武之地,信息化、智能化也就成了空谈。而数据库则是存储和承载数据的重要场所,因此,其重要性不言而喻。随着云计算的飞速发展,云端数据库技术开始被普遍应用。云端数据库是在云计算的大背景下发展起来的一种新兴的共享基础架构的方法,它极大地增强了数据库的存储能力,消除了人员、硬件、软件的重复配置,让软、硬件升级变得更加容易,而且具有高可扩展性、高可用性、采用多租形式和支持资源有效分发等特点。可以说,掌握云端数据库技术将是现在以致未来,数据库技术人员所必备的技能。

10月27日,为了帮助数据库技术人员能够更好的掌握云端数据库技术,腾讯云携手中国专业的IT技术社区CSDN在深圳市腾讯大厦2楼多功能厅举办“赋能业务创新-云数据库最佳应用实践”沙龙,以云端数据库具体的应用实践,为与会的众多数据库技术人员分享了包括如何设计出高可用的MySQL系统,解读最流行的Redis缓存类数据库在云端的技术运用以及Elassticsearch调优在内的应用实践,并深度结合小程序和珍爱网在利用腾讯云云数据库过程中的实践经验,介绍如何在降低开发与运维成本的情况下,打造爆款应用程序。

腾讯高级工程师王甲坤首先为挤满整个会场的观众介绍了如何设计高可用的MySQL系统,王甲坤认为,高可用的关键指标是RPO和RTO,而设计高可用的MySQL系统,通常有三种模式:

模式一,Shared Everthting方式:

基于单机存储的模式,一般是针对单个主机,完全透明共享CPU/MEMORY/IO,并行处理能力是较差的。

模式二,Shared Disk方式:

基于共享存储的模式,各个处理单元使用自己的私有CPU和Memory,共享磁盘系统。典型的代表Oracle Rac,它是数据共享,可通过增加节点来提高并行处理的能力,扩展能力较好。

模式三,Shared Nothing方式:

基于数据复制的模式,各个处理单元都有自己私有的CPU/内存/硬盘等,不存在共享资源,类似于MPP(大规模并行处理)模式,各处理单元之间通过协议通信,并行处理和扩展能力更好。

对于基础设施的高可用,通常采用同城双活、两地三中心等方式,而对于MySQL系统的高可用,首先备份是最基础最保底的保障,建议必须保留。

MySQL备份分为逻辑备份、物理备份和快照三类。腾讯云主要采用基于xtrabackup开发的实现可并行备份加流式压缩的物理备份,成功率与速度都比较高。另外,腾讯云MySQL基础版,架构于CVM和CBS之上,支持快照备份功能。其次,基于数据复制模式是MySQL高可用的常见热备方案,通过MySQL复制协议和故障自助发现与转移来实现数据在节点间的一致性。 腾讯云MySQL先支持最多挂载5个只读实例,来满足读写分离的场景。

王甲坤还介绍了复制相关的Binlog知识,主从复制的大体流程,以及三种复制方式:异步、半同步、强同步。而对于在复制中SQL线程的瓶颈,通过各个版本MySQL的并行复制功能也能得到解决。但DRBD(Distributed Replicated Block Device),这款基于块设备级在远程服务器直接同步和镜像数据的工具则是MySQL官方文档手册中作为推荐的高可用的方案之一。

王甲坤提到,由于MySQL并没有提供故障转移功能,一般需要借助第三方工具进行故障恢复。业界普遍采用的方案是Keepalived、MMM和MHA,但都有一定的缺点,而腾讯云用的是自己实践的一套故障检测,不存在单点的问题,能做到故障检测恢复到30秒钟以内,大大提高了MySQL的高可用。王甲坤最后还介绍了保证PXC、 MGC、MGR等另外三种MySQL高可用架构。

腾讯云云数据库Redis产品负责人邹鹏针对大规模Redis集群架构设计进行了讲解,他表示,Redis的使命就是更快更简单,遵循这个使命的Redis数据库的排名已经超过了ES了,位列第七。Redis的特点,第一是快,可以达到单核10W QPS,第二是in-memory cache,即Redis不用建表。邹鹏认为,Redis主要场景还是在于缓存,如果抛开游戏的场景,80%的场景都是缓存,所以它还是缓存数据库。

邹鹏接着介绍了腾讯云基于社区4.0版本+自研打造的Redis4.0 Cluster分布式数据库。Redis官方的Cluster具有两个特征:Sharding以及自治管理。而腾讯认为Redis Cluster一定要做一个Proxy方案,第一源生集群版必须有一个智能客户端支持,这是因为智能客户端支持有限,无法直接迁移到集群版,而客户端需要感知后端架构,并进行网络流量隔离,承载更丰富的功能,减少对Redis代码的入侵,而如果没有代理这些都不容易实现。

腾讯云采用的Smart Proxy 方案,后端是官方源生的Cluster,完全是自治的版本,并进行了一些优化。前端的智能客户端会完成代理转发,做大量定制化监控以及数据、节点的选择判断的情况,再往前面就是LB,把所有细节都屏蔽到了后端。

在数据迁移方面,针对大Key和热Key的迁移难题,腾讯云通过采用访问监控、Key分析、指标监控、慢查询、告警配置、流量隔离等手段充分发挥Proxy的作用,从而解决了数据迁移中大Key和热Key的问题,最终的架构如图所示。

邹鹏还介绍了腾讯云CKV,它是一种原生分布式的集群解决方案,突破单线程,时延只有0.2毫秒,但可以使内存使用率提升15~25%。


腾讯云产品经理李晓慧以MongoDB在小游戏中的实践应用,分享了MongoDB在小游戏开发方面为开发者带来的便利。李晓慧表示,游戏开发中一个最主要的特点是需求变化非常快,因为在游戏和开发不同的阶段会加入一些新的元素黏住用户,像一种道具的场景,就需要在游戏上线的不同阶段加载不同的道具,用传统的关系型数据库则需要对表结构进行修改的DDL操作,而MongoDB不需要改变表结构,这对开发者是非常友好的。

李晓慧强调,现在大多数游戏都会添加社交元素增强用户的活跃度,黏住用户。腾讯云提供了地理位置索引以及配套的API,不需要在业务层操作,就可获得数据库层的支持。对于海量数据,腾讯云提供了分片的功能,例如游戏开始上线时,其实并不知道业务上线需要的数据量。而当游戏上线后期,由于数据量的增多,如果用关系型数据库的话,就避免不了进行分部分表扩容,而MongoDB提供了分片集群,可以在不影响业务的同时进行水平的扩容,这对运维来说是非常好的解决方案。至于运营分析,MongoDB源生即支持,开发者可以直接套用。更重要的是,MongoDB支持JavaScript全栈MERN、MEAN。因此,MongoDB特别适合游戏开发场景。

李晓慧还介绍了如何优化MongoDB的连接,她表示,首先,腾讯云对MongoDB的连接进行了优化。MongoDB的连接其实分为两部分,第一部分是Mongos对前端的连接,第二部分是Mongos对后端的连接,有两个关键参数,最小连接数参数minConnections 和连接IdleTime参数refreshRequirement的设置对于MongoDB的连接效率非常重要,针对这两个参数,腾讯云为开发者提供了可计算的公式,并建议对于refreshRequirement的参数设置至少是包含两个连接峰值的头。

其次,腾讯云MongoDB通过读写分离策略减少了慢查询, 从而将MongoDB的读延时从官方版的85毫秒左右缩短到10毫秒左右,效率提升了将近9倍。

第三,通过分片群集,提供灵活可扩展的特性,从而大大减轻了运维人员的负担。

第四,对于令游戏运维非常头疼的库表回档方面, 腾讯云MongoDB是唯一提供库表回档的,而且可以支持细化到一定级别,对运维人员是非常方便的功能。

第五,在监控方面,腾讯云MongoDB也是唯一支持表级监控,表级监控内容比较分散,有CRUD操作监控,请求时延监控,包括10毫秒到50毫秒,50毫秒到100毫秒,以及超过100毫秒三种力度。请求个数也有监控,还有比较重要的容量和记录监控,腾讯云MongoDB都支持。

针对目前火热的小程序开发,李晓慧介绍了腾讯云的TCB小游戏解决方案,该方案可以为开发者提供完整的云端流程,弱化后端和运维概念,无需开发者搭建后端服务。开发者可以直接使用小程序的 JS-API 进行核心业务开发,即可实现小游戏快速上线和迭代,还可以根据自身需求创建多个环境,以用于开发、测试及生产等多种场景,并且每个环境的资源是独立且相互隔离的。这种方案特别适合个人开发者、初创团队,对于成熟团队的项目的话,可以立即使用。

腾讯高级工程师陈曦则分享了Elasticsearch的调优经验,陈曦首先介绍了Elasticsearch的基本原理。Elasticsearch是一个搜索引擎,它具有高性能、高可靠、易管理、易使用的特点,有很强大的综合分析能力,可以通过脚本进行复杂的计算。Elastic Stack是集数据采集、清洗、存储、可视化为一体的完整解决方案。ES有比较广泛的应用领域,主要的应用场景是日志分析、数据分析统计,还有全文检索,功能比较强大。Elasticsearch的数据模型如下图所示。

陈曦表示,Elasticsearch的调优主要基于三个层面:降低存储成本、提升集群稳定性和提高集群性能。

在降低成本方面,也包括两方面,一方面是对字段存储的优化,另一方面是对字符串字段的优化,在对倒排索引、行存、列存三个字段的存储中,对于CPU监控这种场景,可以通过关闭索引字段来进行存储优化,对于统计分析场景,只需列存即可。而对于日志类场景,则仅需行存即可。通过这样的优化,行存的成本能够降低40%左右。

对于字符串字段的优化,也是分两部分,text和keyword,text可以做分词,然后对每个词都可以高排索引,拿一个词可以搜到一整段话。如果仅仅是想把文本存进去并且取出来的话,后面都是可以去掉的。至于keywork,可以模糊匹配,但不能拿一个词搜索整段话,由于它不需要做分词,所以速度会比较快。

要提升集群稳定性方面,最有效的方法就是控制index的分片数,陈曦介绍,一个index是由多个shard组成的,一个index有三个shard,分布在不同节点上,一个请求写几百个几千个文档在里面,当请求到达ES某个节点的时候,会计算对于几千个文档,分别属于哪个shard,然后这个时候会放到BulkQueue存储中。BulkQueue的默认值是100,如果shard数量过大BulkQueue就很容易被填满,shard数值过小的话,就无法充分利用节点资源,陈曦给出的建议是100GB以下的index设置3-5个shard,但这并不是可以适用每个场景,具体还要看业务的实际情况。

在提升集群性能方面,分为四方面,一方面是控制index的副本数量,另一个是优化持久性参数,第三方面是写入方式优化,第四方面是查询优化。

而腾讯云是通过云管平台、降低存储成本、提升集群稳定性和提高集群性能等四方面对ES进行优化。

首先,腾讯云的云管平台是一套自动化运维系统、它本身可以预装一些插件,包括中文分词插件、SQL插件、数据导出插件等,系统会自动按照一定时间间隔创建index,而不需关心有多少index。此外,还通过Kibana、跨机房容灾、Dedicated Master等方式,提升集群的稳定性。

在降低存储成本方面,通过倒排索引内存优化、冷热分离对存储成本进行优化。实际上,在查询过程中,有一个词典和一个倒排表,ES为了加速查询过程,把词典华分成一个个的block,前缀相同的词可以放到block里面,前缀相同的前缀数会指向block,而实际上,在这个小范围内一个匹配词典就可以了,这样就可以快速加大性能。

冷热分离是指,ES本身可以对于每个NODE加一些属性在里面,通过ES的一个命令可以强制把一个表所有数据搬迁到指定的一个属性的节点上面,所以在集体上架的时候可以同时上两个,用户可以在WEB界面配置哪类的index多久之后降低使用成本,腾讯云后台就有这样一个调速器,会发送命令,从而降低用户的使用成本。

在提升集群稳定方面,通过集群均衡策略优化、自研限流功能,使得集群稳定性得到较大的提升。 集群均衡策略是指在通常情况下随着业务的增长,ES默认会把大的Shard放在小的节点上面,新增的shard读写压力就会比较大,这种情况下就会造成单点过热的问题,腾讯云对此进行了优化,去掉重复上报的shardfailed信息,从而大大降低了Master的压力。

自研限流功能主要针对ES本身对于JVM判断不准,在写入量大的情况下会导致OOM的情况而推出的,为此,腾讯云做了一个曲线限流的功能。通过这个优化,有效避免了OOM情况的出现。

在查询优化方面,腾讯云ES系统可以根据查询到的数据量进行预估,超过一定量就不做缓存,从而避免了加载过大缓存,拖慢查询速度的问题。

来自珍爱网的DBA周耀荣最后一个登场,他分享了珍爱网云数据库的使用经验,周耀荣首先谈了自己对于云数据库与DBA之间关系的看法,并以几个实例说明了云数据库的作用,他认为, 云上提供的服务就是重复性高的工作的标准化和自动化。

对于DBA来说,周耀荣认为应该考虑六方面的问题,第一是从业务整体运维的角度,就是说当购买云服务的时候差异性体现在哪里,需要考虑清楚。第二是异常的处理,就是DBA需要具有异常处理的能力,这样才能在云数据库时代仍然有竞争力。第三是性能容量管理,DBA要从整个业务的视角,对性能容量进行管理。第四是故障透视能力,故障的透视能力,是作为DBA管理员很重要的能力。第五,架构规划,比如高可用架构,要怎么拆分,容灾如何考虑,这都是需要DBA考虑的问题。第六,SQL上线审核。当公司业务发生变更的时候,怎么把控上线的风险会不会对数据造成误删除,这些都是需要DBA考虑的。

周耀荣总结到,规划类的、优化类、主动管理类的工作,在未来比较长的一段时间内还是需要DBA解决的,因此,DBA大可不必担心失业问题。

周耀荣最后给到场的观众分享了珍爱网目前在数据库方面正在做和计划要做的事情,谈到了涉及的相关技术,并为到场的观众展示了珍爱网在数据库建设方面的成果。

最后,沙龙活动在一片热烈的掌声中落下了帷幕,而腾讯云+社区技术沙龙活动将会继续延续下去,而下一站将是,对此感兴趣的朋友们可千万不要错过啊!

1.微信群:

添加小编微信:color_ld,备注“进群+姓名+公司职位”即可,加入【云计算学习交流群】,和志同道合的朋友们共同打卡学习!

2.征稿:

投稿邮箱:liudan@csdn.net;微信号:color_ld。请备注投稿+姓名+公司职位。

推荐阅读

  • 技术争鸣!七大主题报告,四大技术专题,AI开发者大会首日议程全回顾

  • AR热度不在? NO! 三星开发者大会将聚焦AR

  • 人工智能进行时:人类的未来与未来的人类

  • 为了释放AI在边缘计算的力量 英特尔又出手了

  • 全面梳理百度世界大会,李彦宏又新吹了几个牛!

  • 腾讯将创办腾讯云启商学院,马化腾任荣誉院长

  • 扎堆出海的抖音、今日头条、UC 头条们后来怎么样了?

  • 创业者老板被程序员「割」了韭菜?

  • 唇语识别技术的开源教程,听不见声音我也能知道你说什么!

  • 月薪30k+项目分红,哥大教授带你探索“区块链+AI”,抓紧时间投简历吧!手慢无

  • 她说:真的,没事别嫁程序员


扫描以下二维码即可参与“2018 年 CSDN 软件开发者大调查活动”!我们还为你准备了精美的礼品,华为 nova3 智能手机、小爱智能音箱、CSDN 背包、CSDN 定制T恤、数百本技术图书等你来拿!参与即有机会获赠,还等什么,快来试试吧!

↓↓↓  点击【阅读原文】查看「CSDN云计算」往期精彩内容

从实践出发,腾讯云深入解读云端数据库技术相关推荐

  1. 最佳实践 | 用腾讯云AI语音识别零基础实现小程序语音输入法

    先回顾下,生活.工作中你使用过哪些语音识别相关的产品或者服务? 培训/考试相关的小程序,使用语音识别来判断回答是否正确: 英语口语练习的小程序,使用语音识别来打分: 你画我猜类的小程序,使用语音识别来 ...

  2. 腾讯云TStack获“下一代云计算技术创新奖”,助力云生态信息创新发展

    12月16-17日,由中国电子技术标准化研究院主办的"第九届中国云计算标准和应用大会"在北京顺利召开.腾讯云TStack首席架构师贺阮博士受邀参会,并在主题为"腾讯私有全 ...

  3. 腾讯云三大自研数据库之一 TBase 开源后首次重磅升级,复杂查询性能最高提升十倍

    7月13日,腾讯云自研分布式HTAP数据库TBase正式发布最新开源版本.这款被欧洲航天局作为" Gaia Mission"行星探索项目的核心数据库,迎来了自开源以来的重磅升级.该 ...

  4. 聚焦三航道,腾讯云重推五大数据库新品,现场很赞!

    作为企业IT的核心系统之一,数据库市场正在面临根本性变革.在全面上云的大趋势下,传统的数据库上云模式逐渐无法满足客户业务的快速扩展和智能运维需求,客户需要的是一套能够灵活扩展.智能诊断,支持跨云融合的 ...

  5. 干货,分布式数据库在金融核心场景的落地实践|腾讯云数据库

    金融行业作为国民经济的命脉和枢纽,对底层数据库的能力要求在不断提高.具有高性能.可扩展.高可用等特性的分布式数据库是金融行业数字化转型的重要支撑. 金融企业如何在不同的应用场景下,做好分布式数据库的选 ...

  6. 金融数字化转型落地实践,腾讯云数据库的三问三答

    近期,由中科软科技股份有限公司主办,以"数字保险 科技引擎"为主题的"中国财险科技应用高峰论坛"在北京古北水镇成功举办.论坛聚集400多位来自国内财险公司.国内 ...

  7. 最佳实践 | 用腾讯云慧眼人脸核身为诚信考试保驾护航

    点击参与:腾讯云AI用户实践有奖征稿活动! 2020年新冠疫情爆发后,疫情之下的考试在各国均受到不同程度的影响,"延期"."取消"."补考" ...

  8. 短信接口在本地调试正常_Pivotal实践:腾讯云短信小应用

    最近登录了一下腾讯云控制台,发现账户下居然每月有100条免费短信可以使用.结合一下最近成都阴晴不定的天气,女友上班老是忘记带伞的现状,于是决定开发一款天气短信提醒小应用,每天早上定时给女友发送天气状况 ...

  9. 最佳实践 | 用腾讯云AI人像变换给自己一次“跨越年龄的体验”

    互联网时代,日新月异的技术更迭让大众的娱乐方式变得更加多元化.越来越多线上娱乐体验成为新潮流,不少公司各出奇招,推出了AI人像特效.VR游景点.可交互影视剧.元宇宙等:人们花在线上娱乐体验的时间越来越 ...

最新文章

  1. AIX 操作系统中AIO、DIO、CIO 的相关概念介绍 (一)
  2. 在js中使用createElement创建HTML对象和元素_无需整理
  3. node JS 微信开发
  4. python中str是什么函数_python str函数怎么用
  5. P2305 [NOI2014] 购票(点分治、斜率优化)
  6. tomcat原理解析(一):一个简单的实现
  7. 【OpenGL】详解第一个OpenGL程序
  8. Redis系列教程(六):Redis缓存和MySQL数据一致性方案详解
  9. cmdb python 采集虚拟机_Python编程(三十四):CMDB后台管理、封装自定义JS组件、前端td标签定制显示内容及属性...
  10. cocos2dx3.2 画图方法小修改之 C++ final学习
  11. Ubuntu18.04安装openjdk-7-jdk
  12. 理解 Delphi 的类(十一) - 深入类中的方法[12] - 消息方法
  13. Android之xUtils-3.0数据库框架详解
  14. Jsp和Servlet的关系(通俗易懂)
  15. ssis oracle配置,[SSIS][Oracle]安裝 Oracle Driver 提供 SSIS 使用
  16. 软件测试预演环境,什么是软件测试用例预演 有何优点?[3]
  17. 《信息系统布线技术》实验报告之交叉线制作
  18. 图解设计模式读书笔记(十三)——Mediator(仲裁者)模式
  19. 7月第1周风控关注 微信支付SDK曝XXE漏洞 可伪造订单
  20. 给edittext每行加下划线

热门文章

  1. 小森生活显示无可用服务器,《小森生活》无可用游戏服务器解决教程 无可用网关服务器怎么办...
  2. 计算机与自动化专业有哪些学校,全国自动化专业大学排名
  3. maven 公共模块依赖_idea 创建多模块依赖Maven项目
  4. 最专业的业余数学家!
  5. 引发外国网友刷屏的“大国重器”到底什么水平?
  6. 从单亲家庭内向小男生到哈佛耶鲁全奖,百万年薪的“男神学长”活出了一部励志偶像剧!
  7. (pytorch-深度学习系列)使用重复元素的网络(VGG)
  8. 搭建本地 HTTPS 环境
  9. 查询数据库每天更新的数量
  10. 01背包问题(DFS解法)