作者:guduyuweng

原文来源: https://tidb.net/blog/1ed93bfc

Cisco Webex 在成立之初,便致力于将世界各地使用网络的人聚拢起来,协同创意并开展业务,使用户能够实现基于融合实时视频和音频的技术进行扩展学习、专题活动和多媒体演示,省去传统会议的时间和开销。如今,Webex 已成为世界头号网络会议供应商。

使用 TiDB 的业务场景

TiDB 目前是 Webex 比较核心的数据库系统,现在承载的不仅有面向最终用户的项目,同时也有很多面向内部运营和管理的项目。

本节将主要介绍四个上线 TiDB 的项目:People Insight、Meeting Revamp、Canned Report 和 OneView,其中前三个是面向最终用户的项目。

People Insight

People Insight 是 Webex 的新功能。通过 People Insight 的分析页面,用户可以了解使用 Webex 的情况,比如在一个时间段内,开会的数量,在这些会议中与多少人产生了联系或交集、与哪些人的交集更加密切,又有哪些人升级了产品或改变了地理位置等等。从这个业务的特点可以看出,数据不仅要满足每个个体的查询需要,还需要把每个用户在这一段时间所有的交互信息全部保存起来。

上线 TiDB 之前

People Insight 项目在上线 TiDB 之前,使用的是 BI 软件 Qlik。如前文所讲,People Insight 的功能是要把数据展示给用户看,但之前使用 Qlik 的时候就非常受制于软件本身。在使用时,我们需要把所有的数据全部存储在 Qlik 里,每一个站点就是一个全索引的 table,然后每一个 table 放在软件的磁盘里。当需要用到数据的时候,Qlik 就会把数据从磁盘读到内存里,然后再供用户进行多维度的分析和展现。

遇到的问题

这个解决方案存在一个很大的问题就是等待时间过长。Webex 通常会保存 13 个月的历史数据,而我们的一些大客户拥有的数据量非常大,所以每一次当用户打开 People Insight 分析页面时,要等待 Qlik 把数据从硬盘读到内存里,这就导致等待时间过长。而且,无论我们如何优化,用户都需要等一两分钟才能看到他们的数据,可想而知用户体验非常差,这也是我们不能接受的。

上线 TiDB 后

为解决等待时间过长的问题,我们又提出了一个新的解决方案,就是把所有的数据全部都预聚合好,再在它之前放一层 Redis 的缓存,这样一来用户查询数据的速度就会非常快,而且用户体验相较之前也大大提升。后来,我们就把这个业务上线到了 TiDB。所以 People Insight 是 TiDB 在 Webex 上线的第一个数据库。

我们把用户所有的交互信息全部存储在 TiDB 上,每次用户打开分析页面的时候就会查询 TiDB 数据库。在 TiDB 高性能查询特性的支持下,实时的统计结果很快就可以得到并展现出来。在 People Insight 这个项目上面我们有四张大表,最大的一张表有 800 GB 的容量并且单表可达 40 亿条数据,存储的是访客级别的数据。目前,日独立访问人数可达 5,000 个,每天 API 的请求数可达 50,000 个,到现在为止访问量已经超过了 250,000。这里所展示的仅是在美国地区业务的数据,之后该功能上线加拿大和欧洲地区后,也都会建立这样的大表。

Meeting Revamp

Meeting Revamp 是我们上线 TiDB 的第二个面向最终用户的项目。我们的处理方法和 People Insight 一样,也是把所有生产线上用户比较在意的 metrics 聚合好之后存在 TiDB 里供用户使用,这里就不赘述了。

Canned Report

Canned Report 也是一个面向最终用户的项目,目前它只有部分功能和部分报表使用了 TiDB。另外, Canned Report 的元数据是存储在 TiDB 上,供用户查询和下载。

OneView

Webex 上线 TiDB 的另外一个业务是我们的一个内部数据分析门户平台 OneView。OneView 的目的是把所有内部重要的、高级别的 metrics 保存下来,以供我们通过各种时间维度去观察这些核心指标是否有很显著的变化,帮助公司运营和决策。目前,在 OneView 这个项目里,我们把所有的元信息和应用数据全部存储在 TiDB 中。

在上线 TiDB 之前,OneView 的数据是全部都存储在 Oracle 里,但在使用过程中给我们带来了很多的痛点。

虽然 Oracle 有很多函数也非常好用,但首先的一个问题就是 Oracle 的数据库非常昂贵,这在一定程度上增加了我们的业务成本,也使业务的扩展受到了限制。

第二个问题是 Oracle 并不是开源数据库,掌控权不属于我们,这给我们数据库的管理和沟通带来困难。

第三个问题是 Oracle 的大表查询瓶颈。当一张数据库表的行数达到千万级别时,经常会出现查询耗时过长或者查询超时的情况。

最后, Oracle 还有一个大的弊端。我们的数据有很多 Upsert 的需求。原来在使用 Oracle 时,要使用 MERGE WHEN MATCHED 功能,语句比较复杂,容易出错。而 TiDB 可以很容易地实现 Upsert,语句大大简化,这对我们来说就很友好。

由于以上的痛点,我们不得不调研新的数据库解决方案去替换 Oracle,而我们的选择就是 TiDB。

以查询速度为例,在 Hybrid Working Insights 这个 Dashboard 里,我们把 Meeting、Messaging 和 Calling 等超过一年的数据全部都存储在 TiDB 里。不负所望, TiDB 查询速度非常快,1 秒以内就可以把所有的图全部读出来,而这个速度是之前使用 Oracle 时没法比的。

为什么选择 TiDB

前面讲到了 Webex 使用 TiDB 的业务场景,接下来就和大家分享我们最终选择 TiDB 并不断在 TiDB 上线新业务的一些原因,或者说于我们而言 TiDB 的整体优势:

  1. TiDB 存储计算分离的架构设计。使用者可以很容易地按需对计算和存储资源分别进行在线扩缩容,而且这个过程对应用开发和运维人员透明。
  2. TiDB 对于海量数据的高性能读写。我们在使用 TiDB 之前也做过很多性能测试以及稳定性方面的读写测试对比,得到的结论就是 TiDB 的高并发、可扩展、无上限的写入和查询能力表现令我们非常满意,完全可以达到我们的要求。
  3. 方便易用的集群控制工具。 TiDB 的管理工具非常容易使用,使得运维非常容易,极大降低了运维成本。
  4. MySQL 兼容性。TiDB 使用的是 MySQL 的 Driver,开发或迁移的成本很低。同时 TiDB 支持的功能也比较丰富,尤其是对我们最重要的 Join 和 Subquery 等功能与 MySQL 保持了非常高的兼容性,对我们帮助很大。
  5. 完善的中英文文档。在进行初期的数据库调研时,我们就在网上看到了关于 TiDB 的文档。经过一番查看和研究,我们发现 TiDB 的文档非常完善,内容丰富且易上手,这对于我们跨全球协作的工程师团队来说非常重要,使得我们接入业务非常快。
  6. 最后一点很重要的原因就是开源。TiDB 一直坚定地走开源路线,采用宽松的 Apache 开源许可证,一方面我们自己可以对数据库的正确性、稳定性和性能有把握,不受制于软件;另一方面使用开源软件也可以帮我们节省很大一部分费用,这些开源的好处都是像 Oracle 和 Qlik 等软件不支持的。

所以,在综合考虑技术架构的生态系统、开源社区的支持、优质的文档以及 MySQL 的兼容性等因素后,Webex 决定选用具有高可用性的云原生数据库方案 TiDB 去承载这几项业务。

在 Webex 中 TiDB 集群的部署及使用情况

在 Webex 中,已搭建的规模比较大的 TiDB 集群有 6 套,其中在美国搭建了 2 套,一主一备。每套集群中部署 3 个节点的 TiDB 及 9 个节点的 TiKV。现在每套集群的总容量是 22 TB,后续还会继续增加。

我们在欧洲的法兰克福和阿姆斯特丹也搭建了 2 套集群,目前每套集群的总容量是 20 TB。现在正在搭建加拿大的 2 套集群,每套集群的总容量为 21 TB。

美国业务的查询情况

下图所示为 Webex 在美国的生产线上正在使用业务的查询情况。当前平均 QPS 查询为 668,最高峰值可以达到 2,000 以上。

在当前 QPS 的情况下,TiDB 的性能表现非常好,在 80% 分位的查询时间是 6.18 毫秒,在 99.9% 分位为 640 毫秒,不会超过 1 秒钟。

美国业务的写入情况

目前,TiDB 在 Webex 一周的平均写入数据速度可以达到 21 MB 每秒,峰值可以达到 500 M+ 每秒。

TiDB 为 Webex 业务提升带来的好处

业务性能层面

相较于 Webex 之前所采用的数据库解决方案,TiDB 的技术优势让我们明显地感受到业务层面的性能比之前有很大的提升。之前给用户展示可能需要 20 秒左右才能打开页面,但现在打开页面基本无延时,1 秒以内就可以将数据呈现给用户。此外,还要向大家介绍几个很棒的 TiDB 功能,比如上文提到的 Upsert 功能,其简化的语句帮我们解决了很多问题。 TiCDC 增量数据同步工具,它支持创建多个同步任务,向多个不同的下游进行数据同步。之前我们使用 MyCAT 时还要自己做一套 CDC 的机制,去做双 DC 的数据同步。但 TiCDC 原生支持增量数据同步至下游数据库,并且支持超大规模集群的水平扩展,对我们的业务帮助很大。另外,TiDB Dashboard 也是一个很好用的工具,其中的慢查询的页面访问显示非常方便,可以帮我们定位有潜在问题的查询语句,快速分析和优化 SQL 语句执行的性能问题。整体而言,TiDB 的功能和工具都很易于上手,且技术支持也很到位,对我们的业务性能提升帮助很大。

业务推广层面

在业务推广层面,TiDB 可以帮助我们更快地上线业务,从而可以加快我们的业务推向市场的速度。TiDB 的弹性扩容可以让我们获得在不同业务负载下的持续高性能。最初要预先加工聚合数据的处理流程,直接把原始数据存储到 TiDB,然后在用户请求时进行关联和聚合查询,获得很不错的查询性能。这样一来,用户得到完全实时的数据统计,同时开发和运维复杂度的降低使得后续新功能的开发速度得以加快、更加敏捷,后续我们再持续进行优化和推广。这样敏捷的开发与运维对于我们快速抢占市场是非常高效的。

未来计划

TiDB 的开源属性是其本身的一大亮点,非常具有吸引力,而它开源社区的成熟度和活跃度也是我们坚定使用 TiDB 的一个重要原因。在未来,我们希望可以与 TiDB 社区有更多的合作,也可以以个人的身份更多地参与到 TiDB 开源社区中,为我们的业务提升也能助一把力。

TiDB 在 Cisco Webex 架构中的部署和应用相关推荐

  1. 数据增量更新定义_技术资讯 | TiDB在准实时数据仓库中的实践

    " OPPO大数据中心在2019年初承接了接入某业务线核心数据的重要任务:一期目标是建立一个能提供准实时大数据查询服务的数据仓库. 我们选用了之前从未在公司大规模正式使用过的TiDB作为核心 ...

  2. Cisco WebEx:企业协作服务中的音频需求

    在LiveVideoStack线上交流分享中,Cisco资深音频算法工程师高华基于思科的企业协作服务产品实践,分析整理了协作服务中遇到的音频需求,详细介绍了思科WebEx meeting 中的音频方案 ...

  3. TiDB 在北京银行交易场景中的应用实践

    作者介绍:陈振东,北京银行软件开发部 北京银行是一家城市商业银行,公司价值位列中国区域性发展银行的首位,依托于中国经济的大环境,北京银行的资产总量在全球千家大银行中名列第 61 位,连续六年跻身全球银 ...

  4. TiDB 5.0 HTAP 架构设计与场景解析

    转载 数据实时化成为业务必须 数字化转型浪潮是现在进行时,在企业数字化转型的过程中,我们看到一个普遍的趋势,企业对"海量.实时.在线"的数据需求变得更加迫切.数字化转型并不是互联网 ...

  5. 成为一栈式数据服务生态: TiDB 5.0 HTAP 架构设计与成为场景解

    作者介绍:马晓宇,PingCAP HTAP 产品部负责人. 数据实时化成为业务必须 数字化转型浪潮是现在进行时,在企业数字化转型的过程中,我们看到一个普遍的趋势,企业对"海量.实时.在线&q ...

  6. 微服务架构中配置中心的选择

    点击上方蓝色"方志朋",选择"设为星标" 回复"666"获取独家整理的学习资料! 来源:r6d.cn/XsTR 目前公司内部微服务架构基础设 ...

  7. Exchange 2003 在多域环境中的部署

    相信大多数Exchange管理员对单域环境中的部署已经非常熟悉,包括单域单台或者多台Exchange服务器的部署,网络中也有很多此类的教程.但是关于如何在多域环境中部署Exchange的文章非常少,在 ...

  8. 面试官:哥们,你们的系统架构中为什么要引入消息中间件?

    点击上方"蓝字", 右上角选择"设为星标" 周一至五早11点半!精品文章准时送上! 本文来自石杉的架构笔记 这篇文章开始,我们把消息中间件这块高频的面试题给大家 ...

  9. 架构中的一切都是权衡

    对于架构合理性的讨论总没有停止过,不同的人站在不同视角下总会得到不同的答案,一个好的架构讨论应该基于现有系统最直接的痛点,比如现阶段业务刚开始,重要的是快,单体架构有可能比微服务更好一些.这个阶段整个 ...

  10. 在微服务架构中做机器学习,真的太难了

    2020-05-29 14:42:56 我曾经参与过很多由深度学习技术驱动的项目,最糟糕的情况就是被迫处理面向微服务的架构,我不是呼吁大家停止使用微服务,但想在面向微服务的架构中推动机器学习项目,很大 ...

最新文章

  1. VDI序曲二十 桌面虚拟化和RemoteApp集成到SharePoint 2010里
  2. ​【Python基础】告别枯燥,60 秒学会一个 Python 小例子(文末下载)
  3. JS 获取URL 后面的参数
  4. AtCoder Grand Contest 021 D - Reversed LCS(区间dp)
  5. 第三讲系统的基本操作
  6. 个人觉得好的文章链接推荐【转载,侵权立删】
  7. Spring/SpringMVC在启动完成后执行方法
  8. php7 viewmodel,ViewModel浅析
  9. window下hive的安装
  10. 《精通linux设备驱动程序开发》——USB
  11. java定时每小时_java 定时任务,每日运行和每小时运行。
  12. Rayman的绝顶之路——Leetcode每日一题打卡6
  13. FlowNet 2.0的阅读笔记
  14. 语义分割 语义分类_路面语义分割
  15. c语言提示函数已有主体,C++中的函数名称粉碎机制和它的逆向应用 筋斗云网络...
  16. Java 8 Nashorn 教程
  17. 上市公司股利分红数据(1991-2020)
  18. Docker安装Elasticsearch及安装中文分词插件
  19. Junbo_kobe-for循环画满天星
  20. 17、GATK使用简介 Part2/2

热门文章

  1. WAP1.x协议栈浅析-WTP协议
  2. linux系统下安装oracle客户端
  3. QQ农场外挂、QQ牧场外挂专偷QQ号
  4. penetration testing report
  5. wajueji.php,独家解析:为什么说斗山DX55-9C是5吨小挖掘机中的新机皇
  6. 建立健全测绘地理信息安全保密管理制度。明确涉密人员管理、保密要害部门部位管理、涉密设备与存储介质管理、涉密测绘成果全流程保密、保密自查等要求。
  7. Android查看应用签名
  8. element ui 弹窗在IE11中关闭时闪现问题修复
  9. powerdesigner 16.5 Could not Initialize JavaVM!
  10. Flash Builder4.7安装