阶段小结之三次握手+MySQL+架构

1为什么要三次握手?

第一次申请建立连接,第二次握手发送一个SYN请求和ACK确认,客户机再回复一个ACK进行确认。
原本两次出现问题,客户端向服务端发送请求,服务端回一个确认,由于网络延迟导致客户端一方断开连接,服务端以为是新的请求,开启端口无人连接,被动到超时才关闭端口,形成系统资源的一种浪费。
四次挥手是客户端发送SYN请求给服务端,服务端收到后回复一个ACK确认,再向客户端发送一个SYN请求,客户端收到SYN建立连接的请求后,回复一个ACK确认包。

2.与百度建立连接的过程?

先找DNS,进行逻辑寻址,找到后通过本地缓存etc/host下找,再通过顶级域和二级域(迭代),或子域(递归)找到,通过三次握手建立连接,通过http1.1进行传输。

3.http1.0和http1.1有什么区别?

http1.0是短连接,每次传输数据都要进行三次握手四次挥手的过程。
http1.1是长连接,具有长连接特性,有缓存机制。

4.TCP/UDP有什么区别?

TCP面向连接,TCP传输有指针校验
UDP头部格式简单只有源IP,目标IP,源MAC,目标MAC,且UDP没有重传机制。

5.七层模型+TCP/IP五层模型

物理层
数据链路层
网络层
传输层
会话层 应用层
表示层
应用层

6.主从复制(MySQL)

原理:从库生成两个线程,一个I/O线程一个SQL线程
I/O线程会去请求主库的binlog(二进制日志),并将得到的binlog日志写到relaylog(中继日志)文件中。
主库会生成一个logdump线程,用来给从库I/O传binlog
SQL线程,会读取relay log文件中的日志,并解释成具体操作,实现主从的操作一直,而最终数据一致。

ps:日志记录方式分为三种分别是混合,基于行,基于SQL

主从复制同步方式有三种:全同步,半同步,异步

全同步:完全备份后同步到所有的slave上
半同步:至少有一个slave同步完成
异步:每有一个操作同步一次(默认使用的同步方式为异步)
备份要求:最终一致性,强一致性(rsync可以做到强一致性)
rsync --delate:删除目标位置有,而原始位置没有的文件

问:为什么要要使用rsync进行备份?
对外业务繁忙线程压力大,同步过程中数据因为延迟导致丢失,市场占有率丢失。

备份的三种方式:热备,温备,冷备
温备:再使用过程中可以进行备份,但备份的过程中是锁定表的,用户无法写入数据,生产环境中一般不使用。(温备=MySQL dump)

访问百度过程(细节)
在这里插入图片描述
问nginx监听80端口,什么叫监听?
nginx中有一个master(主进程)让nginx能够启动,主要职责并不是处理具体的事情,让worker进程捕捉到请求,交给任务分配器(查找配置文件,看访问的是哪个位置),找到nginx内部的页面,转化或翻译成浏览器的形式转发回去。
查看当前系统的连接数:ss -ntap |wc -l
 
 访问网页过程详细描述(数据流向):
 客户端访问过来通过一个虚拟的端口,通过socket套接字文件桥接两个虚拟端口,注入到ens33:0的端口上,达到服务器的端口上,服务器端口会被nginx上master进程派出的worker进程去捕捉到,到nginx进行遍历配置文件,根据location优先级,遍历到匹配的访问位置(本质访问文件)。

在这里插入图片描述
主机层面就是客户机,服务层面:游戏的运行环境,业务:代码跑的地方。
在这里插入图片描述
tomcat监听端口的不是8080端口,用的是connector连接器捕捉,当使用netest -ntap |grep 8080时候显示的是java,监听的是Java,而不是tomcat。
tomcat中有三个容器分为Web容器,JSP容器和SERVERLET容器,在Web容器是一个动态的页面展示,文件是一个index.jsp的格式,会有一些Java代码,这个代码像传参一样,把交互的需求交给JSP容器,翻译成serverlet代码,翻译成可执行的任务,传给serverlet容器,通过catelina.sh执行,serverlet执行的目录在/tomcat/wabapps下配合凯特宁娜执行,tomcat通过host项目来和数据库进行对比。

如果一个包有40G,tomcat启动的速度会变得很慢,可以将一个大的文件分成10个小的子系统,定义一个主启动程序(mine),然后调用剩下的子系统,相比之前加快了启动速度。这就类似于分布式的概念,在不同服务器上跑的话会消耗资源,可以建立虚拟化或者容器化来减少资源消耗(一个进程来控制一个容器,理论上可以跑上万个容器)。

使用Java时候会出现一个问题翻译的话需要调用很多的内存,导致内存溢出(系统会强行被占用内存),持续一段时间,会导致系统会被吃满,导致卡死到瘫痪。为了解决这个问题需要进行堆和栈的优化。

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值