Bitget下载

注册下载Bitget下载,邀请好友,即有机会赢取 3,000 USDT

APP下载   官网注册

分布式系统原理与范型可能是相关行业人士都值得关注的知识,在此对分布式系统设计原理进行详细的介绍,并拓展一些相关的知识分享给大家,希望能够为您带来帮助!

分布式软件系统(Distributed Software Systems),是支持分布式处理的软件系统,是在由通信网络互联的多处理机体系结构上执行任务的系统。

它包括分布式操作系统、分布式程序设计语言及其编译(解释)系统、分布式文件系统和分布式数据库系统等。

分布式数据库系统是由若干个站集合而成。这些站又称为节点,它们在通讯网络中联接在一起,每个节点都是一个独立的数据库系统,它们都拥有各自的数据库、中央处理机、终端,以及各自的局部数据库管理系统。

因此分布式数据库系统可以看作是一系列集中式数据库系统的联合。它们在逻辑上属于同一系统,但在物理结构上是分布式的。

扩展资料:

分布式操作系统的特点:

1、在分布式数据库系统里不强调集中控制概念,它具有一个以全局数据库管理员为基础的分层控制结构,但是每个局部数据库管理员都具有高度的自主权。

2、在分布式数据库系统中数据独立性概念也同样重要,然而增加了一个新的概念,就是分布式透明性。所谓分布式透明性就是在编写程序时好像数据没有被分布一样,因此把数据进行转移不会影响程序的正确性。但程序的执行速度会有所降低。

3、与集中式数据库系统不同的是,数据冗余在分布式系统中被看作是所需要的特性,其原因在于:首先,如果在需要的节点复制数据,则可以提高局部的应用性。

其次,当某节点发生故障时,可以操作其它节点上的复制数据,因此这可以增加系统的有效性。当然,在分布式系统中对最佳冗余度的评价是很复杂的。

参考资料来源:百度百科-分布式操作系统

分布式系统背景

说分布式系统必须要说集中式系统,集中式系统中整个项目就是一个独立的应用,整个应用也就是整个项目,所有的东西都在一个应用里面。

如一个网站就是一个应用,最后是多个增加多台服务器或者多个容器来达到负载均衡的避免单点故障的目的,当然,数据库是可以分开部署的。

集中式很明显的优点就是开发测试运维会比较方便,不用为考虑复杂的分布式环境。

集中式很明显的弊端就是不易扩展,每次更新都必须更新所有的应用。而且,一个有问题意味着所有的应用都有问题。当系统越来越大,集中式将是系统最大的瓶颈。

什么是分布式系统?

分布式系统是若干独立计算机的集合,这计算机对用户来说就像单个相关系统。

以上定义摘自分布式系统原理与范型一书。

也就是说分布式系统背后是由一系列的计算机组成的,但用户感知不到背后的逻辑,就像访问单个计算机一样。

说的有点绕,我们可以来简单看下分布式系统图。

分布式系统利弊

在分布式系统中:

1、应用可以按业务类型拆分成多个应用,再按结构分成接口层、服务层;我们也可以按访问入口分,如移动端、PC端等定义不同的接口应用;

2、数据库可以按业务类型拆分成多个实例,还可以对单表进行分库分表;

3、增加分布式缓存、搜索、文件、消息队列、非关系型数据库等中间件;

很明显,分布式系统可以解决集中式不便扩展的弊端,我们可以很方便的在任何一个环节扩展应用,就算一个应用出现问题也不会影响到别的应用。

随着微服务Spring Cloud Docker的大热,及国内开源分布式Dubbo框架的重生,分布式技术发展非常迅速。

分布式系统虽好,也带来了系统的复杂性,如分布式事务、分布式锁、分布式session、数据一致性等都是现在分布式系统中需要解决的难题,虽然已经有很多成熟的方案,但都不完美。分布式系统也增加了开发测试运维成本,工作量增加,分布式系统管理不好反而会变成一种负担。

如果你对分布式技术有更好的见解,或者对本文有异议,欢迎在下方留言。

关注Java技术栈微信公众号,在后台回复:架构,获取栈长整理的更多的架构教程,都是实战干货,以下仅为部分预览。

有一些系统设计基础的话,给你推荐几本书吧:《面向模式的软件架构 卷4:分布式计算的模式语言》出版社:人民邮电出版社

主要讲分布式计算系统软件的设计和实现。

偏软件方向,相对较专业。《分布式计算(第二版)》出版社:电子工业出版社

主要介绍分布式计算的数学基础和理论,揭示设计分布式系统的底层问题(通信、协调、同步及不确定)和基本的算法概念及下界技术。

容易理解,适合自学。《分布式系统原理与范型》出版社:清华大学出版社

全书的第一部分讨论了分布式系统的原理、概念和技术,其中包括通信、进程、命名、同步、一致性和复制、容错以及安全。第二部分给出了一些实际的分布式系统:基于对象的分布式系统、分布式文件系统、基于文档的分布式系统以及基于协作的分布式系统,介绍了一些实际系统的设计思想和实现技术。

容易理解,适合自学。

首先 Google 的入门三篇(GFS / Big Table / Map Reduce) 是一定要读的,有个对分布式系统的基本认识,另外需要理解 lamport 老爷子的 logical clock 的思想,之后去读 Raft。

Raft 其实实现一个玩具还是比较容易的,真正难的是在原论文中没有提到的很多工程优化。但是按照原论文的几个 RPC 实现是没啥大问题的,就是有点慢另外吞吐上不去而已。

参考几个 go 的 raft 实现咯,比如 hashicorp 的那个(consul 这个可能测试少了点,也许有 bug),c++ 的 logcabin (diego 自己写的…不过性能呵呵)

几个工业级别的 raft 实现其实不太适合初学者,比如 coreos 的 etcd 和 pingcap 的 tikv(其实这两个 raft 实现本是同根生,都是源自 etcd 的 raft 实现,由 pingcap 和 coreos 两个团队互相维护和开发). 这两个实现做了大量的工程优化,有些地方和原论文有点不一样。不过这两个不管是测试还是生产环境中的检验,都是其他 raft 实现不可比的。

分布式系统特点:

1、分布性。分布式系统由多台计算机组成,它们在地域上是分散的,可以散布在一个单位、一个城市、一个国家,甚至全球范围内。整个系统的功能是分散在各个节点上实现的,因而分布式系统具有数据处理的分布性。

2、自治性。分布式系统中的各个节点都包含自己的处理机和内存,各自具有独立的处理数据的功能。通常,彼此在地位上是平等的,无主次之分,既能自治地进行工作,又能利用共享的通信线路来传送信息,协调任务处理。

3、并行性。一个大的任务可以划分为若干个子任务,分别在不同的主机上执行。

4、全局性。分布式系统中必须存在一个单一的、全局的进程通信机制,使得任何一个进程都能与其他进程通信,并且不区分本地通信与远程通信。同时,还应当有全局的保护机制。系统中所有机器上有统一的系统调用集合,它们必须适应分布式的环境。在所有CPU上运行同样的内核,使协调工作更加容易。

5、分布式系统更加的开放,具有相同的接口规范使得集群计算机能够方便的进行数据操作,系统协同度更高;

对外:体现在统一的接口描述上,用统一的接口描述语言描述一套所有服务器都知道的规则,这样各服务器的交互问题上没什么问题了。具体的接口实现根据各个服务器的情况具体实现,从而把实现和声明进行了有效的解耦。对内:各台服务器内部的策略和实现也需要解耦,以免整个服务器是按照实现和声明逻辑实现的,但是服务器内部确实一个整体的,对于分布式的开放性将会大打折扣。

分布式系统是相较于传统拼接处理器而言,分布式输入和输出节点设备分开布署,通过IP网络互联,分布式布署在软件商集中管控的拼接控制系统。所以相对于集中式而言,分布式系统拥有低成本、高性能、扩容简便等优点。举例世界地图吧。如果网络上的世界地图,全部储存在一个服务器里,那么面对来自全世界庞大的访问量,主机势必宕机。但如果地图信息是存放在世界各地的服务器里,大家通过网络交互去访问,就不会出现这样的问题。而且就算某个区域的服务器宕机,那需要修复的也只是这一台服务器而已。分布式工作的原理和优点就是这样。目前而言,分布式处理器国内做得比较好的,你可以去查查一家叫晨驭科技的。分布式目前经常被用在音视频技术领域,比如大屏拼接啊,投影融合啊,KVM坐席之类的项目里。KVM就是大型可视化坐席协作管理平台,新闻里那些火箭发射指挥中心,用的都是这样一套系统。

都看完了嘛?相信现在您对分布式系统原理与范型有一个初级的认识了吧!也可以收藏页面获取更多分布式系统设计原理知识哟!区块链、虚拟币,我们是认真的!