zoukankan      html  css  js  c++  java
  • 分布式中一些关键概念的解释

    分布式要弄清楚的几大问题:
    (1)数据分布:哈希分布还是顺序分布
    简单地说,相当于比较哈希函数和B+树树的优劣。
    哈希分布,首先找一个散列性比较好的哈希函数(非常难),并且不支持顺序扫描,但是随机存取的速度都很快。
    顺序分布,一般的都会采用B+树的方式存储。支持顺序扫描,很容易让数据分布均匀,但相应的随机存取速度比哈希慢。

    哈希分布的哈希函数是不建议使用id进行哈希的,因为容易造成数据倾斜,也就是把同一批非常活跃的用户哈希到同一台机器上,那样就失去了集群的意义。

    (2)复制和备份
    分布式系统的作用之一就是有备份,同一条数据在不同的服务器上存几份。这样一台服务器挂掉,还有其他服务器顶替。这就涉及到把一个服务器的数据复制到其他的服务器上。
    同时还可以让多个服务器同时对外服务,让服务器之间进行负载均衡。

    (3)一致性和可用性:
    其实这个问题,相当于在讨论同步和异步的优劣。
    一致性:读一定保证读到之前写操作的结果。比如集群中有A和A_BAK两个服务器,最苛刻的情况是在A中写个数据,再到A_BAK中读,要也能确认读到了之前写的结果。
    可用性:如果A_BAK或A中任意一个挂掉,都要能保证依靠另一个能正常工作。

    (4)负载均衡:
    一个万兆的网卡,即使满负荷,每个用户占1Mb(相当于每人占125KB)的网速,那么1万个用户就让它崩溃了。为了应对大并发的需求,通常最简单的做法,就是通过添加服务器来分摊压力,这就是负载均衡。

    (5)故障检测:
    以google的数据中心为例见下表。所以为了确认机器可以提供服务,那么就需要发送心跳,设计切换服务算法等。

    发生概率 故障类型 影响范围
    0.5 数据中心过热 5分钟内大部分机器断电,一到两天恢复
    1 配电装置(PDU)故障 大约500-1000台机器瞬间下线,6小时恢复
    1 机架调整 大量告警,500-1000台机器断点,6小时恢复
    1 网络重新布线 大约5%机器下线超过两天。
    20 机架故障 40到80台机器下线,1到6小时恢复
    5 机架不稳定 40到80台机器发生50%的丢包
    12 路由器重启 DNS对外虚IP服务失效约几分钟
    3 路由器故障 需要立即切换流量,持续约1小时
    几十 DNS故障 持续约30秒
    1000 单机故障 机器无法提供服务
    几千 硬盘故障 硬盘数据丢失

    (6)同构系统和异构系统
    同构系统:相当于完整地复制了一下集群
    异构系统:在同一个集群当中的所有机器互相形成备份。

    (7)分布式协议
    两阶段提交协议(2PC):①所有人对协调者的建议表态②当且仅当所有人都同意时执行;例如,A说大家一起吃饭怎么样,F说他没空,那么大家都去不成。
    Paxos协议:每个人都说出自己的想法,谁的想法能得到大多数人的同意,那么就执行他的想法。

    Paxos保证了多个副本之间数据的一致性。2PC用于保证属于多个分片上的操作的原子性。

    (8)单机存储介质对比

    类别 每秒读写(IOPS)次数 每GB价格(元) 随机读取 随机写入
    内存 千万级 150 友好 友好
    SSD盘 35000 20 友好 写入放大问题
    SAS磁盘 180 3 磁盘寻道 磁盘寻道
    SATA磁盘 90 0.5 磁盘寻道 磁盘寻道
  • 相关阅读:
    js中return;、return true、return false;区别
    JS跨域设置和取Cookie
    检测到在集成的托管管道模式下不适用的ASP.NET设置的解决方法(转)
    IIS7中Ajax.AjaxMethod无效的原因及解决方法
    ajax 跨域的问题 用js绕过跨域
    微服务笔记
    smali语法笔记
    Go Micro 入门笔记
    介绍微服务框架Micro笔记
    JS任务队列--笔记
  • 原文地址:https://www.cnblogs.com/bugutian/p/5256512.html
Copyright © 2011-2022 走看看