云Hbase数据库在亿方云实践之路

简介: 2017云栖大会HBase专场,亿方云科技CTO 王成军带来HBase在亿方云客户端同步系统中的应用实践的演讲。本文主要先介绍了亿方云,进而谈及了数据架构,着重分析了HBase实践,最后对亿方云HBase演进和应用作了分享。

2017云栖大会HBase专场,亿方云科技CTO 王成军带来HBase在亿方云客户端同步系统中的应用实践的演讲。本文主要先介绍了亿方云,进而谈及了数据架构,着重分析了HBase实践,最后对亿方云HBase演进和应用作了分享。
以下是精彩内容整理;

亿方云

1


亿方云做的主要是文件管理,目前主要面向企业客户,大家可以理解成为企业版的网盘,除了个人网盘所具备的功能以外,还有基于企业的内部组织架构的信息管理需要,所以它会涉及到更多的企业内部办公协作场景。平时你自己一个人手机上需要看一个文件,PC端上需要看一个文件,你在多终端同步使用的时候,当协作跨了很多人,我们有一个小的工作组,大家做一个项目,大家希望互相之间能够很快地拿到其他人更新的文档,比如说共同去写一份文档的时候,希望能够及时地看到对方作出的修改内容。

2


我们已经逐步把自己的工作做了一些云端化的处理,企业也会考虑这些场景,于是就有一系列的厂商来提供这样的服务,所以我们需要基础上的架构、平台来提供技术上的能力。我们首先要解决文件得有地方存,其次文件能够被搜索,文件能够被察看、预览、编辑,还有权限的设置。

3


说到具体产品的功能,其实我们在日常生活当中对文件的使用是一个比较随意的行为,比如创建一个文件不会对创建文件的动作谨慎,当你去做文件管理工具的时候,特别是云端文件管理工具的时候,文件处理的量级从一开始就会变得非常大。目前来看,我们的处理量级每天日增文件量大概在一百万左右,这还不包括去修改的一些文件和增量上的补充,只是净增长。同时,由于这些文件的操作,就会产生对于文件状态上的变化,哪怕你只改了一个字,这个文件也不一样了。意味着你对文件的状态和它的变更信息处理的信息量级一定会非常大。
适合我们的技术选型有什么呢?如果一个产品一开始量级不是很多,你的用户也不是很多的时候,那你所有东西直接丢给关系型数据库也是可以的。但是当数据快速地积累到了亿、十亿,那么关系型数据库吃不消了,就需要想各种各样的办法,在早期没有很好的分布式系统之前,我们采取把数据做一些水平拆分,自己建一些分库分表的规则。那个时候游戏数据比较多,直接分区,区与区之间是天然分离的,把很多复杂的部分留给了业务处理。
做文件管理与很多其他的系统不太一样,我们从第一天设计的时候就必须要按照数量级很高的标准来要求,只要做文件,数据只有增,没有减,哪怕存在那里,可能十年没有访问,但是不能删除,所以数据的量级永远在那里。的确,热点是存在的,数据不断向前递进,其实文件只有新的热度才会很高,伴随着现在很多数据挖掘的工具,很多人开始把历史数据利用起来。当我们为客户提供这类特殊的场景化服务以后,会发现数据热度会产生一些变化,意味着你在设计系统的时候会面临新的问题,有很多数据热点的分布可能不能按照你所想象的那样,我们会想一些办法,当你去提供对应的一些业务场景的时候要基于这个业务场景再设计一个热点分布的一套规则。

数据平台架构

4


数据平台架构是我们在做数据整理和分析的时候通用的场景。智能计算数据量级比较多,需要很多规则进行计算,这些规则不太可能自己人工地去维护所有规则,需要通过一些方式来不断完善数据。

实现场景

跨区域间文件外部协作

5


6


大家想象一下,网游的服务器是分区的,我们在不同区上的玩家可以PK,意味着他们之间是需要有数据交互的。如果你一开始就做了分区,意味着他们有数据交互的时候就需要建立一些数据联系,但是数据联系从理论上来说没有办法预计得到多少,有可能A区和D区所有玩家都因为搞一次活动全部建立了联系,这种联系需要数据访问的可能性。
网游有一个地方对于延时是很敏感的,所以导致它在分区上做了处理。我们这个场景下能见的处理对延时不是很敏感,但是对于流量和带宽非常敏感。比如说下一个订单的请求,所有流量传递,订单请求总共三到五次,全部流量消耗也就3到5兆,还包括中间的图片传输流量,如果用文件,一个文件就是三到五兆的流量。当文件要考虑它的流量和带宽场景的时候,就必须得做一些分区化的处理,比如说北京的用户,希望他能够就近地访问北京相应的存储。如果有一家企业自己需要在不同的地方去办公,同时还需要跟不同区域上的企业去协作,那么就需要建立这种联系,当他们需要使用文件的时候,我们希望能够在最近的位置上去使用,如果不是就近就需要建立一些联系。
这个关联关系怎么来存放?相当于构建了一个非常大的文件指针索引,指向真实的物理位置,这个物理文件的指针如果用关系型数据库来做不是特别合适,它的查询场景很单一,不太可能会有太多的关联性,更多的场景下都是以单点的查询为主。如果从演进的角度来说,开始也不是放在HBase里,也是放在数据库里,因为数据很少,当数据有几亿的时候根本没有办法处理,逼迫我们采取策略,把这部分数据梳理下。

文件实时消息推送

7


8


比如有一个群,这个群里面有很多人,消息其实就推送给很多人,而不是单个点发送一次,我直接只发到服务器,服务器会把这个消息推送给群内其他成员。
文件的使用为什么会出现这种情况?举一个例子,自己在多终端使用,你在电脑上编辑了文件,对文件做了一些修改,手机上同时也在查看这个文件,查看的过程当中这个文件变更了,很多人觉得这没有关系,重新刷新一下,但是这是你主动的行为,主动刷新才行。当然也可以搞一个定时器,一分钟刷新一次,这种情况对于我们某些特定情况来说是不成立的,比如说有限的时间内正在审查一些特定的文件,在审一份合同稿几百页,整体审查一次就疯了,你不告诉我哪儿有变更不可能把这份文件审阅完。很多情况下,我们是一个协作的过程,一定会有修改,需求往往会有变更。既然有这样的场景,我们就要面临这样的问题,把变更的消息能够快速地通知到你。

亿方云Hbase演进之路

9


我们当初是没有一个完整的数据处理架构,当初设计这部分内容时候甚至不觉得这个信息需要做长久化,因为时效性非常短,文件最终状态才是大家关心的,过程当中的消息似乎没有太大的保存价值。但是大家想象一个场景,创建一个空文件,文件名字叫“新建文档”,我马上得重命名一下,假如我们不做持久化,也不把时序做处理,信息丢过去终端先收到了文件的改名,然后才收到了创建文件,这个时候这两个操作还能够成功吗?改名的时候这个文件还没有创建,改名字的操作不见了,原来这个文件的操作是需要有时序的。
这就引出问题,一方面要对信息做持久化,另一方面要对后一个任务处理。我们有很多的文件处理是需要有上门的情况,就必须要对时序做特定的标注,然后做特定处理。新建、编辑、修改、删除以及分享,或者我发起了希望你来上传的操作,把我的权限给到你,让你来上传,那么这些操作其实都需要先有一个消息给到对方,让对方把对应的消息做处理,这个消息对写起到的主要作用就是把前面抛过来的不管是数据变更也好、文件操作也好,处理掉以后丢给后面的推送消息任务,让这个消息推送到某客户端上面,这还涉及到端上有订阅机制,订阅的信息也要分设备、分终端、分用户。有的时候大家会遇到这样的情况,除了普通的客户端以外,还会建立web上的推送消息。
我们用云端HBase最大的好处是,以前我们所做的事情有人帮我们做了,特别是运维上的工作,我们现在基本上不太关注HBase够不够用问题。现在很多的基础性工作由阿里云帮我们做。

Hbase应用

对于文件操作的信息其实是一项非常好的风控信息来源,当行为是一系列集合,当这个集合符合一定模型的时候就会找到它的操作背后所做的初衷。举个例子来说,公司里某位程序员因为各种不满意,走之前把公司的代码带走了,文档都删了,企业里现在的信息资产都是文件的形式,这些东西如果突然没有代价很大。即使这个操作是可逆的,但是一样会造成损失,在恢复的时间就要付出更大的代价。我们需要有一个非常好的技术信息体系来支撑,操作必须得有上下文的关联关系,是能够从中间截断的,需要把原来很多操作剥成上下文可以隔离的,同时,推送一条消息给老板,说这个行为有一些什么倾向。
现在已经开始提供一些基于文件内容的分析,当你看视频的时候,会发现优库有一些打点的关键节点,比如说《速度与激情》,就是希望看到翻车的那一段视频,直接找到那个点。以前更多的是通过人肉编辑方式,如果我们能够具备对内容做一些分析基础就可以慢慢地把这件事情做起来。
文件的元数据是对文件做一些分类标签,它属于人文社科,还是属于化学等等,这些元数据的存放是非常符合Key value方式的。

相关实践学习
lindorm多模间数据无缝流转
展现了Lindorm多模融合能力——用kafka API写入,无缝流转在各引擎内进行数据存储和计算的实验。
云数据库HBase版使用教程
  相关的阿里云产品:云数据库 HBase 版 面向大数据领域的一站式NoSQL服务,100%兼容开源HBase并深度扩展,支持海量数据下的实时存储、高并发吞吐、轻SQL分析、全文检索、时序时空查询等能力,是风控、推荐、广告、物联网、车联网、Feeds流、数据大屏等场景首选数据库,是为淘宝、支付宝、菜鸟等众多阿里核心业务提供关键支撑的数据库。 了解产品详情: https://cn.aliyun.com/product/hbase   ------------------------------------------------------------------------- 阿里云数据库体验:数据库上云实战 开发者云会免费提供一台带自建MySQL的源数据库 ECS 实例和一台目标数据库 RDS实例。跟着指引,您可以一步步实现将ECS自建数据库迁移到目标数据库RDS。 点击下方链接,领取免费ECS&RDS资源,30分钟完成数据库上云实战!https://developer.aliyun.com/adc/scenario/51eefbd1894e42f6bb9acacadd3f9121?spm=a2c6h.13788135.J_3257954370.9.4ba85f24utseFl
相关文章
|
15天前
|
关系型数据库 MySQL Linux
Linux环境下MySQL数据库自动定时备份实践
数据库备份是确保数据安全的重要措施。在Linux环境下,实现MySQL数据库的自动定时备份可以通过多种方式完成。本文将介绍如何使用`cron`定时任务和`mysqldump`工具来实现MySQL数据库的每日自动备份。
37 3
|
27天前
|
NoSQL Cloud Native atlas
探索云原生数据库:MongoDB Atlas 的实践与思考
【10月更文挑战第21天】本文探讨了MongoDB Atlas的核心特性、实践应用及对云原生数据库未来的思考。MongoDB Atlas作为MongoDB的云原生版本,提供全球分布式、完全托管、弹性伸缩和安全合规等优势,支持快速部署、数据全球化、自动化运维和灵活定价。文章还讨论了云原生数据库的未来趋势,如架构灵活性、智能化运维和混合云支持,并分享了实施MongoDB Atlas的最佳实践。
|
28天前
|
NoSQL Cloud Native atlas
探索云原生数据库:MongoDB Atlas 的实践与思考
【10月更文挑战第20天】本文探讨了MongoDB Atlas的核心特性、实践应用及对未来云原生数据库的思考。MongoDB Atlas作为云原生数据库服务,具备全球分布、完全托管、弹性伸缩和安全合规等优势,支持快速部署、数据全球化、自动化运维和灵活定价。文章还讨论了实施MongoDB Atlas的最佳实践和职业心得,展望了云原生数据库的发展趋势。
|
1月前
|
SQL 关系型数据库 MySQL
Go语言项目高效对接SQL数据库:实践技巧与方法
在Go语言项目中,与SQL数据库进行对接是一项基础且重要的任务
67 11
|
1月前
|
SQL 存储 关系型数据库
添加数据到数据库的SQL语句详解与实践技巧
在数据库管理中,添加数据是一个基本操作,它涉及到向表中插入新的记录
|
1月前
|
Rust 前端开发 关系型数据库
Tauri 开发实践 — Tauri 集成本地数据库
本文介绍了在 Tauri 框架中集成本地数据库的几种方案,包括直接绑定 SQLite、使用第三方数据库库和使用 tauri-plugin-sql-api 插件。最终选择了 tauri-plugin-sql-api,因为它集成简单、支持多种数据库类型,并且与 Tauri 框架深度整合,提升了开发效率和安全性。文章详细介绍了如何安装和使用该插件,以及如何编写核心代码实现数据库操作。
159 2
|
1月前
|
SQL 关系型数据库 数据库
SQL数据库:核心原理与应用实践
随着信息技术的飞速发展,数据库管理系统已成为各类组织和企业中不可或缺的核心组件。在众多数据库管理系统中,SQL(结构化查询语言)数据库以其强大的数据管理能力和灵活性,广泛应用于各类业务场景。本文将深入探讨SQL数据库的基本原理、核心特性以及实际应用。一、SQL数据库概述SQL数据库是一种关系型数据库
66 5
|
1月前
|
SQL 开发框架 .NET
ASP连接SQL数据库:从基础到实践
随着互联网技术的快速发展,数据库与应用程序之间的连接成为了软件开发中的一项关键技术。ASP(ActiveServerPages)是一种在服务器端执行的脚本环境,它能够生成动态的网页内容。而SQL数据库则是一种关系型数据库管理系统,广泛应用于各类网站和应用程序的数据存储和管理。本文将详细介绍如何使用A
59 3
|
1月前
|
关系型数据库 数据挖掘 数据库
解析数据库联结:应用与实践中的 INNER JOIN、LEFT JOIN、RIGHT JOIN、FULL OUTER JOIN 与 CROSS JOIN
解析数据库联结:应用与实践中的 INNER JOIN、LEFT JOIN、RIGHT JOIN、FULL OUTER JOIN 与 CROSS JOIN
60 1
|
2月前
|
消息中间件 缓存 监控
优化微服务架构中的数据库访问:策略与实践
随着微服务架构的普及,如何高效管理和优化数据库访问成为了关键挑战。本文探讨了在微服务环境中优化数据库访问的策略,包括数据库分片、缓存机制、异步处理等技术手段。通过深入分析实际案例和最佳实践,本文旨在为开发者提供实际可行的解决方案,以提升系统性能和可扩展性。
下一篇
无影云桌面