首页 运维 网络学院 查看内容

大数据时代到来程序员必备技能分布式系统,白话解析分布式系统

2017-6-12 10:55 |来自: 互联网 2118 0

摘要: 分布式系统在互联网时代,尤其是大数据时代到来之后,成为了每个程序员的必备技能之一。分布式系统主要包含了:分布式网络,分布式存储,分布式计算,分布式应用。分布式与集群的区别分布式(distributed)是指在多 ...

分布式系统在互联网时代,尤其是大数据时代到来之后,成为了每个程序员的必备技能之一。分布式系统主要包含了:分布式网络,分布式存储,分布式计算,分布式应用。

分布式与集群的区别

分布式(distributed)是指在多台不同的服务器中部署不同的服务模块,通过远程调用协同工作,对外提供服务。

集群(cluster)是指在多台不同的服务器中部署相同应用或服务模块,构成一个集群,通过负载均衡设备对外提供服务。

分布式的定义

分布式系统(distributed system)简单来说就是一群独立计算机集合共同对外提供服务,但是对于系统的用户来说,就像是一台计算机在提供服务一样。分布式意味着可以采用更多的普通计算机(相对于昂贵的大型机)组成分布式集群对外提供服务。计算机越多,CPU、内存、存储资源等也就越多,能够处理越大的并发访问量。

分布式的特性

各个主机之间通信和协调主要通过网络进行,所以分布式系统中的计算机在空间上几乎没有任何限制,这些计算机可能被放在不同的机柜上,也可能被部署在不同的机房中,还可能在不同的城市中,对于大型的网站甚至可能分布在不同的国家和地区。但是,无论空间上如何分布,一个标准的分布式系统应该具有以下几个主要特征:

分布性——分布式系统中的多台计算机之间在空间位置上可以随意分布,系统中的多台计算机之间没有主、从之分,即没有控制整个系统的主机,也没有受控的从机。

透明性——系统资源被所有计算机共享。每台计算机的用户不仅可以使用本机的资源,还可以使用本分布式系统中其他计算机的资源(包括CPU、文件、打印机等)。

同一性——系统中的若干台计算机可以互相协作来完成一个共同的任务,或者说一个程序可以分布在几台计算机上并行地运行。

通信性——系统中任意两台计算机都可以通过通信来交换信息。

和集中式系统相比,分布式系统的性价比更高、处理能力更强、可靠性更高、也有很好的扩展性。但是,分布式在解决了网站的高并发问题的同时也带来了一些其他问题。首先,分布式的必要条件就是网络,这可能对性能甚至服务能力造成一定的影响。其次,一个集群中的服务器数量越多,服务器宕机的概率也就越大。另外,由于服务在集群中分布是部署,用户的请求只会落到其中一台机器上,所以,一旦处理不好就很容易产生数据一致性问题。

分布式设计开发注意问题

系统如何拆分为子系统

如何规划子系统间的通信

通信过程中的安全如何考虑

如何让子系统可以扩展

子系统的可靠性如何保证

数据的一致性是如何实现的

总结

分布式系统有着漫无边际的扩展性。(毕竟任何计算机都会有性能的极限,分布式系统可以通过不断扩张主机的数量以实现横向水平性能的扩展)相对集群的另一个好处就是巴菲特的名言:不要把鸡蛋放在一个篮子里,来减轻被一锅端的风险。

本文出处: http://www.toutiao.com/a6430253984203882753/
声明:文章版权归原作者所有 部分文章转自互联网 如有侵权请联系 [邮箱地址] 删除

路过

雷人

握手

鲜花

鸡蛋

最新评论

返回顶部