华人澳洲中文论坛

热图推荐

    64架构模板:“存储层”技术

    [复制链接]

    2022-10-5 06:43:34 24 0

    顺序员瓶颈冲破架构师?架构设计的实践与理论
    每个顺序员都有一个成为架构师的梦想,奈何手里无枪无奈扑灭心中奇梦。本系列文章分享如何让你手里有枪,只有致力,技术的梦想一定能完成,这应该是泛滥梦想中离地表比来的一个。
    互联网的规范技术架构
    得多人关于BAT的技术有一种莫名的崇拜感,感觉只要蠢才能力做出这样的零碎,但通过后面对架构的实质、架构的设计准则、架构的设计模式、架构演进等多方位的讨论和论述,
    你能够看到,其实并无甚么奥秘的气力和魔力融会在技术外面,而是业务的不停开展推进了技术的开展,这样一步一个足迹,继续几年乃至十几年的开展,能力达到以后技术繁杂度和先进性。
    抛开BAT各自差别很大的业务,站在技术的角度来看,其实BAT的技术架构根本是同样的。再将视角缩小,你会发现全部互联网行业的技术开展,最初都是必由之路。
    假如你正处于一个守业公司,或者正在为成为另外一个BAT拼搏,那末深化了解这类技术模式(或者叫技术构造、技术架构),关于本人和公司的开展都大有裨益。
    互联网的规范技术架构如下图所示,这张图根本上涵盖了互联网技术公司的大部份技术点,不同的公司只是在详细的技术完成上稍有差别,但不会跳出这个框架的范畴。


    从本期开始,我将逐层引见每个技术点的发生配景、运用场景、症结技术,有的技术点可能曾经在后面的架构模式部份有所波及,
    因此就再也不具体展开技术细节了,而是将症结技术点分门别类,进而造成一张架构大图,让架构师对一个公司的总体技术架构有一个残缺的全貌认知。
    明天咱们首先来聊聊互联网架构模板的“存储层”技术。
    SQL
    SQL即咱们通常所说的瓜葛数据。前几年NoSQL火了一阵子,得多人都了解为NoSQL是彻底丢弃瓜葛数据,整个采取非瓜葛型数据。
    但通过几年的实验后,大家发现瓜葛数据不成能彻底被丢弃,NoSQL不是No SQL,而是Not Only SQL,即NoSQL是SQL的增补。
    所以互联网行业也必需依赖瓜葛数据,斟酌到Oracle太贵,还需求专人保护,个别状况下互联网行业都是用MySQL、PostgreSQL这种开源数据库。
    这种数据库的特征是开源收费,拿来就用;但缺陷是机能比拟商业数据库要差一些。
    跟着互联网业务的开展,机能要求愈来愈高,必定要面对一个问题:将数据拆分到多个数据库实例能力知足业务的机能需要(其实Oracle也同样,只是时间迟早的问题)。
    数据库拆分知足了机能的要求,但带来了繁杂度的问题:数据如何拆分、数据如何组合?
    这个繁杂度的问题解决起来其实不容易,假如每个业务都去完成一遍,反复造轮子将致使投入挥霍、效力升高,业务开发想快都快不起来。
    所以互联网公司盛行的做法是业务开展到一定阶段后,就会将这部份功用独立成两头件,例如百度的DBProxy、淘宝的TDDL。
    不外这部份的技术要求很高,将分库分表做到自动化战争台化,不是一件容易的事件,所以个别是范围很大的公司才会本人做。
    中小公司倡议使用开源计划,例如MySQL民间保举的MySQL Router、360开源的数据库两头件Atlas。
    如果公司业务持续开展,范围持续扩张,SQL办事器愈来愈多,假如每个业务都基于一致的数据库两头件独立部署本人的SQL集群,就会致使新的繁杂度问题,详细表示在:
    数据库资源使用率不高,对比挥霍。各SQL集群离开保护,投入的保护本钱愈来愈高。因此,实力雄厚的大公司此时个别都会在SQL集群上构建SQL存储平台,以对业务通明的方式提供资源调配、数据备份、迁徙、容灾、读写别离、分库分表等一系列办事,
    例如淘宝的UMP(Unifed MySQL Platform)零碎。
    NoSQL
    首先NoSQL在数据构造上与传统的SQL的不同,例如典型的Memcache的key-value构造、Redis的繁杂数据构造、MongoDB的文档数据构造;其次,NoSQL无一例外埠都会将机能作为本人的一大卖点。
    NoSQL的这两个特征很好地补救了瓜葛数据库的缺乏,因此在互联网行业NoSQL的运用根本上是根底要求。
    因为NoSQL计划个别本人自身就提供集群的功用,例如Memcache的统一性Hash集群、Redis 3.0的集群,因此NoSQL在刚开始运用时很便利,不像SQL分库分表那末繁杂。
    个别公司也不会在开始时就斟酌将NoSQL包装成存储平台,但若公司开展很快,例如Memcache的节点有上千乃至几千时,NoSQL存储平台就颇有意义了。
    首先是存储平台经过集中办理可以大大晋升运维效力;其次是存储平台能够大大晋升资源利用效力,2000台机器,假如利用率能晋升10%,就能增加200台机器,一年几十万元就节俭出来了。
    所以,NoSQL开展到一定范围后,通常都会在NoSQL集群的根底之上再完成一致存储平台,一致存储平台次要完成这几个功用:
    资源静态按需静态调配:例犹如一台Memcache办事器,能够按照内存利用率,调配给多个业务使用。资源自动化办理:例如新业务只需求请求多少Memcache缓存空间就能了,无需关注详细是哪些Memcache办事器在为本人提供办事。毛病自动化处置:例如某台Memcache办事器挂掉后,有此外一台备份Memcache办事器能立刻接管缓存申请,不会致使丧失得多缓存数据。固然要开展到这个阶段,个别也是大公司才会这么做,简略来讲就是假如只要几十台NoSQL办事器,做存储平台收益不大;但若有几千台NoSQL办事器,NoSQL存储平台就可以够发生很大的收益。
    小文件存储
    除了瓜葛型的业务数据,互联网行业还有得多用于展现的数据。例如,淘宝的商品图片、商品形容;Facebook的用户图片;新浪微博的一条微博内容等。
    这些数据拥有三个典型特点:一是数据小,个别在1MB下列;二是数量微小,Facebook在2013年天天上传的照片就达到了3.5亿张;三是拜候量微小,Facebook天天的拜候量超过10亿。
    因为互联网行业根本上每个业务都会有少量的小数据,假如每个业务都本人去斟酌如何设计海量存储和海量拜候,效力天然会低,反复造轮子也会投入挥霍,所以天然而然就要将小文件存储做成一致的和业务有关的平台。
    和SQL和NoSQL不同的是,小文件存储纷歧定需求公司或者业务范围很大,根本上以为业务在起步阶段就能斟酌做小文件一致存储。
    得益于开源静止的开展和比来几年大数据的火爆,在开源计划的根底上封装一个小文件存储平台并非太难的事件。
    例如,HBase、Hadoop、Hypertable、FastDFS等均可以作为小文件存储的底层平台,只需求将这些开源计划再包装一下根本上就能用了。
    典型的小文件存储有:淘宝的TFS、京东JFS、Facebook的Haystack。
    下图是淘宝TFS的架构:


    大文件存储
    互联网行业的大文件次要分为两类:一类是业务上的大数据,例如Youtube的视频、电影网站的电影;另外一类是海量的日志数据,例如各种拜候日志、操作日志、用户轨迹日志等。
    和小文件的特征正好相同,大文件的数量没有小文件那末多,但每个文件都很大,几百MB、几个GB都是常见的,几十GB、几TB也是有可能的,因此在存储上和小文件有较大差异,不克不及间接将小文件存储零碎拿来存储大文件。
    说到大文件,特别要提到Google和Yahoo,Google的3篇大数据论文(Bigtable/Map- Reduce/GFS)开启了一个大数据的时期,而Yahoo开源的Hadoop系列(HDFS、HBase等),根本上垄断了开源界的大数据处置。
    固然,江山代有才人出,长江后浪推前浪,Hadoop后又有更多优秀的开源计划被奉献出来,当初随意走到大巷上拉住一个顺序员,假如他不知道大数据,那根本上能够肯定是“火星顺序员”。
    对比对于Google的论文构建一套残缺的大数据处置计划的难度和本钱真实过高,并且开源计划当初也很成熟了,
    所以大数据存储和处置这块反而是最简略的,由于你没有太多选择,只能用这几个盛行的开源计划,例如,Hadoop、HBase、Storm、Hive等。
    实力雄厚一些的大公司会基于这些开源计划,结合本人的业务特征,封装成大数据平台,例如淘宝的云梯零碎、腾讯的TDW零碎。
    上面是Hadoop的生态圈:

    发表回复

    您需要登录后才可以回帖 登录 | 立即注册

    返回列表 本版积分规则

    :
    注册会员
    :
    论坛短信
    :
    未填写
    :
    未填写
    :
    未填写

    主题16

    帖子23

    积分104

    图文推荐