本文主要先介绍了亿方云,进而谈及了数据架构,着重分析了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方式的。

转载: https://yq.aliyun.com/articles/346482​

交流

如果大家对HBase有兴趣,致力于使用HBase解决实际的问题,欢迎加入Hbase技术社区群交流:

微信HBase技术社区群,假如微信群加不了,可以加秘书微信: SH_425 ,然后邀请您。

​  钉钉HBase技术社区群

云Hbase数据库在亿方云实践之路的更多相关文章

  1. 亿方云(用电话或者qq沟通是远远不够的,容易忘还不能反复催,最好的方式就是指定一个平台,团队内的人定期查看最新记录)

    作者:城年链接:http://www.zhihu.com/question/20579359/answer/106319200来源:知乎著作权归作者所有,转载请联系作者获得授权. 更新,文字发完后,好 ...

  2. 腾讯云原生数据库TDSQL-C架构探索和实践

    作为云原生技术先驱,腾讯云数据库内核团队致力于不断提升产品的可用性.可靠性.性能和可扩展性,为用户提供更加极致的体验.为帮助用户了解极致体验背后的关键技术点,本期带来腾讯云数据库专家工程师王鲁俊给大家 ...

  3. 云原生数据库崛起,阿里云POLARDB当选世界互联网领先科技成果!

    第六届世界互联网大会来了!千年水乡古镇乌镇又一次吸引了全世界的目光. 刚刚,阿里云自研数据库POLARDB在会上当选世界互联网领先科技成果.POLARDB解决了企业在云时代的数据库难题,帮助企业在数小 ...

  4. 云HBase备份恢复,为云HBase数据安全保驾护航

    摘要: 介绍了阿里云HBase自研备份恢复功能的基本背景以及基本原理架构和基本使用方法.   云HBase发布备份恢复功能,为用户数据保驾护航.对大多数公司来说数据的安全性以及可靠性是非常重要的,如何 ...

  5. 大数据时代数据库-云HBase架构&生态&实践

    业务的挑战 存储量量/并发计算增大 现如今大量的中小型公司并没有大规模的数据,如果一家公司的数据量超过100T,且能通过数据产生新的价值,基本可以说是大数据公司了 .起初,一个创业公司的基本思路就是首 ...

  6. 云开发数据库VS传统数据库丨云开发101

    云开发数据库与传统数据库的不同 在小程序·云开发中,最核心的便是三大组件:数据库.云存储和云函数,从今天开始,我们将开始隔日更的专栏文章,云开发101,在第一周,我们将从最最核心的数据库开始说起. 云 ...

  7. 亿级日PV的魅族云同步的核心协议与架构实践(转)

    云同步的业务场景 这是魅族云同步的演进,第一张是M8.M9,然后到后面的是MX系统,M9再往后发展,我们的界面可以看到基本上是没有什么变化的,但本质发生了很大的变化,我们经过了一些协议优化,发展到今天 ...

  8. 亿级日PV的魅族云同步的核心协议与架构实践

    声明:本文根据msup和魅族联合举办的<第三期魅族技术开放日-架构设计与优化>录音整理原创首发,转载或节选内容前需获授权. 嘉宾:沈辉煌,魅族高级架构师,魅族云同步负责人.2010年加入魅 ...

  9. 日吞吐万亿,腾讯云时序数据库CTSDB解密

    一.背景 随着移动互联网.物联网.大数据等行业的高速发展,数据在持续的以指数级的速度增长,比如我们使用手机访问互网络时的行为数据,各种可穿戴设备上报的状态数据,工厂中设备传感器采集的指标数据,传统互联 ...

随机推荐

  1. perl学习之:use & require

    相同: 都可以用来引用module(.PM). 不同: 1) 区别在于USE是在当前默认的@INC里面去寻找,一旦模块不在@INC中的话,用USE是不可以引入的,但是require可以指定路径: 2) ...

  2. vim的操作命令

    vim常用命令 在命令状态下对当前行用== (连按=两次), 或对多行用n==(n是自然数)表示自动缩进从当前行起的下面n行.你可以试试把代码缩进任意打乱再用n==排版,相当于一般IDE里的code ...

  3. IDEA+Tomcat热部署自动编译

    https://www.cnblogs.com/1024zy/p/6344000.html 之前太傻瓜了,一直以为用了IDEA改了类或者js的时候全都要手动构建发布,其实不用,IDEA这么好的工具怎么 ...

  4. python和搜索

    # -*- coding: UTF-8 -*- import re # 搜索逻辑 def querylogic(list): query = {} if len(list) > 1 or len ...

  5. hust 1017 dancing links 精确覆盖模板题

    最基础的dancing links的精确覆盖题目 #include <iostream> #include <cstring> #include <cstdio> ...

  6. bzoj 3772 精神污染 主席树+dfs序

    精神污染 Time Limit: 10 Sec  Memory Limit: 64 MBSubmit: 637  Solved: 177[Submit][Status][Discuss] Descri ...

  7. 【UOJ179】线性规划(单纯形)

    题意: 思路:单纯形模板 ..,..]of double; idx,idy,q:..]of longint; c:..]of double; n,m,i,j,op,x,y:longint; eps,m ...

  8. 【BZOJ1430】小猴打架(Prufer编码)

    题意:求n个点带编号生成树的不同加边序列个数 n<=10^6 思路: WJMZBMR:额.首先他们打架的关系是一颗无根树,就有n^(n-2)种情况,还有打架的顺序,是(n-1)!种,乘起来就可以 ...

  9. 找了两个小时的错误,net.sf.json.JSONException: JSON keys cannot be null.

    因为数据库里面一条记录插入的是NULL,所以导致报了net.sf.json.JSONException: JSON keys cannot be null,找了半天都找不出来问题所在,其他人又都可以启 ...

  10. Markdown编辑器及语法

    dillinger 漂亮强大,支持md, html, pdf 文件导出.支持dropbox, onedrive,google drive, github. 来自国外,可能不够稳定. MaHua 小众软 ...