数据库为从网站和应用程序到企业系统的所有内容提供支持。下面是一个可以帮助您掌握数据库的学习地图:
这包括“什么是数据库”、RDBMS、SQL 与 NoSQL、ACID 与 BASE、OLTP 与 OLAP、事务和隔离级别等主题。
由关系数据库、非关系数据库和数据类型(整数、字符串、布尔值、日期、JSON 等)等主题组成。
包括 SQL 基础知识(SELECT、INSERT 等)、高级 SQL(视图、索引、CTE 等)和 NoSQL 查询(聚合和键值查找)等主题。
包括索引(B 树、哈希和位图)、查询执行计划、非规范化与规范化、分片、连接池和查询批处理等主题。
这包括用户角色、权限、加密、SQL 注入、高可用性(复制和故障转移)、水平与垂直扩展等主题。
包括流行的 SQL 数据库、NoSQL 数据库、GUI 工具、ORM、云数据库服务(RDS、DynamoDB、Google Cloud SQL 等)等主题。
用户在浏览器中输入 URL (bytebytego .com) 并按 Enter。我们需要做的第一件事是将 URL 转换为 IP 地址。映射通常存储在缓存中,因此浏览器在多层缓存中查找 IP 地址:浏览器缓存、作系统缓存、本地缓存和 ISP 缓存。如果浏览器在缓存中找不到映射,它将要求 DNS(域名系统)解析器解析它。
如果在任何缓存中都找不到 IP 地址,浏览器会转到 DNS 服务器进行递归 DNS 查找,直到找到 IP 地址。
现在我们有了服务器的 IP 地址,浏览器向服务器发送 HTTP 请求。为了安全访问服务器资源,我们应该始终使用 HTTPS。它首先通过 TCP 3 路握手与服务器建立 TCP 连接。然后它将公钥发送到客户端。客户端使用公钥加密会话密钥并发送到服务器。服务器使用私钥解密会话密钥。客户端和服务器现在可以使用会话密钥交换加密数据。
服务器处理请求并发回响应。对于成功的响应,状态代码为 200。响应中有 3 个部分:HTML、CSS 和 Javascript。浏览器解析 HTML 并生成 DOM 树。它还解析 CSS 并生成 CSSOM 树。然后它结合 DOM 树和 CSSOM 树来渲染树。浏览器向用户呈现内容和显示。
HTTPS 使用加密确保浏览器(客户端)和网站服务器之间的安全通信。
在发生任何安全通信之前,客户端和服务器首先使用 TCP 握手过程建立基本连接。此时,数据未加密。
此阶段旨在验证服务器的身份。客户端使用提供支持的加密算法的“hello”消息启动 TLS 握手。服务器回复,选择算法并发送包含公钥的数字证书。客户端验证证书,以确保它来自受信任的证书颁发机构 (CA) 。
客户端验证证书后,就会启动密钥交换过程。客户端使用服务器的公钥(来自证书)来加密会话密钥。加密的会话密钥被发送到服务器,服务器可以使用其私钥对其进行解密。更改密码规范消息表示从此时起,所有消息都将使用商定的会话密钥和密码进行加密。此步骤使用非对称加密来安全地交换会话密钥。
现在,双方都使用共享会话密钥切换到对称加密(更快)。消息使用相同的密钥进行加密和解密。现在,所有交换的数据都是安全和私密的。
多年来,Netflix 经历了几个成长阶段。在每个阶段,他们都必须改进扩展方法。
这是一个典型的 3 层,由客户端、API 和数据库组成。
该 API 应用程序被命名为 NCCP(Netflix 内容控制协议)。它是一个包含所有功能的整体应用程序。
随着更多功能的添加,保持工程速度变得至关重要。为了支持这一点,单体应用程序被分解为微服务。
功能是从 NCCP 应用程序中提取的,并作为单独的应用程序进行开发,但编排逻辑仍保留在 NCCP 应用程序中。
接下来,Netflix 拆分了应用程序。NCCP 留在那里提供播放体验,而其他 API 开始处理其他功能。
引入了 Zuul API 网关,以减少客户端和服务之间的耦合。
https://blog.bytebytego.com/p/ep174-16-coding-patterns-that-make