网络基础

引言

随着移动互联网的疯长式发展,互联网公司开始因为自身产品的用户指数级增长的同时,内心是复杂的.用户量的增加往往会给自己的产品提升知名度和经济效益.另一方面,超大用户访问量也给系统的维护和开始带来了挑战.目前国内面临着巨大高并发的企业典型的有两家,12306和阿里的各种购物狂欢节.2011年的时候12306还在春运时遭到广大刷票党的吐槽,到15年的今天,12306一点一点的在进步着.而淘宝每年的双11一天的进账就是千亿级,这么大的用户访问量是如何做到服务器不当机的呢.这里涉及到一个非常典型的问题,一台再好的服务器,带宽再强大也无法保证上亿的用户同时访问,可以说服务器是一个高并发时的瓶颈,如何解决这个瓶颈?阿里和12306是怎么克服这个问题的呢?作为开始工程师,我对此十分感兴趣,做了一些研究,并用Cisco Packet做了简单的模拟.

在进一步解决服务器瓶颈问题之前,需要有具备一些基础的计算机网络知识,理解这些基本概念.这是解决高并发问题的一个基本前提,离开这个根基,去谈集群就是耍流氓.

网络为王

知识准备

  1. 计算机两种分层结构OSI和ISO
  2. IP地址/子网掩码
  3. 网关/默认网关
  4. TCP连接的三次握手与四次分手
  5. 数据包/mac地址/端口号
  6. 路由器
  7. 交换机
  8. 网卡

互联网中计算机间的通信

名词解释

host1 --- 主机1(可以理解成互联网中做任意一台电脑)
host2 --- 主机2
host3 --- 主机3

switcher1 --- 交换机(物理设备,二层,只看目标与源的mac地址与端口)

router1 --- 路由器(三层,看目标与源的IP地址)

网卡 --- 物理设备,维护着一个IP地址,该地址与一个mac地址是绑定关系.

任意两台主机想要通信,需要先互发数据包,进行三次握手,成功建立连接后,再由请求主机向目标主机发送数据包.这是一个互联网请求的大前提.

假如有一台主机host1, 它本地维护着一张路由表,数据结构如下

数据包与路由表

host1与host2通信

Step1: 确认要发送的数据包三大内容,mac地址,IP地址,端口.

Step2: 发送数据包建立进行三次握手,这是关于最小网络连接的导图.一个简单的http请求,必须完成的最小粒度应该是三次握手---数据---四次分手.只有双方主机都确认分手以后,客户端才会释放本次连接使用的端口号,以节省资源.

http请求最小粒度

Step3: 发送真实数据,下图显示了其发送数据的过程.图中host1与host2处于同一个网段中,中间只连了一台交换机,于是直接将数据包扔给交换机,交换机通过物理网卡收发数据,这个速度无疑是非常快的.具体过程下图有详细说明.

模拟场景1

host1与Host3通信

step1与step2同上.

step3:host1与host3不在同一个网段,因此在确认数据包时,需要取网关的mac地址;此后host1将请求数据扔给肉头,也就是router1.这后router1要做的事情是重复操作step1,step2,step3,直到找到目标主机.如果目标主机根本不存在,那么连接会超时.过程分析图如下.

模拟场景2

服务器的瓶颈

设计一个极简单的web网站, 很容易搭建一台服务器,上面放着用户可能需要的所有资源文件,图片,视频和日记等等.这个模型实现了非常简单的网络结构,效果显著.但也存在问题,当你在为网站做了大量推广时后,用户量猛增,同一时间的访问量跟着涨起来,保持一天增1000个(假设这个网站做的不错,用户不会流失),那么三个月后,这台服务器变得力不从心.用户关于访问页面总是404的一系列负面反馈也日益频繁.这就是高并发形成的服务器瓶颈.

这个现象揭示了两个问题

  1. 用户访问量大的时候,服务器甚至都无法保证与每个请求建立连接.
  2. 同样是高并发,一台服务器毕竟只能提供有限的IO,终究导致往外写数据十分缓慢.

解决办法1

既然一台服务器已经无法满足海量用户的访问,那么就多买几台服务器好了.话说顾客是上帝,互联网时代,用户群就是王道,一切为用户.

不幸的是问题依然存在.比如:

  1. 你有多台服务器,用户请求的地址始终都是同一个域名这个请求最终该由哪台服务器响应呢?
  2. 即使现在的域名解析支持一个域名绑定多个IP地址.那这个IP地址就必须是公网IP,而公网IP资源有限,一台服务器一个公网IP,显然不是良策.

解决办法2

既然不能用公网IP,那么就在这些服务器与客户端之间再搭一台中间服务器,这台服务器负责持有公网IP,然后将用户请求的数据转发给其后的真实负服务器,即可.

这种解决方案,会遇到一个网络技术问题.

用户在发送请求时,首先会给中间服务器发送数据包,进行三次握手,这个过程建立连接的是用户与中间服务器.这就会导致负载服务器给用户发送响应数据时,被用户认为是不合法的连接,将被用户丢弃.

解决办法3

其实这个问题在实际生活中,早在1998年国内就有人提出了解决方案,那就是章文嵩士提出的LVS虚拟服务器.

它是这么解决的.

中间服务器D(10.211.55.2)收到用户C1(192.168.1.100)的请求数据包后,只是拆包,将目标的mac地址修改到自己网段中一台真实服务器RS1,然后将数据包打好后发给RS1.

这台RS1收到数据后,判断请求信息,其中源信息和目标信息本地都拥有,于是给予自己直接给用户发送确认连接.而收到请求的用户C1,再次向中间服务器D发送确认连接的数据包.最终建立TCP连接的是C1与RS1.这样就使得RS的收发数据变得合理合法与高效.

这就是著名的LVS(Linux Virtual Server).

结束语

有幸的是LVS被Linux内核收录,只要你的主机上运行着Linux内核,就自带有LVS软件服务,这很容易让有需求了解LVS的人自己动手搭一个集群,模拟这种负载均衡技术.

这将在明天的博文中更新,会有大概三种LVS实现方式.

最后编辑于
©著作权归作者所有,转载或内容合作请联系作者
  • 序言:七十年代末,一起剥皮案震惊了整个滨河市,随后出现的几起案子,更是在滨河造成了极大的恐慌,老刑警刘岩,带你破解...
    沈念sama阅读 194,491评论 5 459
  • 序言:滨河连续发生了三起死亡事件,死亡现场离奇诡异,居然都是意外死亡,警方通过查阅死者的电脑和手机,发现死者居然都...
    沈念sama阅读 81,856评论 2 371
  • 文/潘晓璐 我一进店门,熙熙楼的掌柜王于贵愁眉苦脸地迎上来,“玉大人,你说我怎么就摊上这事。” “怎么了?”我有些...
    开封第一讲书人阅读 141,745评论 0 319
  • 文/不坏的土叔 我叫张陵,是天一观的道长。 经常有香客问我,道长,这世上最难降的妖魔是什么? 我笑而不...
    开封第一讲书人阅读 52,196评论 1 263
  • 正文 为了忘掉前任,我火速办了婚礼,结果婚礼上,老公的妹妹穿的比我还像新娘。我一直安慰自己,他们只是感情好,可当我...
    茶点故事阅读 61,073评论 4 355
  • 文/花漫 我一把揭开白布。 她就那样静静地躺着,像睡着了一般。 火红的嫁衣衬着肌肤如雪。 梳的纹丝不乱的头发上,一...
    开封第一讲书人阅读 46,112评论 1 272
  • 那天,我揣着相机与录音,去河边找鬼。 笑死,一个胖子当着我的面吹牛,可吹牛的内容都是我干的。 我是一名探鬼主播,决...
    沈念sama阅读 36,531评论 3 381
  • 文/苍兰香墨 我猛地睁开眼,长吁一口气:“原来是场噩梦啊……” “哼!你这毒妇竟也来了?” 一声冷哼从身侧响起,我...
    开封第一讲书人阅读 35,215评论 0 253
  • 序言:老挝万荣一对情侣失踪,失踪者是张志新(化名)和其女友刘颖,没想到半个月后,有当地人在树林里发现了一具尸体,经...
    沈念sama阅读 39,485评论 1 290
  • 正文 独居荒郊野岭守林人离奇死亡,尸身上长有42处带血的脓包…… 初始之章·张勋 以下内容为张勋视角 年9月15日...
    茶点故事阅读 34,578评论 2 309
  • 正文 我和宋清朗相恋三年,在试婚纱的时候发现自己被绿了。 大学时的朋友给我发了我未婚夫和他白月光在一起吃饭的照片。...
    茶点故事阅读 36,356评论 1 326
  • 序言:一个原本活蹦乱跳的男人离奇死亡,死状恐怖,灵堂内的尸体忽然破棺而出,到底是诈尸还是另有隐情,我是刑警宁泽,带...
    沈念sama阅读 32,215评论 3 312
  • 正文 年R本政府宣布,位于F岛的核电站,受9级特大地震影响,放射性物质发生泄漏。R本人自食恶果不足惜,却给世界环境...
    茶点故事阅读 37,583评论 3 299
  • 文/蒙蒙 一、第九天 我趴在偏房一处隐蔽的房顶上张望。 院中可真热闹,春花似锦、人声如沸。这庄子的主人今日做“春日...
    开封第一讲书人阅读 28,898评论 0 17
  • 文/苍兰香墨 我抬头看了看天上的太阳。三九已至,却和暖如春,着一层夹袄步出监牢的瞬间,已是汗流浃背。 一阵脚步声响...
    开封第一讲书人阅读 30,174评论 1 250
  • 我被黑心中介骗来泰国打工, 没想到刚下飞机就差点儿被人妖公主榨干…… 1. 我叫王不留,地道东北人。 一个月前我还...
    沈念sama阅读 41,497评论 2 341
  • 正文 我出身青楼,却偏偏与公主长得像,于是被迫代替她去往敌国和亲。 传闻我的和亲对象是个残疾皇子,可洞房花烛夜当晚...
    茶点故事阅读 40,697评论 2 335

推荐阅读更多精彩内容