互联网百万级应用的大数据处理问题

上一篇 / 下一篇  2012-03-30 09:39:49 / 个人分类:杂谈

我说的大数据量处理是指同时需要对数据进行检索查询,同时有高并发的增删改操作。记得以前在XX做电力时,几百万条数据,那时一个检索查询可以让你等你分钟。现在我是想探讨下对大数据量的处理,那时我就在想例如腾讯,盛大,动辄数以亿计的帐号,怎么能这么快呢, 于是找到了互联网现在对数据处理的发展。

{2nD"X$w_E,O[-X0  对于大数据量处理,如果是互联网处理的话,一般分为下面阶段:51Testing软件测试网 g E-_%mKr&c | n

51Testing软件测试网9B3L1S7z.F @+TV

  1、第一阶段,所有数据都装入一个数据库,当数据量大了肯定就会出现问题,就像刚刚说的查询,于是想办法。51Testing软件测试网b;PMRiA@

51Testing软件测试网1o$`B&RvC7r|

  2、第二阶段,那时肯定想做缓存机制,确实可以如加上缓存Memcached,但缓存也是治标不治本,数据量太大了也是不行,于是有了下面的方法。

+Bt+}Rw4x'[2c0

r@b4a1U0  3、第三阶段,master-slave模式,进行主从数据库,master提供写,slave进行读,这个适合于有写造成数据库卡的方法,XX那个还是不行,于是——

Jl)\1?0Nm$G0

%W$[L6u~8F0  4、第四阶段,垂直分库,这个意义还是不大,对于这种采集数据的,于是——51Testing软件测试网FT;UpU X P

)[#_wB!z^0  5、第五阶段,进行水平分库,这个不错,记得以前从兴也是按这个分时间水平分库,其实可以分的更细点估计效果更好

7S$P#lJG0

2W"hog7S"Q0S0  6、第六阶段,用nosql做了,关于nosql怎么做可以参考google的bigtable51Testing软件测试网O(NN"Bn+nMv

51Testing软件测试网.oS"}6SC

  其实本文主要目的也是想探讨nosql对大数据量的处理:

u]h7i2R#H,O^Z&A051Testing软件测试网kK*{G;@HIK3^

  NOSQL就是将写操作在内存中进行,定时或按某一条件将内存中的数据直接写到磁盘上,一定基础上是解决了一些问题:51Testing软件测试网*M9X%`9rem0z"I%Lf

51Testing软件测试网yb^l"f;Zz7D t

  1、高并发读写的需求51Testing软件测试网!e(RA#@ v ]?9h^H

51Testing软件测试网i!w;JNBn

  2、海量数据访问的需求51Testing软件测试网dRm jx0E

51Testing软件测试网8y9\5I7LyV!IH

  3、数据库横向扩展性的需求

}l O&hZ051Testing软件测试网[^3Tt.zd

  CAP理论来说,nosql是牺牲了一致性,做到了AP,一致性只是保证了最终一致性。

%M-g*DeNl U+e J051Testing软件测试网 O(l/vE}5D

  缺点也很明显:51Testing软件测试网:^G!v M5YU S*M r

!vF8dX*c+N U6`0  1、当机器挂了数据将会丢失,可以考虑共享内存解决。51Testing软件测试网.j#ThI!C

\?r&{+?Q|0  补充:其实这里可以展开了讲,一种是通过共享内存来实现。

2`#bJ6?$Iy0

kye2O,n0ah0  集群内存:根据的是Quorum NRW理论,比如你有N台机子用来集群,每次你进行读写数据时可以至少要同步到X个节点才算成功,所以你每次读数据时只需要读大于N-X个节点就能保持你的正确率,其实就是对数据进行的冗余备份,不过我们存的是内存,相对于直接的磁盘操作,跨网络进行内存操作可以更快。51Testing软件测试网$YC1Y1g:R-f/{

51Testing软件测试网w/`$aE.z

  其实还一种保证数据一致性,就是记录日志,当数据每次写操作内存时都进行日志记录,然后再在内存中进行写操作,至少很多数据库就是这样做的,如redis。

S3d'J*^X6JSk0

+R&]7@,Ac|+CI0  2、内存的限制,内存有限当写数据操作太大的时候内存也会爆。51Testing软件测试网 f9e9\4N`w6e

51Testing软件测试网.`Q Z _3OI

  解决:Bigtable的做法是通过bloom-filter算法合并掉相同的操作,比如UPDATE A='A' ,update A='B'时可以直接合并了。51Testing软件测试网2{ e(iS-S~&m

&})Of/vY/a*M2l~0  基本理论基础

;gsN?%}%K1x051Testing软件测试网C:e;t0Vp0qc

  nosql理论基础:内存是新的硬盘,硬盘是新的磁盘51Testing软件测试网U"N E I!S/Nui

51Testing软件测试网-b1c3E9c/LRa

  关系型数据库都要实现事务ACID,即:原子性(Atomicity),一致性(Consistency),隔离性(Isolation), 持久性(Durability)。51Testing软件测试网1X:`ci+x Q

51Testing软件测试网,g4EjI6@7J6O

  CAP理论:

2UsMnJ~YS0

5i{.yx/M_Oe0  ● Consistency 一致性51Testing软件测试网'N)w%d:w,B$l`5oQ

g!Tv(b6t0  ● Availability -可用性51Testing软件测试网PU:K1C:M(?5P)oG

51Testing软件测试网z9pDtgS@q[2l1H

  ● Partition -容错性51Testing软件测试网U-O&y'_w \

f#k8}}Q.r7Ok8jv0  大多数NoSQL数据库都不支持事务,不支持SQL等,所以还是得保留关系型数据库。现在有人提到用内存数据库, 总体如果是简单业务来说,NOSQL的速度比内存数据库更快,但NOSQL最大缺点,不支持事务,不支持SQL查询等。

9ef5JZh(Q0

TAG:

 

评分:0

我来说两句

Open Toolbar