分布式系统详解--基础知识(概论)

摘要:
B组和C组属于分布式关系。分布式系统中最常见的概念之一是副本数据副本和服务副本。并发同一分布式系统的多个节点可以同时操作一些共享资源,例如数据库或分布式存储。大数据和分布式存储。其中提到了分布式存储的开源框架。

  一、 引言

        由于网上介绍的分布式的系统讲解并没有多少,所以在这儿就希望可以写一套系统的分布式的详解,未来也结合springboot的搭建分布式系统进行详细构建。也愿意坚持写下去,写给自己也分享给大家,希望大家可以提出宝贵的意见,一同长进。哈哈。。第一篇文章,开个头。

二、分布式定义。

  了解起来分布式呢,顺便也介绍一下集群,这两个概念和举例放在这里,让大家更能清楚的认识和知道。

(1)专业术语:

       分布式系统:是一个硬件或软件组件分布在不同的网络计算机上,彼此之间仅仅通过消息传递进行通信和协调的系统。

       分布式:不同的业务模块部署在不同的服务器上或者同一个业务模块分拆多个子业务,部署在不同的服务器上,解决高并发的问题。
       集群:同一个业务部署在多台机器上,提高系统可用性。

(2)举例讲解:

            

       摊煎饼卖煎饼,卖煎饼需要进行三道的工序:准备原料、加工、销售。主人A发现这样一天太累了,根本忙不过来,于是乎招人B准备原料,招人C来帮忙加工,这样主人A就可以之进行销售,B和C呢相对于A来说就是分布式;后来随着销量的增加,B和C忙不过来,又找了B1加入到准备原料,C1加入到加工小组。这样B和B1之间就是集群关系,C和C1之间也是集群关系。B小组和C小组属于分布式关系。

(3)图解更为清晰(网上搜刮的一张)

      分布式系统详解--基础知识(概论)第1张

如果还是不清楚呢?推荐你一篇文章  分布式与集群的区别。

三、 集中式系统和分布式。

  如果上面的图解大家已经明白了,那么分布式和集中式也就相应的理解了。

        集中式系统:就是指由一台或多台主计算机组成中心节点,数据集中存储于这个中心 节点中,并且整个系统的所有业务单元都集中部署在这个中心节点上,系统所有的功能均由其集中处理。也就是说,集中式系统中,每个终端或客户端及其仅仅负责 数据的录入和输出,而数据的存储与控制处理完全交由主机来完成。

       传统的集中式处理模型越来越不能适应人们的需求:

(1)集中式系统如果进行大型项目的开发,改为大型主机,需要很昂贵的财力,这是一笔不小的开支。

(2)集中式系统运行在一台主机之上,如果这台主机出现故障,所有人都要等待这台主机的恢复。对于用户而言,什么也看不到了。

(3)安全度不高。如果被攻击,损失也是最大的。

        分布式系统:《分布式系统概念与设计》一书介绍到一个标准的分布式系统在没有特定逻辑的情况下,会表现出来的特性:

(1)分布性

       空间中随机分布。这些计算机可以分布在不同的机房,不同的城市,甚至不同的国家。

(2)对等性

       分布式系统中的计算机没有主/从之分,组成分布式系统的所有节点都是对等的。在分布式系统最常见的概念之一是副本--数据副本和服务副本。数据副本是指在不同的节点上持久化同一份数据,当某一个节点上存储的 数据丢失时,可以从副本上读取到该数据,这是解决分布式系统数据丢失问题最为有效的手段。服务副本,指多个节点提供同样的服务,每个节点都有 能力接收来自外部的请求并进行相应的处理。

(3)并发性

        同一个分布式系统的多个节点,可能会并发地操作一些共享的资源,诸如数据库或分布式存储。

(4)缺乏全局时钟

       既然各个计算机之间是依赖于交换信息来进行相互通信,很难定义两件事件的先后顺序,缺乏全局始终控制序列。

(5)故障总会发生

       组成分布式的计算机,都有可能在某一时刻突然间崩掉。分的计算机越多,可能崩掉一个的几率就越大。如果再考虑到设计程序时的异常故障,也会加大故障的概率。

(6)处理单点故障

       单点SPoF(Single Point of Failure):某个角色或者功能只有某一台计算机在支撑,在这台计算机上出现的故障是单点故障。

当然处理方式可以是采用上面所讲的:集群。

四、如何设计分布式系统。

        说白了就是: 如何合理将一个系统拆分成多个子系统部署到不同机器上。

        将系统拆分成多个子系统,这就意味着拆分后的系统必然需要通过网络进行互相通信联系。所以通信中的稳定和安全也显得尤为重要。随着业务慢慢的增长,扩展性、可靠性、数据一致性都需要进行考虑。

(1)系统拆分成子系统。这个需要设计师好好设计,将一个大系统拆分成多个小系统,分层次来维护。

(2)设计系统间的通信。在这儿我们可以使用消息中间件,开源框架帮我们解决了这个问题。如Apache ActiveMQ、RabbitMQ、Apache RocketMQ、Apache Kafka等。

(3)设计分布式计算。开源框架有apReduce、Apache Hadoop、Apache Spark 等。

(4)大数据和分布式存储。有Apache HBase、Apache Cassandra、Memcached、Redis、MongoDB等。

(5)分布式监控控制。常用的技术包括Nagios、Zabbix、Consul、ZooKeeper等。

        这篇文章对于分布式系统进行了一个大体的讲解,在接下来的文章当中,文章还会继续对分布式有着更深入的讲解和分析,基础篇中会讲到一些关于 线程、通信、一致性、容错性、CPA等的认识,在之后其他篇中,还会讲到分布式架构体系、消息服务。分布式存储的开源框架均有讲到。文章慢慢更新中。。。

文献来源于:https://blog.csdn.net/mcb520wf/article/details/82456456

免责声明:文章转载自《分布式系统详解--基础知识(概论)》仅用于学习参考。如对内容有疑问,请及时联系本站处理。

上篇linux高编信号-------令牌桶实现php pack、unpack、ord 函数使用方法下篇

宿迁高防,2C2G15M,22元/月;香港BGP,2C5G5M,25元/月 雨云优惠码:MjYwNzM=

相关文章

SpringCloud入门(十一):Sleuth 与 Zipkin分布式链路跟踪

现今业界分布式服务跟踪的理论基础主要来自于 Google 的一篇论文《Dapper, a Large-Scale Distributed Systems Tracing Infrastructure》,使用最为广泛的开源实现是 Twitter 的 Zipkin,为了实现平台无关、厂商无关的分布式服务跟踪,CNCF 发布了布式服务跟踪标准 Open Trac...

aused by: org.apache.xmlbeans.SchemaTypeLoaderException: XML-BEANS compiled schema: Incompatible min

版权声明:转载请注明出处 https://blog.csdn.net/seashouwang/article/details/24025871 6.导入Word2007-docx,Excel-2007-xlsx出现错误 [2014-04-18 09:39:14.195]-[ERROR] org.apache.struts2.dispatcher....

Linux:安装禅道

一、准备工作 禅道安装包ZenTaoPMS.8.1.3.zbox_64.gz,上传至服务器:rz命令 解压到指定目录  tar -zxvf ZenTaoPMS.8.1.3.zbox_64.gz -C /opt  将禅道解压到目录/opt下 二、修改禅道自带apache、mysql端口 为了不占用Server上默认的80、3306端口,我们修改禅道自带的a...

报错记录:org.apache.ibatis.binding.BindingException: Invalid bound statement (not found)

以下是错误信息: org.apache.ibatis.binding.BindingException: Invalid bound statement (not found): org.ml.apply.persistence.UserInfoMapper.login at org.apache.ibatis.binding.MapperMeth...

linux下搭建lamp环境以及安装swoole扩展

一、CentOS 6.5/CentOS 6.9使用yum快速搭建LAMP环境 准备工作:先更新一下yum源  我安装的环境是:apache2.2.15+mysql5.5.60+php5.6.36 输入下面命令: yum -y update 1、安装Apache [root@localhost ~]# yum -y install httpd # 开机自启动...

简述 IOS中的LazyLoad思想

Lazy,谁懒?当然是计算机偷懒。通常用法,你有一个NSArray的property,但是你不在初始化方法里为其alloc/init,它就只是一个指针,不会占用内存。然后你写了此property的访问器,在访问器里判断此property的指针是否为空,若为空,就alloc/init,这时才真正生成这个NSArray。 这样子达到的效果就是,除非这个NSAr...