分布式系统概念与设计——网络
性能
对于一个分布式系统来说,服务通常分布在多个服务器或服务器组上。服务器之间,通过网络来进行连接。那么,就需要考虑网络延迟的问题。
延迟,指的是执行发送操作之后和数据到达目标计算机之前这一段时间。可以通过发送一个空消息到目标计算机来测试当前计算机到目标计算机之间的延迟。
数据传输速率指的是,网络传输过程开始后,数据在两台计算机之间的传输的速度,单位通常为bit/s(。
基于以上两个定义,我们可以得到:在两个计算机之间传输长度为length比特的消息,则消息传输时间可按如下计算:
这就是我们通常考察的,关于网络的性能。当然了上式的成立还有一些额外的条件,比如:
消息过长会被拆分成若干段,计算时需要累加。
消息最大长度不能超过网络允许的最大值。
由上式,我们还可以得到一些推想,比如:
当要传输的数据量较大时,延迟是可以被忽略的。
当要传输的数量量较小时,延迟在消息传输时间中的占比就会变大。
事实上,在分布式系统中,我们在服务器之间传输的消息通常都是较小的。
本地与网络
访问网络资源,必然需要比访问本地内存更长的时间。但是,当数据量足够大时,数据无法被完全装入本地内存。此时,一种方案是装入本地磁盘,而另一种方案可能是放在网络另一端的服务器内存中。此时,访问本地磁盘的速度通常是慢于网络访问的。
而事实上,在分布式系统的背景下,数据量通常是大的,亿级,兆级都是正常的。这种情况下,数据通常需要分布在几十台甚至几百台服务器中(可能是内存,也可能是磁盘)。所以,网络访问在分布式系统中,扮演着重要的角色。
网络下的其他问题
可伸缩性
在网络终端不断高速增长的背景下,网络的可伸缩性成为了一个必须要去面对和研究的课题。
可靠性
当数据在两台甚至更多台服务器间相互传输时,我们无法保证,传输不会出错(事实上是必然会出错),那么,网络在设计时,就必须考虑数据传输的可靠性该如何保证。
安全性
如今,商业竞争对手之间黑客攻击的报道已经屡见不鲜,网络环境复杂多变,我们必须考虑数据在网络传输过程中的安全性问题。
网络的本质
网络的本质,实际就是数据包的传输,即数据在服务器之间的交换,无论你传输的是文本,图片,音频还是视频。
交换模式有四种。
广播
广播事实上不涉及交换,因为发送者发出消息后,不会指定由谁来接收,而是由接收者根据需要判断是否接收。就好像客厅的电视,开了之后你依然可以选择不看,钻到被窝里玩手机。
电路交换
电路交换的典型案例就是电话网。主叫方拨号后,通过电话线程和交换台,不断连接到被叫方。这种系统称之为POTS,老式电话系统。
包交换
基于计算机技术,数据包从源地址到目标地址之间的转移,称之为包交换,叫做存储转发网络。
帧中继
一个数据包从源地址到目标地址,通常还会经过若干个中间结点。每个结点都需要接收数据,再发送出去。加上发送方和接受方,延迟不断累积。而这种延迟,在语音或视频通话等高实时性交互要求的场景下,是无法适应的。所以,帧中继的交换方式应运而生。这种方式,把数据拆分成N个很小的数据,即帧,然后依次发送。在这种情况下,由于一个帧很小,所以,中间结点对于帧的转发是很快的,基本上可以理解为帧只是通过了中间结点,就好像高速公路上的汽车。这种交换方式,解决了高实时性场景的网络需求。
领取专属 10元无门槛券
私享最新 技术干货