zoukankan      html  css  js  c++  java
  • 探讨大数据量处理<续篇>

    接上面说用到NOSQL,但这个概念太笼统,hadoop做法: (在我看来1-3点算是NOSQL产品处理的了)

    1,首先一般是用MAP/VALUE进行分布式存储

    保证可靠性:

    分布式缓存,一般比如N个分布式节点,存储时同时放进M个中,你查询数据只要从N-M个中读到没此数据即为无(Quorum NRW),当然还可以进行日志记录法:

    记录每次的日志操作,当机器宕机可以从日志中恢复内存中的数据,redis就有这种模式做法

    2,然后对相同的操作进行合并 ,即MAP/reduce 操作(MapReduce)

    如何reduce操作:可以通过bloom-filter 算法①初刷, 进行找出相同的对象操作,然后对它进行reduce

    3,然后进行文件存储(文件系统)

    4,进行运算(拆逻辑层)

    5,入库(持久化存储层)

    上面每一点都可以去研究,做起来都不简单;

    如淘宝对应的

     1,2 Tair; 3 TFS;4HSF;5 TDDL;

     -----------------------------------------------------------------------------------------------------------------------------------------------

    ① bloom-filter 算法简单来说就是把一系列对象进行HASH值存储,然后定义一个足够大的BIT数组把对应位数的值设置为1,然后比较对象是否存在时可以从BIT数组中查找,当找到对应值有一个为0证明改对象肯定不存在;此算法好处是高效,空间最大利用率,但不能保证找出全是1的为存在对象,只能找出有一个为0的对象肯定不存在;

    WEB大数据量处理的目标思路:

    我认为就是用低成本的硬件做分布式,实现大数据量处理的高性能(即保证数据的可用性,只需要最终一致性),可扩展性的处理;

    补充上面的

    其实上面说的的数据库还可以很多方面的优化, 比如80/20的原则,比如树节点存储,比如其它数据库优化

    说白了, 大数据处理就是一个字  ‘’ 

    另:这篇文章我也是尝试研究,有偏差请指出,共同学习,文章慢慢补充中

  • 相关阅读:
    java mybatis
    java influx DB工具类
    java redisUtils工具类很全
    java 任务定时调度(定时器)
    java 线程并发(生产者、消费者模式)
    java 线程同步、死锁
    Redis 集群版
    Redis 单机版
    linux下配置zookeeper注册中心及运行dubbo服务
    vue搭建前端相关命令
  • 原文地址:https://www.cnblogs.com/springsource/p/2425444.html
Copyright © 2011-2022 走看看