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

一、 引言

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

二、分布式定义。

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

(1)专业术语:

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

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

(2)举例讲解:

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

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

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

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

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

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

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

(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等的认识,在之后其他篇中,还会讲到分布式架构体系、消息服务。分布式存储的开源框架均有讲到。文章慢慢更新中。。。

欢迎订阅关注公众号(JAVA和人工智能)

获取更多免费书籍、资源、视频资料

文章回顾链接:

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

 2,分布式系统详解--基础知识(线程)

 3,分布式系统详解--基础知识(通信)

 4,分布式系统详解--基础知识(CAP)

 5,分布式系统详解--基础知识(安全)

 6,分布式系统详解--基础知识(并发)

 7,分布式系统详解--架构简介(微服务)

 8,分布式系统详解--Linux(权限)

 9,分布式系统详解--框架(Hadoop-单机版搭建)

10,分布式系统详解--架构(Hadoop-克隆服务器)

11,分布式系统详解--框架(Hadoop-集群搭建)

12,分布式系统详解--框架(Hadoop-Ssh免密登陆配置)

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

  1. 最容易理解的计算机网络的基础知识概论(上)

    最容易理解的计算机网络基础知识概论(上) 1.计算机网络的分类方法 1)广域网. 2)城域网. 3)局域网. 4)个人区域网和人体区域网. 2.计算机的组成及结构 2.1早期计算机网络组成与结构 3 ...

  2. vue路由详解 --基础

    vue路由详解 --基础 1.router-link 和router-view组件 router-link相当于封装了一个a标签 router-view为组件显示的位置 <router-link ...

  3. bt协议详解 基础篇(上)

    bt协议详解 基础篇(上) 最近开发了一个免费教程的网站,产生了仔细了解bt协议的想法,所以写了这一篇文章,后续还会写一些关于搜索和索引的东西,都是在开发这个网站的过程中学习到的技术,敬请期待. 1 ...

  4. ad19pcb设置恢复默认_电脑主板BIOS设置详解BIOS知识大全

    电脑主板BIOS设置详解-BIOS知识大全 什么是电脑BIOS,一般电脑主板都设置了电脑开机后一直按着Del键即可进入BIOS. 系统开机启动 BIOS,即微机的基本输入输出系统(Basic Inpu ...

  5. 5G QoS控制原理专题详解-基础概念

    相关文章会在公众号同步更新.公众号:5G通信大家学 持续更新的相关5G内容都是直接根据3GPP整理,保证更新内容的准确性,避免通过二手,甚至多手的资料,以讹传讹误导网友. 在介绍完流程详解后,会整理专 ...

  6. iOS开发 - OC - block的详解 - 基础篇

    深入理解oc中的block 苹果在Mac OS X10.6 和iOS 4之后引入了block语法.这一举动对于许多OC使用者的编码风格改变很大.就我本人而言,感觉block用起来还是很爽的,但一直以来 ...

  7. 5G QoS控制原理专题详解-基础概念(3)

    最近比较忙,很多文章公众号上排版完发了,没来得及发布到CSDN上,各位同学可以先关注公众号,以便可以及时收到新的详解文章. 3.1.1.10 5G QoS characteristics 5G QoS ...

  8. 5G QoS控制原理专题详解-基础概念(2)

    相关文章会在公众号同步更新.公众号:5G通信大家学 持续更新的相关5G内容都是直接根据3GPP整理,保证更新内容的准确性,避免通过二手,甚至多手的资料,以讹传讹误导网友. 在介绍完流程详解后,会整理专 ...

  9. 最容易理解的计算机网络 基础知识概论(下)

    文章目录 1.计算机网络的分类 1.1按照传输介质分类 1.2按照网络的使用者进行分类 1.3按照网络的规模和作用范围进行分类. 2.计算机网络的性能指标 2.1 带宽 2.2 时延 2.2.1网络时 ...

最新文章

  1. 10 家世界顶级的公司都在用 Python 做什么?
  2. 【树莓派】不只是一封感谢信!漂移菌手把手指导:小空间树莓派镜像系统备份方法...
  3. Android Studio3.0中dependencies依赖由compile变为implementation的区别
  4. python定时器库_Python定时器完整示例 python定时器用法举例
  5. 通过Blazor使用C#开发SPA单页面应用程序(4) - Ant Design
  6. 阿里云轻应用服务器 宝塔面板 mongodb 配置外网连接 其二 配置账号密码
  7. Pandoc提供二进制分发包了
  8. mipi差分信号原理
  9. LNMP 1.2/1.3+升级Nginx、MySQL/MariaDB、PHP教程
  10. 洛谷 P2879 [USACO07JAN]区间统计Tallest Cow
  11. linux系统vmd软件如何使用,科学网—VMD (linux下分子可视化软件) - 刘雪静的博文...
  12. python网络爬虫从入门到精通吕云翔_python爬虫
  13. 计算机开机密码设置要求,电脑设置开机密码
  14. 猎豹网校C++ Primer学习笔记2
  15. ERP原理与应用教程-第一章
  16. idea的设置,导致list长度只有1000
  17. 前端控制台返回406错误解决方法
  18. 好用的 Mac 应用程序、软件和工具
  19. 非线性曲线拟合和多项式曲线拟合
  20. 游戏产业迎新机遇,KuPlay平台助力多元化发展

热门文章

  1. 计算机为何可以运行Java代码?
  2. 第一章 大神医系统!
  3. CSDN文章:提示请设置内容等级
  4. 脚本录制软件python 按键精灵 tc_使用Python来做一个屏幕录制工具的操作代码
  5. 日积月累系列之国籍控件(js源码)
  6. 谷歌浏览器如何安装vue调试工具
  7. 推荐朋友发项目来开源众包吧,成交立享5%的成交额提成!助人为乐还赚钱
  8. docker 安装ubuntu镜像
  9. python 爬取音乐
  10. python----最长不重复子串