V2EX = way to explore
V2EX 是一个关于分享和探索的地方
现在注册
已注册用户请  登录
V2EX 提问指南
liudaqi
V2EX  ›  问与答

分布式可以完全去中心吗?

  •  
  •   liudaqi · 2020-04-07 12:29:40 +08:00 · 4151 次点击
    这是一个创建于 1689 天前的主题,其中的信息可能已经有所发展或是发生改变。
    现在的分布式存储、分布式计算,其实都还有一个调度中心、注册中心这样的机制在协调所有的节点,状态监控等等。

    如果这个调度中心宕机了,还是会导致整个分布式系统彻底挂掉啊
    31 条回复    2020-04-08 09:26:07 +08:00
    cmdOptionKana
        1
    cmdOptionKana  
       2020-04-07 12:31:42 +08:00
    多中心
    opengps
        2
    opengps  
       2020-04-07 12:33:16 +08:00 via Android
    调度中心为了不当机,本身会做成副本多活的,如果都挂了显然系统也会挂
    liudaqi
        3
    liudaqi  
    OP
       2020-04-07 12:34:10 +08:00
    @cmdOptionKana 多中心的实现,也需要有一个更上一层的均衡系统吧
    liudaqi
        4
    liudaqi  
    OP
       2020-04-07 12:39:40 +08:00
    @opengps 副本多活之间是怎么协调谁主谁备?主挂了什么时候顶上,是不是还要再套一层监控?
    jie170601
        5
    jie170601  
       2020-04-07 12:42:02 +08:00 via Android
    在客户端中预设好几个中心,一个连不上连另一个呢,类似区块链的种子节点,web 服务没想到啥好办法,
    opengps
        6
    opengps  
       2020-04-07 12:42:23 +08:00 via Android   ❤️ 1
    @liudaqi 说白了无论如何都需要一个总入口,这个入口:
    要么在网络负载均衡处,
    要么在 dns 负载均衡处。

    然后才是带有主备属性的中心服务,一般来说备节点都是只同步但不工作的
    des
        7
    des  
       2020-04-07 12:45:12 +08:00 via Android   ❤️ 1
    参考一下 dht
    lyog
        8
    lyog  
       2020-04-07 12:51:13 +08:00 via iPhone   ❤️ 1
    @liudaqi 现在的架构就是去中心化的,你的理解有误。可以了解下 zk 的选举制度,并不是非得有上一级才能协调主备
    laobingge
        9
    laobingge  
       2020-04-07 13:03:26 +08:00 via Android
    可以借鉴区块链的机制,技术上是可以做到的,就是每个节点都有全部信息的副本,虽然更加安全可靠,但这样会降低效率和增加成本,尤其当节点数量越来越多的时候。

    因此,集中还是分布,没有绝对的优劣,更多是种平衡,不同阶段两者的比例需要做相应的调整。
    lhx2008
        10
    lhx2008  
       2020-04-07 13:12:00 +08:00 via Android   ❤️ 1
    调度中心就是 zk 这种嘛,出问题了的话,业务会有影响,但是也可以在业务侧做一些保护措施,包括缓存的机制。

    然后 zk 本身是多点的,稳一点肯定是同城异地的多个副本,全部挂掉的几率比较小

    完全无中心也是有的,就是一种无主的策略,比如区块链,或者其他一些比较高效的共识算法来做,但是最大的问题是冲突是基本上必然发生的。
    lhx2008
        11
    lhx2008  
       2020-04-07 13:15:42 +08:00
    @lhx2008 #10 比如 Cassandra,但是我对这个还不是太了解
    liudaqi
        12
    liudaqi  
    OP
       2020-04-07 13:20:24 +08:00   ❤️ 1
    @jie170601 是的,区块链里维护了一些核心 ip 列表,web 没有客户端就不好实现了

    @des 大致看了下 dht,还是要在一个协调系统内部才能运作

    @lyog ZooKeeper 选举机制还是解决的内部问题,这和区块链的思路本质上是一致的(只是选举的策略不同)?

    @laobingge 也觉得区块链的分布式,是牺牲了效率换来的。
    @lhx2008 区块链也不算完全无中心,毕竟还是维护了一些核心 ip 吧,当然最核心 50%算力策略当然理论上是公平的。
    nicebird
        13
    nicebird  
       2020-04-07 15:57:46 +08:00
    无主可以做,太麻烦。所以选择有主+选举。
    Takuron
        14
    Takuron  
       2020-04-07 16:01:06 +08:00 via Android
    应该说分布式的目的是去中心化,一个真正意义上的分布式系统是还剩一个机器都能运转的。
    但这是理想情况,真正意义上的去中心化会造成浪费(看看隔壁的虚拟货币),所以实际过程中大家都不太愿意做成真正的“去中心化”
    tms
        15
    tms  
       2020-04-07 16:34:40 +08:00
    我理解是由于成本和效率的考量,真正的完全去中心化没太有必要。只要把挂掉的概率降低到可容忍水平就行了。
    optional
        16
    optional  
       2020-04-07 16:37:29 +08:00 via iPhone
    无中心的也有啊 ,基于 gossip 协议的分布式
    passerbytiny
        17
    passerbytiny  
       2020-04-07 17:04:41 +08:00 via Android
    出于负载均衡或业务分析的目的,把集中在一起的任务(横向或纵向)拆分成多个分离的任务,这才是分布式,去中心化既不是分布式的目的,也不是它的手段。去中心化是为了更进一步的负载均衡或高可用性,分布式是它的必要条件。
    legiorange
        18
    legiorange  
       2020-04-07 17:48:43 +08:00
    服务治理基本上是去中心化,说白了也就是多中心,单一职责。

    通过运维框架监控这些中心,横向纵向拓展,多模式发布,你这个肯定就解决了。

    另外区块链这一套明显不适用绝大多数场景,节点多了,每个节点需要同步,压力很大。
    also24
        19
    also24  
       2020-04-07 17:51:09 +08:00 via Android
    楼主可以了解一下 CAP 原则
    GrayXu
        20
    GrayXu  
       2020-04-07 18:00:49 +08:00
    可以重新选举呀,本质上就实现了无需指定中心的目的
    HunterPan
        21
    HunterPan  
       2020-04-07 18:03:07 +08:00
    现在大公司几乎都是多中心 主主互备
    ArJun
        22
    ArJun  
       2020-04-07 18:07:12 +08:00
    区块链吧
    wangkun025
        23
    wangkun025  
       2020-04-07 18:09:48 +08:00
    我一直觉得比特币就是。
    silenzio
        24
    silenzio  
       2020-04-07 19:02:54 +08:00
    正好在做 p2p 网络, 说下个人理解

    首先要明确"去中心"要去到什么程度
    100 个节点组成的网络, 只有一个调度服务器, 它挂了, 网络瘫痪, 那这个调度服务器就是中心, 就没有实现去中心化
    如果有 5 台调度服务器, 占了整个网络的 5%, 它就不再是中心了, 也就是去中心化
    5 台调度服务器, 用 etcd (k8s)做主备
    数据库, 自带主备
    网关, 前面有 nginx, nginx 自带
    p2p 网络, 跟调度服务器一样, 100 个节点的网络配置 5 个种子节点, 去中心化

    你说万一 5 个都挂了怎么办?
    第一 配置看门狗尝试自动恢复
    第二 5 个节点都挂了 运维都没反应过来 可以开除了好吧
    victor97
        25
    victor97  
       2020-04-07 19:15:39 +08:00 via Android
    核心也是去中心化的,也就是分布式的一致性服务 /协议。例如 etcd,zookeeper
    andylsr
        26
    andylsr  
       2020-04-07 19:27:14 +08:00 via Android
    完全去中心并不是不行,只是网络数据同步会产生数据洪流,然后就变成可用性和一致性的取舍问题,cassandra 是个好东西
    lty1993
        27
    lty1993  
       2020-04-07 19:32:26 +08:00
    @opengps 网络负载均衡可以 Anycast,不过端到端的 HA 实现成本还是太高了,根据实际业务需要去决定到底怎么实现吧
    vindurriel
        28
    vindurriel  
       2020-04-07 21:01:20 +08:00 via iPhone
    调度中心本身可以多活 基于 raft 等协议 参考 zookeeper 和 etcd 的实现 不过这样的系统很慢 CAP 原则里选了 C 而不是 A
    twl007
        29
    twl007  
       2020-04-07 21:02:46 +08:00 via iPhone
    Ceph 设计去中心化的 但是你看看 trade off 我并不觉得某些场景下去中心化是个好选择
    mumbler
        30
    mumbler  
       2020-04-07 21:14:21 +08:00 via Android
    中心化是为了效率,比特币就完全去中心化,每小时全球最多交易 90 个,银行体系则无上限
    zhchyu999
        31
    zhchyu999  
       2020-04-08 09:26:07 +08:00
    分布式和一致性是两个方向啊
    关于   ·   帮助文档   ·   博客   ·   API   ·   FAQ   ·   实用小工具   ·   2880 人在线   最高记录 6679   ·     Select Language
    创意工作者们的社区
    World is powered by solitude
    VERSION: 3.9.8.5 · 23ms · UTC 14:46 · PVG 22:46 · LAX 06:46 · JFK 09:46
    Developed with CodeLauncher
    ♥ Do have faith in what you're doing.