• 分布式和集群的区别


    下面两句话转自网络:

    • 将一套系统拆分成不同子系统部署在不同服务器上(这叫分布式),然后部署多个相同的子系统在不同的服务器上(这叫集群),部署在不同服务器上的同一个子系统应做负载均衡。 
    • 分布式:一个业务拆分为多个子业务,部署在多个服务器上 。 集群:同一个业务,部署在多个服务器上 。

    再用一个通俗易懂的例子说明一下:

    小饭店原来只有一个厨师,切菜洗菜备料炒菜全干。

    后来客人多了,厨房一个厨师忙不过来,又请了个厨师,两个厨师都能炒一样的菜,两个厨师的关系是集群。

    为了让厨师专心炒菜,把菜做到极致,再请了个配菜师负责切菜,备菜,备料 ...  厨师和配菜师的关系是分布式。

    一个配菜师也忙不过来了,又请了个配菜师,两个配菜师关系是集群。

    一个配菜师因故请假了,但是其余的配菜师还是该啥就干啥,只是没请假的配菜师任务均匀的加量了,但他们的任务和职责是不变的,这是集群。

    最后用正在做的项目来举例一下:

    原本的钱管家(一套账户服务体系,可以用来购买飞机票,pos交易等)项目是一个完整的war包,所谓一套war包走天下,哪怕只有一行代码改动,所有的war包都要重新部署,显然这个会很影响线上交易,比如pos交易的代码要改动,但是这关航旅有什么关系,航旅的交易也要受影响。于是我们需要将钱管家按照业务进行拆分,不同的业务拆分成不同的模块。比如我现在航旅的业务全部拆分出来,那他就是一个独立的war包,但这个粒度还是很大的。比如一笔支付交易,通过账户支付,由代理人发起,到我们的系统,需要做验签,参数校验,账户扣款,扣款成功,告诉代理人,支付成功,那么航空公司就可以出票了,同时,我们还要把这笔钱打到航空公司的账户中,我们对这边支付收取手续费。你会看到,环节很多,就像上面做菜的例子,我们其实可以细分。于是,我们进一步拆分成三个系统:1)业务系统2)收银台3)账务系统(账务前置+账务处理),他们都是独立的系统,独立部署在不同的服务器,独立的有各自的数据库,这就是分布式!当然,这个需要新的框架,不再是war包了,而是微服务框架,我们用的是公司自研的Pegasus,网上开源的也很多,比如dubbo等。

    分布式有了,集群又是什么呢,比如上面的收银台,我部署了3台机器,他们的业务是一样的,业务系统调用的时候可以通过负载均衡访问到不同的机器,这个就是集群。

    所有,分布式和集群往往是组合在一起的,希望这个例子对你们理解有帮助。

  • 相关阅读:
    第2季:从官方例程深度学习海思SDK及API
    H.264帧结构详解
    Linux内核链表
    在Sqlite中通过Replace来实现插入和更新
    mysql 里随机生成时间
    搭建Cordova + Ionic + WebStorm环境开发Web App应用
    Angular Local Storage 使用方法
    angularJS中controller与directive双向通信
    ui-router传递参数
    Sequelize 和 MySQL 对照
  • 原文地址:https://www.cnblogs.com/fxl-njfu/p/10874412.html
Copyright © 2020-2023  润新知