文档章节

分布式介绍

l
 liuqqq
发布于 2016/05/08 21:28
字数 1643
阅读 10
收藏 0
点赞 2
评论 2
1 EC纠删码 & Reed-Solomon 算法

    分布式存储要讲究效益。正常情况下系统对一个数据会通过备份数据以保证数据安全,例如把数据存储为两份或者三份,这个方法的优点是简单,CPU没有计算量,但是存储成本高。

     一些公司未来节约成本会使用EC纠删码算法,如七牛公司,其具体的算法我不清楚,其大概就是把数据氛围28分,计算出4份冗余数据,即以1.1倍的数据量以达到存储三倍的等同效果。百度网盘也用了EC方法来节约存储,如Reed Solomn算法,它把数据划分为8份,通过这个算法计算出4份冗余数据,通过1.5倍数据来达到3倍数据的效果。EC纠删码的缺点当然是CPU的计算量比较高。

   2 多粒度存储

   SATA盘存储数据时候,以4k为一个物理单位作为一个page给文件分配空间,其粒度就是4k。类似的,分布式存储中也要区分数据的粒度。一般地,分布式系统为了在系统存储利用率和io效率之间取得一些平衡,会采取多级粒度,如大文件存储系统如HDFS之类可以8M为最小粒度,以256M为最大粒度,中间有16M、32M、64M和128M四种粒度,共6种粒度。分布式系统可以把集群中每台机器按照某种粒度均匀划分,当外部有文件写申请的时候,metaserver可以根据文件的大小来把文件写在不同的机器上。

   有些内存数据库(如鹅厂的CMEM)可以认为是一个object文件系统,它的object大小默认为84B,当然这个object大小是可以由client决定的。CMEM及其继承者CKV中的datanode(即集群中的数据存储者)每个数据的桶的大小为1G,所以如果你去搜索CKV时候,它自称数据伸缩范围为1G至1P。

   3 串行写以及多次读取

   如上面已经叙述过的,一般大型的分布式系统中如HDFS为了保证数据的CAP中的P一般会把数据存储三份。那么,第一个问题就是选取集群中的那三台机器呢?分布式系统一般写速度要比读速度快,这是其与单机系统有所区别的一个显著特点,因为大部分分布式系统读的次数要远多于写的次数。metaserver可以先选取四台机器,分别进行网络测速,从中选择三台网速最快的系统,其中一台为master,其他两台为slave。

    当FS中的metaserver收到client通过写请求发来的数据包时候,它为了保证CAP中的C即严格数据一致性,会通知三台机器进行串行写。metaserver先把请求包发给master,master收到包的时候,把要写的文件内容放在内存中,不待写成功就会立即把请求包再转发给一个slave,第一个slave写成功后再把数据转给第二个slave,待第二个slave写成功后再把给master一个ack包,以通知master两个slave都已经写成功。master再检测自己的数据是否写成功了,只有自身也写成功才会给metaserver返回ok包。master不待自己写成功就把数据包转给slave有两层意义,第一是保证串行速度,第二也是最终的一条就是当master-slave-slave三份数据还没有写成功时,如果master收到了metaserver转发的外部其他client的对这个文件的读请求,此时它从磁盘上就读不到数据,其他client就得不到这个文件,这就保证了数据的严格一致性。

     4 命令取消

     在HDFS这种保证数据严格一致性的系统中,数据存储采用了master-slave-slave结构,只有master对外提供读服务。有的分布式系统只用了master-slave两级结构保证数据备份,master和slave都可以对外提供数据读服务。如果client规定读超时为10ms,它可能受限把读请求发送给master,当10ms超时后后还没有收到master的返回包,它就可以再向slave发送读请求。

    如果发出去2ms后,client收到了master的返回包,它就可以再向slave发送一个cancel读命令,当slave收到这个命令后就不再执行先前收到的读请求。

    5 单线程与多线程

    分布式系统的开发者,有人喜好多线程如memcached,有人喜好单线程如redis。依照现在的趋势看来,redis的用户貌似比memcache多一些。但是redis因为采用了单线程模式开发,它就有可能发生一些莫名其妙的问题。

    我知道的一个场景就是,如果用户采用了aof方式在sata中备份内存的数据,当sata盘写满的时候,redis就会把磁盘清空,把内存中的所有数据写入sata盘。这个时候如果有外部写请求,它会在处理写请求和把内存中的数据写入磁盘两个任务之间倒腾,此时就有可能把写请求的数据丢掉。如果此时还有外部读请求,它就会疯掉。

  6 主从数据同步
  很多通过log进行主从同步的系统如mysql,都有一个checkpoint的概念。每隔一段时间,就检查上一次checkpoint到目前为止数据的checksum是否一致,如果不一致只用从checkpoint到目前为止之间的数据进行同步就可以了。
  详细步骤可以参考[《腾讯游戏数据自愈服务方案简介》][1]。

Maven,Springmvc mybatis shiro, Druid, Restful, Dubbo, ZooKeeper,Redis,FastDFS,ActiveMQ,Nginx 
1.     项目核心代码结构截图

分布式框架介绍 - kafkaee - kafkaee的博客

   项目模块依赖

分布式框架介绍 - kafkaee - kafkaee的博客

特别提醒:开发人员在开发的时候可以将自己的业务REST服务化或者Dubbo服务化

2.    项目依赖介绍

   2.1 后台管理系统、Rest服务系统、Scheculer定时调度系统依赖如下图:

 

分布式框架介绍 - kafkaee - kafkaee的博客

       2.2 Dubbo独立服务项目依赖如下图:

 

分布式框架介绍 - kafkaee - kafkaee的博客

3.  项目功能部分截图:

分布式框架介绍 - kafkaee - kafkaee的博客

 

分布式框架介绍 - kafkaee - kafkaee的博客

 

分布式框架介绍 - kafkaee - kafkaee的博客

 

分布式框架介绍 - kafkaee - kafkaee的博客

 

分布式框架介绍 - kafkaee - kafkaee的博客

 

分布式框架介绍 - kafkaee - kafkaee的博客

 

分布式框架介绍 - kafkaee - kafkaee的博客

zookeeper、dubbo服务启动 

分布式框架介绍 - kafkaee - kafkaee的博客

 

分布式框架介绍 - kafkaee - kafkaee的博客

dubbo管控台 

分布式框架介绍 - kafkaee - kafkaee的博客

 

分布式框架介绍 - kafkaee - kafkaee的博客

 

分布式框架介绍 - kafkaee - kafkaee的博客

 

分布式框架介绍 - kafkaee - kafkaee的博客

 

分布式框架介绍 - kafkaee - kafkaee的博客

 

分布式框架介绍 - kafkaee - kafkaee的博客

 

分布式框架介绍 - kafkaee - kafkaee的博客

 REST服务平台

分布式框架介绍 - kafkaee - kafkaee的博客

 

分布式框架介绍 - kafkaee - kafkaee的博客

 

分布式框架介绍 - kafkaee - kafkaee的博客

 

分布式框架介绍 - kafkaee - kafkaee的博客


© 著作权归作者所有

共有 人打赏支持
l
粉丝 2
博文 11
码字总数 42714
作品 0
东城
加载中

评论(2)

l
liuqqq
在HDFS这种保证数据严格一致性的系统中,数据存储采用了master-slave-slave结构,只有master对外提供读服务。有的分布式系统只用了master-slave两级结构保证数据备份,master和slave都可以对外提供数据读服务。如果client规定读超时为10ms,它可能受限把读请求发送给master,当10ms超时后后还没有收到master的返回包,它就可以再向slave发送读请求。s
l
liuqqq
在HDFS这种保证数据严格一致性的系统中,数据存储采用了master-slave-slave结构,只有master对外提供读服务。有的分布式系统只用了master-slave两级结构保证数据备份,master和slave都可以对外提供数据读服务。如果client规定读超时为10ms,它可能受限把读请求发送给master,当10ms超时后后还没有收到master的返回包,它就可以再向slave发送读请求。

暂无文章

什么是Base64

一、什么是Base64? 百度百科中对Base64有一个很好的解释:“Base64是网络上最常见的用于传输8Bit字节码的编码方式之一,Base64就是一种基于64个可打印字符来表示二进制数据的方法”。 什么是...

Jack088
7分钟前
0
0
SQL多表联查leftjoin左边加表单

SELECT IFNULL(u.USER_ACCOUNT, o.USER_ACCOUNT) u.USER_ACCOUNT, o.* FROM gh_orders o LEFT JOIN gh_user u ON o.PARENT_ID = u.ROW_ID 1.假如u.USER_ACCOUNT不空返回u.USER_ACCOUNT,否则返......

森火
11分钟前
0
0
expect脚本同步文件、expect脚本指定host和要同步的文件、构建文件分发系统

expect脚本同步文件 更改权限 执行脚本 查看执行结果 expect eof需要加上,作用是等脚本命令执行完再进行退出 expect脚本指定host和要同步的文件 更改权限,执行脚本 构建文件分发系统 需求背...

Zhouliang6
49分钟前
1
0
Hive应用:外部分区表

Hive应用:外部分区表 介绍 Hive可以创建外部分区表。创建表的时候,分区要在建表语句中体现。建完之后,你不会在表中看到数据,需要进行分区添加,使用alter语句进行添加。然后数据才会显示...

星汉
今天
3
0
点击Enter登录

1. 效果 2. 实现过程(记得引入jq文件) //6.回车事件 登录 $(function() { document.onkeydown = function(event) { var e = event || window.event || arguments.callee.caller.arguments......

Lucky_Me
今天
1
0
点击菜单内容切换

<!DOCTYPE html> <html lang="en"> <head> <meta charset="UTF-8"> <title>Title</title> <style> .menu{ height: 38px; background-color: #eeeeee; line-height: 38px; } .mao{ ......

南桥北木
今天
1
0
OSChina 周六乱弹 —— 妹子和游戏哪个更好玩

Osc乱弹歌单(2018)请戳(这里) 【今日歌曲】 @andonny :分享唐朝乐队的单曲《国际歌》 《国际歌》- 唐朝乐队 手机党少年们想听歌,请使劲儿戳(这里) @举个栗子- :日常祈雨 邪恶的大祭...

小小编辑
今天
613
8
流利阅读笔记32-20180721待学习

“人工智能”造假:只有人工,没有智能 Lala 2018-07-21 1.今日导读 当今社会,擅长单个方面的人工智能已经盛行,手机借助 AI 智慧防抖技术帮助大家拍出清晰照片,谷歌研发的 AI 助手将可以帮...

aibinxiao
今天
10
0
我的成长记录(一)

今天突然精神抖擞,在我的博客下新开一项分类>成长记录,专门记录每隔一段时间我的一点感悟吧。因为今天才专门花时间新开这样一个分类,所以以前有过的一些感悟没有记录下来,现在已经想不起...

dtqq
今天
1
0
机器学习管理平台 MLFlow

最近工作很忙,博客一直都没有更新。抽时间给大家介绍一下Databrick开源的机器学习管理平台-MLFlow。 谈起Databrick,相信即使是不熟悉机器学习和大数据的工程湿们也都有所了解,它由Spark的...

naughty
今天
19
0

没有更多内容

加载失败,请刷新页面

加载更多

下一页

返回顶部
顶部