欢迎访问牛耳教育官网 专注实战IT培训技术20年!
400-0731-162
当前位置:IT培训机构 > Java培训 > 到底什么是分布式系统?

到底什么是分布式系统?

时间: 2021-08-10 | 作者: admin | 分类:Java培训 | 关键字:Java,分布式系统 | 阅读量:

导读:当单体应用的性能不能满足日渐增长的业务需求的时候,就会出现分布式系统。好那接下来的时间里就让我带你们走进分布式系统的世界。

​    当单体应用的性能不能满足日渐增长的业务需求的时候,就会出现分布式系统。好那接下来的时间里就让我带你们走进分布式系统的世界。

分布式系统的优势和挑战

   什么是分布式系统?

 

   到底什么才是分布式系统?看了很多文章,感觉很少有文章能把这个概念解释的既简单,又清楚的。结合这自己的理解,我对分布式系统的概念做了下面的总结。

 

   关于分布式系统的定义问题,我倾向从字面上来解释:分开部署的系统就可以称为分布式系统。比如,一个系统原本由前端页面、后台服务和后端数据库组成,将这些服务全都部署在一台机器上,这种应用叫单体应用。现在我们将数据库拿出来,单独部署到另外一台机器上,后端服务和数据库之间通过网络通信,这种部署方式就是一种最简单的分布式系统。

 

   再比如说,原本有一个后端服务,能支持500QPS的并发请求。现在业务量上升,需要能支持1000QPS的并发量。此时你有两个方案:

 

   第一种就是增加系统的硬件性能,进行垂直扩展,此时系统还是单体应用;第二种方案就是再部署另外一台机器,同样也支持500QPS,这样总体就能达到1000QPS的性能需求了。

 

   方案二的系统也是一种分布式系统,将本来可以部署一台机器的应用原样复制一份到另外的机器上再部署一份。方案二中,部署的多台应用被也被称为一个集群,可以说集群是分布式系统的一种。

 

   再比如说,原本有一个系统中包含订单服务、产品服务和支付等服务。现在随着业务的不断复杂化,将订单服务、产品服务和支付服务单独分拆出来形成订单系统、产品系统和支付系统,交由专人负责。这种系统将原本的单体应用分拆成多个系统部署到不同的机器上,也是分布式系统,而且我们平时开发中所指的分布式系统大多是指这种系统。其实稍微有点分布式系统知识的同学可以看出来,这种系统就是最简单的微服务系统。所以微服务也是分布式系统的一种。

分布式系统的优势和挑战

   分布式系统的优势

 

   单体应用的优势在于它的简单,但是其劣势也相当明显。一个就是容易出现单点故障,还有一个就是容易达到性能瓶颈。分布式系统很大程度上就是为了解决单体应用上面的问题而出现的。

 

   分布式系统将一些廉价的PC机通过网络连接起来,共同完成工作,并且在系统中提供冗余来解决高可用的问题。分布式系统通过廉价的PC机减轻了企业购买大型机的高昂费用,通过系统冗余又解决了HA的问题。

 

   虽然分布式系统通过多工作节点解决了单体应用面临的高成本和可用性问题,但是它引入了对分布式系统内部工作节点的协调问题。

 

   分布式系统的挑战

 

   分布式系统的核心就是解决一个问题:对分布式系统内部工作节点的协调问题。

 

   看似简单的问题会因网络丢包、节点宕机恢复等场景变得异常复杂。由此才衍生出很多概念、协议和理论。为探究共识问题最大能解决的程度,于是有了CAP边界理论;为在特定条件和范围内解决该问题,于是有一致性协议Paxos、Raft、Zab和ViewstampedReplication;为构建这些协议,于是有多数派、Leader选举、租约、逻辑时钟等概念和方法。

分布式系统的优势和挑战

   又因为分布式系统分开部署的特点,在具体实施开发过程中,我们又要解决:

 

   1、分布式事务问题;

 

   2、session共享问题;

 

   3、分布式锁问题;

 

   4、全局时钟问题;

 

   还有一些列其他问题。虽然分布式系统解决了单体系统的单点故障和性能瓶颈问题,但同时也带来了一系列“弊端”。但是技术就是这样,没有一个技术是完美的。我一直有个观点就是:假如在一个领域中出现了一个完美的解决方案,那么在这个领域,人就不再有价值。分布式系统的复杂性给我们带来了更多学习的空间,让善于学习的程序员有更多发挥自身价值的机会。

免责声明:本文内容来源于公开网络,若涉及侵权联系尽快删除!,【本文标题和网址】到底什么是分布式系统?:http://www.csnewer.com/java_news/1006.html
申请免费试学
快捷咨询
资深IT讲师一对一为您解答IT问题
电话
咨询服务电话
400-0731-162
微信
IT培训_长沙java培训机构_专注于实战IT培训技术20年-牛耳教育官网
关注了解更多IT知识
QQ
热门课程
java软件开发课程 Java是一种可以撰写跨平台应用程不齐人60%Java工程师缺口序的面向对象的程序设计语言。Java技术具有卓越的通用性、高效性、...
嵌入式应用开发课程 嵌入式开发就是指在嵌入式操作系统下进行开发,包括在系统化设计指导下的硬件和软件以及综合研发。除暂且分离硬件的...
软件测试课程 软件测试具有人才缺口大、发展方向广、专业无限制、适合零基础、技术上手快、职业生涯稳等优势。 人才缺口大 国内测试...
Web前端开发课程 web前端开发是创建Web页面或app等前端界面呈现给用户的过程,通过HTML,CSS及JavaScript以及衍生出来的各种技术、框架、解决方...
java+大数据课程 什么是Java大数据? Java,是一门面向对象编程语言,具有功能强大和简单易用的特征。作为**受欢迎的计算机语言,发展至今...
python人工智能课程 Python是一门神奇的编程语言,它具有简单易学、就业面广、就业薪资高、竞争压力小、开发效率高、行业风口等6个优势,下...
热门资讯
本文:(零基础学java)零基础也能学Java,5大Java学习方法!,最近有很多同学来问小编,关于学习java的方法,下面小编根据...
大家的生活已经离不开嵌入式就连常用的共享单车都离不开嵌入式。所以越来越多的人看中了嵌入式的就业前景,转行来做嵌...
Web前端培训机构的好坏直接决定了你学习后的就业薪资,市面上web前端培训机构那么多,应该如何选择靠谱的web前端培训机构...
当谈到Python时,一般指的是CPython。但Python实际上是一门语言规范,只是定义了Python这门语言应该具备哪些语言要素,应当能...
目前,Python非常流行并且被广泛使用。它是目前最热门的行业之一,竞争激烈,工资高,未来发展出色。但是对于学习Pytho...
打算参加嵌入式培训的同学对于嵌入式培训课程的内容都特别的关心,只有在了解了课程内容之后才能更好的知道这个嵌入式...
2020年学习嵌入式晚不晚?1、学技术不像学艺术,只要坚持,任何时候学都不晚。很多人对于学习嵌入式应用开发都会有所顾...
本文(零基础学python)0基础学习Python容易犯哪些错误呢?主要介绍1. 忘记写冒号 在if、elif、else、for、while、class、def 语句后...
本文:IT培训就业感言(牛耳教育IT培训就业感言),介绍:转眼间几个月在牛耳教育的IT培训就结束了,从学习到就业也算是...
it培训学校有用吗?其实判断IT培训学校有没有用,看培训的课程是否能满足自己的需求就可以了,如果培训的课程自己都了...