(一)从网络到分布式(集群内高并发)

前言

高并发,负载均衡,高可用
不要因为技术而技术
因为中国人口基数大,网民2.4E
营销产生高并发 渠道的流量的质量(请求的来源)
每个渠道的转化率,购买力(什么地方传来的用户会消费)
中国在向服务行业转型 service

解决高并发的方案

4层
7层 七层网络模型
网络通信的分层模型讲起:七层模型,亦称OSI(Open System Interconnection)模型。自下往上分为:物理层、数据链路层、网络层、传输层、会话层、表示层和应用层。所有有关通信的都离不开它。
在这里插入图片描述
在这里插入图片描述

为什么要分层?

本质是通信,编程本身是计算机软件工程学分层解耦

某一层的升级替换,剩下不会发生变化。
osi参考模型,通信的过程。

在这里插入图片描述

应用层

应用层可以协议的协议:http协议(网络访问),ssh协议(虚拟机),smtp协议(发邮件)
协议是约定规范

HTTP协议

HTTP协议即超文本传送协议(Hypertext Transfer Protocol ),是Web联网的基础,也是手机联网常用的协议之一,WEB使用HTTP协议作应用层协议,以封装HTTP文本信息,然后使用TCP/IP做传输层协议将它发到网络上。

打开一个虚拟机,把百度的页面请求回来。

在这里插入图片描述

  cd /proc/$$/fd

proc
$$ :当前进程号
fd :文件描述符
在这里插入图片描述
建立了一个面对百度的socket(一个套接字连接)

  exec 8<>  /dev/tcp/www.baidu.com/80

/dev/tcp/www.baidu.com/80 : 磁盘路径
8 : 创建一个描述符8
<> : 输入输出 都指向上面那个路径

在这里插入图片描述

通过socket发送给了百度一个GET请求

  echo -e 'GET / HTTP/1.0\n'  >& 8

echo :打印
-e :会使\n变成换行符
‘GET / HTTP/1.0\n’ : http 的最简写法

                           :命令重定向输出

& :代表指向的不是文件,是文件描述符

从标准输入读取内容

  cat  <&  8
关于Socket(套接字)

Socket跟TCP/IP并没有必然的联系。Socket编程接口在设计的时候,就希望也能适应其他的网络协议。所以,Socket的出现只是可以更方便的使用TCP/IP协议栈而已,其对TCP/IP进行了抽象,形成了几个最基本的函数接口。比如create,listen,accept,connect,read和write等等。

Socket长连接

长连接,指在一个TCP连接上可以连续发送多个数据包,在TCP连接保持期间,
连接→数据传输→保持连接(心跳)→数据传输→保持连接(心跳)→……→关闭连接;
一般需要自己做在线维持。

短连接是指通信双方有数据交互时,
连接→数据传输→关闭连接;
比如Http的,只是连接、请求、关闭,过程时间较短,服务器若是一段时间内没有收到请求即可关闭连接。其实长连接是相对于通常的短连接而说的,也就是长时间保持客户端与服务端的连接状态。

什么时候用长连接,短连接?

长连接多用于操作频繁,点对点的通讯,而且连接数不能太多情况。
每个TCP连接都需要三步握手,这需要时间,如果每个操作都是先连接,再操作的话那么处理 速度会降低很多,所以每个操作完后都不断开,次处理时直接发送数据包就OK了,不用建立TCP连接。
例如:数据库的连接用长连接, 如果用短连接频繁的通信会造成Socket错误,而且频繁的Socket创建也是对资源的浪费。当然Socket连接池也是解决方案之一,可以动态自动按模式的管理长连接的数量。

传输控制层

关于TCP/IP和HTTP协议的关系

网络有一段比较容易理解的介绍:“我们在传输数据时,可以只使用(传输层)TCP/IP协议,但是那样的话,如果没有应用层,便无法识别数据内容。如果想要使传输的数据有意义,则必须使用到应用层协议。应用层协议有很多,比如HTTP、FTP、TELNET等,也可以自己定义应用层协议。

TCP :面向连接的,可靠的连接
UDP :没有连接的,不可靠的连接,UDP传输比TCP快
TCP和UDP的区别

1、TCP是面向链接的,虽然说网络的不安全不稳定特性决定了多少次握手都不能保证连接的可靠性,但TCP的三次握手在最低限度上(实际上也很大程度上保证了)保证了连接的可靠性;而UDP不是面向连接的,UDP传送数据前并不与对方建立连接,对接收到的数据也不发送确认信号,发送端不知道数据是否会正确接收,当然也不用重发,所以说UDP是无连接的、不可靠的一种数据传输协议。  
2、也正由于1所说的特点,使得UDP的开销更小数据传输速率更高,因为不必进行收发数据的确认,所以UDP的实时性更好。知道了TCP和UDP的区别,就不难理解为何采用TCP传输协议的MSN比采用UDP的QQ传输文件慢了,但并不能说QQ的通信是不安全的,因为程序员可以手动对UDP的数据收发进行验证,比如发送方对每个数据包进行编号然后由接收方进行验证啊什么的,即使是这样,UDP因为在底层协议的封装上没有采用类似TCP的“三次握手”而实现了TCP所无法达到的传输效率。

三次握手和四次分手

三次握手>数据传输>四次分手 : 最小粒度,不可被分割

三次握手,为什么是三次?

客户端 -> 服务端 : 我想和你建立连接
客户端 <- 服务端 : 确认包
客户端 -> 服务端 :确认包
方向和IO
如果是两次
客户端两次就够了int,out都OK了。
(怎么确认第三次没问题: 收到对方的确认包,默认对方收到自己的请求,自己的输出没问题。)
服务端来的确认了,我发的对方收到了么?
所以需要3次。
3次后才会开辟内存和其他资源。

四次分手,为什么是是四次?

两端同时说分手,并且收到确认,才能销毁对应的资源。
客户端提出分手,服务端确认收到,客户端收到服务端的确认消息;
服务端发出分手,客户端确认收到,服务端收到客户端的确认消息;
这时双方才开始销毁内存等资源。

发送连接的过程

客户端
应用层(浏览器):我要和百度创建连接
传输控制层:准备握手包阻塞
网络层:梳理网络
链路层:知道去哪
物理层(网卡):二进制编码

物理层 ->交换机 -> 路由器 ->

服务端
物理层->链路层->网络层->传输控制层->应用层

三次握手和数据传输可以粘连

1客户端 2服务端
1 -> 2 : 我想和你建立连接
1 <- 2 : 确认包
1 -> 2 :传数据的时候带着确认包
1 <- 2 : 确认包 握手和数据确认

service mesh
微服务的下一代

微服务(快速成长),中台,服务上云,service mesh

防火墙是因为没有完整的价值观,容易被忽悠。

Netstat是在内核中访问网络连接状态及其相关信息的程序,它能提供TCP连接,TCP和UDP监听,进程内存管理的相关报告。

  netstat -natp

n:IP地址
a:所有
t:TCP
p:pid 进程id号
在这里插入图片描述

网络层

在这里插入图片描述

网卡信息

  cat /etc/sysconfig/network-scripts/ifcfg-eth0

if : interface 连接
cof : configure 配置
eth : ethernet 以太网
0 : 第1块网卡,从0开始
ifcfg-eth0 : 第一块网卡的以太网连接配置

在这里插入图片描述

网络配置的四个维度

IPADDR : 这台计算机的IP地址(通信每个节点的坐标,点分字节0-255,8进制)
NETMASK : 掩码(与IPADDR 按位与运算,得出网络号(192.168.150.14 这个网路的第14个) )
GATEWAY : 网关
DNS : 域名解析(域名服务器的地址)

路由表(信息来自配置文件)

  route  -n 

在这里插入图片描述

TCP/IP协议 网与网之间

下一条机制

每一个互联网的设备的内存不需要存全网的数据,只需要存他周边一步之内的数据,扔给对方。

  ping www.baidu.com

在这里插入图片描述

路由判定

61.135.168.121 与 Genmask做与运算,并于Destination对比,相同得到Gateway默认网关,出这个网关要走这个路径。
61.135.168.121 与 0.0.0.0做与运算,都是0.0.0.0。任何网络都会被扔到路由器,3层以上的路由器都有路由表,如果具有转发能力,都会根据路由表可以找到对应的下一条

同一网关,通过交换机转发数据包。
Gateway0.0.0.0,说明一定有确定的IPADDR ;
Gateway出现网络地址,说明一定不是直连的。

链路层

找到192.168.150.2之后,链路层的通讯地址 MAC麦克地址。

   arp -a

在这里插入图片描述

三层地址

00:50:56:f7:53:2b
最终给谁 61.135.168.121
端口号(根据端口号找到对应的进程)

下一条 到下台机器,只会修改对应的MAC。
TCP/IP协议:
基于下一条的机制,IP是端点间,mac地址是节点间的。

路由表人工添加条目,可以确定下一条的方向。

在这里插入图片描述

下一条 之后怎么寻找MAC地址

先发送arp,MAC 全是F,会广播,只有路由会回转;之后交换机就会定点转发了,知道了路由器的地址(交换机arp学习的过程)。
网卡激活,会通告,告诉别人我来了。
在这里插入图片描述

题外话

5G只提升了接收端的速度和数量增多,毫米波。
与4G的比较
几十毫秒 -> 一毫秒。
100M -> 1G

在地球上光速并不是最快的通讯方式,但一定是最远的通信方式。
有介质的时候,光速30W ->20W
有介质同轴电缆中,电磁23-23W,衰减快。

总结

第一天 21:40 - 00:48 :3小时

学起来,其实也不觉得3小时是那么久,窗外的雨声,也该睡了。

猜你喜欢

转载自blog.csdn.net/qq_39308071/article/details/114855436