若客户提出一个质量属性要求,要实现一个Web查询,性能200毫秒以内,请问这个要求高还是低?
对一个web系统来说,200毫秒是一个比较高的性能。
凭啥这么说,你要是做过架构的话,就明白这个道理。
作为架构师,必须了解完整过程,每一个细节。
你应该能把整个系统分解成若干个环节,并且各环节的细节你都能了解。这个环节是硬的还是软的?会不会影响这个部分的性能开销?
看下图,能看到你从发起请求,一直到页面呈现完了之后的4个主要环节。
要细分的话,其实当中还有更多的环节。
网络大概走多少毫秒,差不多50ms,环节取决于网络环境,要是跨国的话,从中国到美国,可能要上百。
这个是系统架构改变不了的。
那就是200已经去掉了50,或者100,剩下100多可以用。
收到数据之后,需要浏览器渲染出来,又需要多长时间呢?
这个时间不确认,看渲染结果复不复杂,有没ajax再次请求这类情况。
可能简单的,10几毫秒,复杂的更长。
右边从Web服务器到应用服务器、从应用服务器到数据库DB之间,还有性能开销。
数据库检索出来是一个值,这个值到了你的开发语言里面,经过底层框架,需要做数据类型转换,变成程序里的一个对象。
一个架构师,就要学会区分,哪些是架构能左右的,能够改善的,哪些是我不能解决的,最后在你能解决的部分里想办法。
你都了解了之后,你就能专业地跟客户说,这个200毫秒我做不到。
或者说在什么条件下,我能做到。
一个事情,只有你都了解的情况下,才能给出一个可行方案。
01、当您在浏览器中输入 URL 时会发生什么?让我们一步步看一下整个过程:
- 用户在浏览器中输入 URL 并按 下Enter键时,我们需要做的第一件事是将 URL 转换为 IP 地址。映射通常存储在缓存中,因此浏览器会在多层缓存中查找 IP 地址:浏览器缓存、操作系统缓存、本地缓存和 ISP 缓存。如果浏览器在缓存中找不到该映射,则会请求 DNS(域名系统)解析器进行解析。
- 如果在任何缓存中都找不到 IP 地址,则浏览器将前往 DNS 服务器进行递归 DNS 查找,直到找到 IP 地址。
- 现在我们有了服务器的IP地址,浏览器向服务器发送HTTP请求。为了安全访问服务器资源,我们应该始终使用 HTTPS。它首先通过 TCP 3 次握手与服务器建立 TCP 连接。然后它将公钥发送给客户端。客户端使用公钥加密会话密钥并发送给服务器。服务器使用私钥来解密会话密钥。客户端和服务器现在可以使用会话密钥交换加密数据。
- 服务器处理请求并发回响应。
02、用一张图解释 8 种流行的网络协议对于成功的响应,状态代码为 200。
响应中有 3 部分:HTML、CSS 、 Javascript。
浏览器渲染的顺序:
1. 浏览器解析HTML并生成DOM树。
2. 解析 CSS 并生成 CSSOM 树。
3. 结合 DOM 树和 CSSOM 树来构建渲染树。
4. 节点布局
5. 最后页面渲染,浏览器将内容呈现并显示给用户。
- HTTP(超文本传输协议)HTTP 是一种用于获取 HTML 文档等资源的协议。它是 Web 上任何数据交换的基础,是一种客户端-服务器协议。
- HTTP/3HTTP/3 是 HTTP 的下一个主要修订版。它运行在 QUIC 上,这是一种专为移动互联网使用而设计的新传输协议。它依赖于 UDP 而不是 TCP,从而实现更快的网页响应。VR 应用程序需要更多带宽来渲染虚拟场景的复杂细节,并且可能会从迁移到由 QUIC 提供支持的 HTTP/3 中受益。
- HTTPS(安全超文本传输协议)HTTPS 扩展了 HTTP 并使用加密来实现安全通信。
- WebSocketWebSocket 是一种通过 TCP 提供全双工通信的协议。客户端建立WebSocket来接收来自后端服务的实时更新。与总是“拉取”数据的 REST 不同,WebSocket 允许“推送”数据。在线游戏、股票交易和消息传递应用程序等应用程序利用 WebSocket 进行实时通信。
- TCP(传输控制协议)TCP 旨在通过互联网发送数据包,并确保通过网络成功传送数据和消息。许多应用层协议构建在 TCP 之上。
- UDP(用户数据报协议)UDP 直接将数据包发送到目标计算机,无需先建立连接。UDP 通常用于时间敏感的通信,其中偶尔丢弃数据包比等待更好。语音和视频流量通常使用此协议发送。
- SMTP(简单邮件传输协议)SMTP 是一种用于将电子邮件从一个用户传输到另一个用户的标准协议。
- FTP(文件传输协议)FTP 用于在客户端和服务器之间传输计算机文件。它具有单独的控制通道和数据通道连接。