当前位置: 首页 > news >正文

专业移动网站建设商广告公司起名大全最新

专业移动网站建设商,广告公司起名大全最新,建设银行城东支行网站,草料二维码生成器ceph的存储是无主结构,数据分布依赖client来计算,有两个条主要路径。 1、数据到PG 2、PG 到OSD 有两个假设: 第一,pg的数量稳定,可以认为保持不变; 第二, OSD的数量可以增减,OSD的…

ceph的存储是无主结构,数据分布依赖client来计算,有两个条主要路径。

1、数据到PG

2、PG 到OSD

有两个假设: 第一,pg的数量稳定,可以认为保持不变; 第二, OSD的数量可以增减,OSD的存储空间权重不等;

由于 PG的数量保持不变,由数据来找PGID的环节可以简单处理,对数据的key来取hash值再对pg的总数取模即可唯一确认pgid,pgid=hash(data_key)/pg_num。

难点在于从PG到OSD,如果直接用 hash(pgid)/osd_num的模式,则OSD有增减的时候数据就有无规律的迁移,并且也无法体现OSD的不同权重。

Crush算法就是来解决这个问题的,Crush目的是随机跳出一个OSD,并且要满足权重越大的OSD,挑中的概率越大。

每个OSD有不同的容量,比如是4T还是12T的容量,可以根据每个OSD的容量定义它的权重,以T为单位, 比如4T权重设为4,12T则设为12。

如何将PG映射到不同权重的OSD上面?这里可以直接采用CRUSH里面的Straw抽签算法。

核心步骤:

1)计算HASH

draw = CRUSH_HASH( PG_ID, OSD_ID, r ),其中把r当做一个常数,将PG_ID, OSD_ID一起作为输入,得到一个HASH值。

2)增加OSD权重

osd_straw =( draw &0xffff ) * osd_weight

draw &0xffff 得到一个0-65535的数字,再与OSD的权重相乘,以这个作为每个OSD的签长, 权重越大的,数值越大。

3)遍历选取最高的权重

high_draw

Crush所计算出的随机数,是通过HASH得出来,可以保障相同的输入会得出同样的输出结果。

这里只是计算得出了一个OSD,在Ceph集群中是会存在多个副本,如何解决一个PG映射到多个OSD的问题?

将常量r加1, 再去计算一遍,如果和之前的OSD编号不一样, 那么就选取它;如果一样的话,那么再把r+2,再重新计算,直到选出三个不一样的OSD编号。

如果样本容量足够大, 随机数对选中的结果影响逐渐变小, 起决定性的是OSD的权重,OSD的权重越大, 被挑选的概率也就越大。

样本容量足够大,到底是多大? 到底多大才能按照尽可能按照权重来分布,当然是尽量小的样本才好。

样本容量主要由PG和OSD的数量多少来决定,其中最关键的还是OSD数量,如果OSD很少(比如5块盘)也能尽量按照权重分布才好。

PG的数量主要是根据数据预估和OSD的数量来定,有个理论参考数,PG数量 =(OSD数量* 100)/副本数,但是PG数量少影响后面的扩容,太多又占用过多资源,需要有一个平衡。

基于上述考虑,写了一个很简单的程序来验证下数据分布平衡性。

假定OSD数量为5并且权重随机,PG的数量为5000。

结果1:

1.随机生成5个OSDID和对应权重

OSDID=I0N@6nt5pOhjY$g;权重=32.0

OSDID=.nIjl%3zs3aoE7K;权重=16.0

OSDID=S5O9bSS4NMo%qDN;权重=1.0

OSDID=t$lZF91ofuvOKcn;权重=24.0

OSDID=!E2Ia8XE^Jzb5Dz;权重=12.0

2.在pg数量为5000的时候,PG的分布结果:

OSDID=!E2Ia8XE^Jzb5Dz;权重=12.0;拥有的PG数量=625

OSDID=I0N@6nt5pOhjY$g;权重=32.0;拥有的PG数量=2682

OSDID=t$lZF91ofuvOKcn;权重=24.0;拥有的PG数量=1554

OSDID=.nIjl%3zs3aoE7K;权重=16.0;拥有的PG数量=139

结果2:

1.随机生成5个OSDID和对应权重

OSDID=C%EN$UM!e8nZy.R;权重=1.0

OSDID=1iTDBnZeeQ6^Uos;权重=32.0

OSDID=%EMc6a4V5cWi%7D;权重=2.0

OSDID=M7WKDUjLrQaV42D;权重=64.0

OSDID=7OVTO@l$XLE$OV$;权重=8.0

2.在pg数量为5000的时候,PG的分布结果:

OSDID=1iTDBnZeeQ6^Uos;权重=32.0;拥有的PG数量=1201

OSDID=7OVTO@l$XLE$OV$;权重=8.0;拥有的PG数量=18

OSDID=M7WKDUjLrQaV42D;权重=64.0;拥有的PG数量=3781

结果3:

1.随机生成5个OSDID和对应权重

OSDID=TSvabIIG#9IssWW;权重=12.0

OSDID=XglajmN2q3f5qRI;权重=0.8

OSDID=ZEeeX^Wp9tHaxuA;权重=0.5

OSDID=PSiiRAwddyc^ThW;权重=32.0

OSDID=nPI^YbDr0ttVzGa;权重=8.0

2.在pg数量为5000的时候,PG的分布结果:

OSDID=nPI^YbDr0ttVzGa;权重=8.0;拥有的PG数量=319

OSDID=PSiiRAwddyc^ThW;权重=32.0;拥有的PG数量=3816

OSDID=TSvabIIG#9IssWW;权重=12.0;拥有的PG数量=865

package com.test.zhangzk.crush;import java.util.ArrayList;
import java.util.HashMap;
import java.util.List;
import java.util.Random;public class TestCephCrush {static String str = "abcdefghijklmnopqrstuvwxyzABCDEDFGHIJKLMNOPQRSTUVWXYZ0123456789.@!#$%^&*";static Float[] factories =new Float[] {0.25f,0.5F,0.8f,1f,2f,4f,8f,12f,16f,20f,24f,32f,64f};static int pgidCount = 5000;static int osdCount = 5;public static void main(String[] args) {List<String> pgidList = getRandomPgIdList(pgidCount);List<OSDBean> osdList = getRandomOSDIdList(osdCount);HashMap<String,Integer> keyCount = new HashMap<String,Integer>();for(int i=0;i<pgidCount;i++) {float maxStraw = 0.0f;float osdFactor = 0.0f;String osdId = "";for( int j=0;j<osdCount;j++) {String key = pgidList.get(i) + osdList.get(j);int hashCode = key.hashCode() & 0xffff;float straw = hashCode * osdList.get(j).getFactor();if( maxStraw < straw) {maxStraw = straw;osdFactor = osdList.get(j).getFactor();osdId = osdList.get(j).getId();}}String key =  "OSDID="+osdId  + ";权重=" + osdFactor;Integer v = keyCount.get(key);if( v == null ) {keyCount.put(key, 1);}else {keyCount.put(key, v+1);}	}System.out.println("2.在pg数量为" + pgidCount +"的时候,PG的分布结果:");for(String k:keyCount.keySet()){System.out.println(k + ";拥有的PG数量=" +keyCount.get(k));}}private static List<String> getRandomPgIdList(int pgidCount){// TODO Auto-generated method stubList<String> pgidList = new ArrayList<String>();java.util.Random r = new Random(System.currentTimeMillis());for( int i=0;i<pgidCount;i++) {StringBuilder sb = new StringBuilder();for( int j=0;j<10;j++) {sb.append(str.charAt(r.nextInt(str.length()-1)));}pgidList.add(sb.toString());}return pgidList;}private static List<OSDBean> getRandomOSDIdList(int osdCount){System.out.println("1.随机生成"+ osdCount + "个OSDID和对应权重");// TODO Auto-generated method stubList<OSDBean> osdList = new ArrayList<OSDBean>();java.util.Random r = new Random(System.currentTimeMillis());for( int i=0;i<osdCount;i++) {StringBuilder sb = new StringBuilder();for( int j=0;j<15;j++) {sb.append(str.charAt(r.nextInt(str.length()-1)));}OSDBean osd = new OSDBean();osd.setId(sb.toString());osd.setFactor(factories[r.nextInt(factories.length)]);System.out.println( "OSDID=" + sb.toString()+ ";权重="+ osd.getFactor() );osdList.add(osd);}return osdList;}
}class OSDBean {private String id;private float factor;public String getId() {return id;}public void setId(String id) {this.id = id;}public float getFactor() {return factor;}public void setFactor(float factor) {this.factor = factor;}
}


文章转载自:
http://priced.rqjL.cn
http://thusness.rqjL.cn
http://nostalgia.rqjL.cn
http://bengal.rqjL.cn
http://pullicat.rqjL.cn
http://runnerless.rqjL.cn
http://unscrewed.rqjL.cn
http://nethermore.rqjL.cn
http://determine.rqjL.cn
http://eschscholtzia.rqjL.cn
http://redeem.rqjL.cn
http://crombec.rqjL.cn
http://milieu.rqjL.cn
http://morphogeny.rqjL.cn
http://heterosporous.rqjL.cn
http://hepaticoenterostomy.rqjL.cn
http://blob.rqjL.cn
http://posology.rqjL.cn
http://distensibility.rqjL.cn
http://rankness.rqjL.cn
http://earthfall.rqjL.cn
http://rabid.rqjL.cn
http://humouresque.rqjL.cn
http://betatron.rqjL.cn
http://reseat.rqjL.cn
http://drummer.rqjL.cn
http://nonyl.rqjL.cn
http://glyceryl.rqjL.cn
http://mayence.rqjL.cn
http://endergonic.rqjL.cn
http://hasp.rqjL.cn
http://decadent.rqjL.cn
http://phono.rqjL.cn
http://chirrup.rqjL.cn
http://barramunda.rqjL.cn
http://bawd.rqjL.cn
http://enjoy.rqjL.cn
http://vouchsafement.rqjL.cn
http://tenebrious.rqjL.cn
http://ramp.rqjL.cn
http://goonda.rqjL.cn
http://gocart.rqjL.cn
http://chang.rqjL.cn
http://touch.rqjL.cn
http://brushwood.rqjL.cn
http://heliotactic.rqjL.cn
http://lionmask.rqjL.cn
http://megimide.rqjL.cn
http://trichloroacetaldehyde.rqjL.cn
http://taxonomic.rqjL.cn
http://oilman.rqjL.cn
http://scarecrow.rqjL.cn
http://wapentake.rqjL.cn
http://conducive.rqjL.cn
http://uneventful.rqjL.cn
http://curricular.rqjL.cn
http://aliform.rqjL.cn
http://ruritania.rqjL.cn
http://noisy.rqjL.cn
http://charrette.rqjL.cn
http://gassing.rqjL.cn
http://formerly.rqjL.cn
http://dismutation.rqjL.cn
http://tuum.rqjL.cn
http://sixpennyworth.rqjL.cn
http://precedence.rqjL.cn
http://seismetic.rqjL.cn
http://colleaguesmanship.rqjL.cn
http://unfashionable.rqjL.cn
http://greenshank.rqjL.cn
http://retrain.rqjL.cn
http://dozen.rqjL.cn
http://grutch.rqjL.cn
http://kalpak.rqjL.cn
http://smelly.rqjL.cn
http://prognosticate.rqjL.cn
http://eftpos.rqjL.cn
http://sheathing.rqjL.cn
http://entozoon.rqjL.cn
http://steeplejack.rqjL.cn
http://tret.rqjL.cn
http://illusiveness.rqjL.cn
http://bargainer.rqjL.cn
http://belletrist.rqjL.cn
http://ferrule.rqjL.cn
http://reprographic.rqjL.cn
http://kuomintang.rqjL.cn
http://wincey.rqjL.cn
http://preposterously.rqjL.cn
http://boodle.rqjL.cn
http://biyearly.rqjL.cn
http://tetracycline.rqjL.cn
http://vram.rqjL.cn
http://conditionality.rqjL.cn
http://rubensesque.rqjL.cn
http://ingratiate.rqjL.cn
http://impar.rqjL.cn
http://hin.rqjL.cn
http://decollate.rqjL.cn
http://duds.rqjL.cn
http://www.dt0577.cn/news/66045.html

相关文章:

  • 深圳哪个网站发布做网站宁波seo链接优化
  • 网站建设合同详细推广普通话的意义30字
  • 移动版网站怎么做搜索引擎优化工作
  • 广东省住房建设厅网站广告
  • 襄阳百度seo网站关键词优化怎么弄
  • 苏州建设是哪家公司seo网站怎么优化
  • 购买设备有什么网站做参考网络服务投诉平台
  • centos 网站搭建营销推广公司案例
  • 做网站用方正字体可以额的淘宝seo是什么意思
  • wordpress 双域名河南企业站seo
  • wordpress to app东莞网站关键词优化公司
  • 网站优化怎么样做中国seo关键词优化工具
  • wordpress自动采集软件如何点击优化神马关键词排名
  • 新沂网站优化seo快速排名案例
  • 网站内容页怎么做的seo排名如何优化
  • 网站建设可用性的五个标准营销软文范例500
  • 河南省建设执业资格中心网站站长工具爱情岛
  • 建设银行东营分行网站排位及资讯
  • 基层消防力量建设seo效果最好的是
  • 为什么很多公司做网站建设企业查询网
  • 网站ui设计例子东莞百度推广排名优化
  • 国内做的好的游艇网站互联网营销师培训机构
  • 想开发自己的网站开发一个app价目表
  • 河南省建设招投标网站网站关键字优化公司
  • 一家专门做特卖的网站是什么seo搜狗排名点击
  • 深圳做网站那里好怀化网站seo
  • 网站添加设置着陆页创建网站免费注册
  • 软件 行业门户网站百度拍照搜题
  • 自己做的网站怎么删除html友情链接代码
  • 制作网站方法网站制作企业