中台:
企业需要一个强大的中间层为高频多变的业务提供支撑,为不同的受众用户提供多端访问渠道,基于此类需求“中台”概念
“大中台、小前台”

业务中台,技术中台,运营中台,算法中台 (公共能力下沉为服务)
微服务架构是中台模式落地的一种典型技术架构实现方式

微服务博客系统.png

1. DNS, TCP/IP, HTTP, WEBSOCKET SEO优化

image.png

  • 一、URL 到底是啥

URL(Uniform Resource Locator),统一资源定位符,用于定位互联网上资源,俗称网址

  • 二、域名解析(DNS)

DNS 协议提供通过域名查找 IP 地址,或逆向从 IP 地址反查域名的服务。

  • 浏览器缓存:浏览器会按照一定的频率缓存 DNS 记录。
  • 操作系统缓存:如果浏览器缓存中找不到需要的 DNS 记录,那就去操作系统中找。
  • 路由缓存:路由器也有 DNS 缓存。
  • ISP 的 DNS 服务器:ISP 是互联网服务提供商(Internet Service Provider)的简称,ISP 有专门的 DNS 服务器应对 DNS 查询请求。
  • 根服务器:ISP 的 DNS 服务器还找不到的话,它就会向根服务器发出请求,进行递归查询(DNS 服务器先问根域名服务器.com 域名服务器的 IP 地址,然后再问.baidu 域名服务器,依次类推)

DNS 服务器查询到与域名相对应的 IP 地址,然后返回给浏览器,浏览器再将 IP 地址打在协议上,同时请求参数也会在协议搭载,然后一并发送给对应的服务器。
进入 HTTP 请求阶段,HTTP 请求分为三个部分:TCP 三次握手、http 请求响应信息、关闭 TCP 连接。

1、浏览器中输入www.baidu.com 域名,操作系统会先查hosts件是否有记录,有的话就会把相对应映射的IP返回。
2、hosts文件没有就去查本地dns解析器有没有缓存。(这个我没答上来)
3、然后就去找我们计算机上配置的dns服务器上有或者有缓存,就返回
4、还没有的话就去找根DNS服务器(全球13台,固定ip地址),然后判断.com域名是哪个服务器管理,如果无法解析,就查找.baidu.com服务器是否能解析,直到查到www.baidu.com的IP地址

一种是转发模式,一种是非转发模式,我上面说的4是非转发模式。

  • 三、TCP 三次握手

      1. TCP 三次握手的过程如下:
      1. 为啥需要三次握手
  • 第一次握手:主机A发送位码为SYN=1的TCP包给服务器,并且随机产生一个作为确认号(这是tcp包的一部分),主机B收到SYN码后直到A要求建立连接;

  • 第二次握手:主机B收到请求后,向A发送确认号(主机A的seq+1),syn=1,seq = 随机数 的TCP包;
  • 主机A收到后检查确认号是否正确,即第一次A发送的确认号是否+1了,以及位码ack是否为1,若正确,主机A会再发送确认号(主机B的seq+1),ack=1,主机B收到后确认seq值与ack=1则连接建立成功。

接着补上小问题为什么两次握手不行,因为第二次握手,主机B还不能确认主机A已经收到确认请求,也是说B认为建立好连接,开始发数据了,结果发出去的包一直A都没收到,那攻击B就很容易了,我专门发包不接收,服务器很容易就挂了。(搜索公众号Java知音,回复“2021”,送你一份Java面试题宝典)

  • 四、发送 HTTP 请求
      1. 请求行包含请求方法、URL、协议版本
      1. 请求头包含请求的附加信息,由关键字/值对组成,每行一对,关键字和值用英文冒号“:”分隔。
      1. 请求体,可以承载多个请求参数的数据,包含回车符、换行符和请求数据,并不是所有请求都具有请求数据。
  • 先从局域网把数据发送到公司的交换机(如果交换机没有缓存本地mac地址和IP地址的映射,此时会通过ARP协议来获得),交换机的好处是可以隔离冲突域(因为以太网用的是CSMA/CD协议,这个协议规定网线上同一时刻只能有一台机器发送数据),这样就可以不仅仅同一时刻只有一台机器发送网络包了
  • 然后交换机再将数据发送到路由器,路由器相当于公司网关(我们公司小),路由器具有转发和分组数据包的功能(路由器通过选定的路由协议会构造出路由表,同时不定期的跟相邻路由器交换路由信息),然后这算是经过了物理层,数据链路层(以太网),开始到网络层进行数据转发了
  • 然后路由器转发IP数据报,一般公司的IP地址都会经过NAT转换,让内网的ip也能够访问外网,我们公司我注意了一下是192.168打头的内网ip地址。通过路由器的分组传输,所有数据到达服务器。
  • 然后服务器的上层协议传输层协议开始发挥作用,根据tcp包里的端口号,让服务器特定的服务来处理到来的数据包,并且tcp是面向字节流的(tcp有四大特性,可靠传输、流量控制、拥塞控制、连接管理),所以我们node的request对象,它的监听事件data事件为什么要用字符串一起拼接起来呢(buffer),就是因为tcp本身就是字节流,request对象使用的data(http层面)是tcp传来的数据块。
  • 最后数据由传输层转交给应用层,也就是http服务(或者https),后端经过一系列逻辑处理,返回给前端数据。

    2. SLB负载均衡到多个可用区

    增加集群 ,负载均衡

缓存静态资源 CDN(Content Delivery Network/Content Distribution Network,内容分发网络)。简单来说,CDN 就是将静态的资源分发到,位于多个地理位置机房中的服务器上,因此它能很好地解决数据就近访问的问题,也就加快了静态资源的访问速度。

阿里云负载均衡SLB稳定搞、容灾高、多种协议支持、并且运维成本低。

3. Zuul网关实现动态路由,权限校验,限流

4. 微服务,注册中心Eureka

5. 中间件-缓存,消息队列

缓存, 异步处理

6. 读写分离, 分表

分表1. PGsql 存储过程分表

  1. shardingJDBC 读写分离, 分表

    7. MySQL(索引,事务),ES(倒排)

8.浏览器解析渲染页面

    1. 根据 HTML 解析 DOM 树
    1. 根据 CSS 解析生成 CSS 规则树
    1. 结合 DOM 树和 CSS 规则树,生成渲染树
    1. 根据渲染树计算每一个节点的信息(布局)
    1. 根据计算好的信息绘制页面

      9. 断开连接