Sunday, June 18, 2023
Saturday, June 17, 2023
Sunday, June 4, 2023
CDN Index
架設網站時當文章數量與圖片越來越龐大時,一定會發覺網站的加載速度越來越緩慢
為了要提升網站的加載速度很多架站的管理人員都會選用 CDN 服務來家快我們網站的讀取速度
針對靜態網路資源
提高網站可用性
解決問題:
1. 物理距離遠
2. 多次網路轉發
3. 延遲高不穩定
4. 所在運營商不同,需運營商之間轉發繞行
5. 網路頻寬處理能力有限,海量請求時,降低回應速度與可用性
步驟:
1. DNS query
2. DNS System
3. CDN DNS
4. CName
5. CDN Pop (ICDN 服務器)
透過 nslookup 查詢
有 2 台機器:
本地:home.edge.net
美國:us.edge.net
比較
本地:nslookup home.edge.net
canonical name = part-0024
美國:nslookup home.edge.net
canonical name = part-00424 (比較遠)
客户是怎么接入 CDN 的
假设客户的域名为:www.test.com
1. CNAME方式
腾讯云向客户提供的CDN是 $domain.cdn.dnsv1.com ,客户的域名 www.test.com 如果需要将请求切到腾讯云CDN上,只需要将 www.test.com 的CNAME 设置为 www.test.com.cdn.dnsv1.com 即可
CNAME方式的背后,又分为以下几种模式
1. CDN厂家提供基于DNS的调度,最终客户的域名经CDN的调度域名解析出CDN节点的IP。腾讯云CDN即采用这种模式。
2. CDN厂家提供基于302的调度,给的CNAME不是真正CDN节点,而是一个调度集群,真正的CDN IP地址是通过在调度集群上向请求响应302跳转实现的。腾讯云为一些手机厂家的下载业务提供过这种模式
3. 再有一种,是Anycast CDN。从DNS层面上看,CDN厂家提供给你的CNAME的解析结果只有全球固定的一两个IP地址,不像方式1中不同地区的解析结果IP不同。这种场景下的流量调度,不是靠DNS解析,而是Anycast BGP路由的调整,通过调整Anycast的路由来调度各地区的流量到哪个机房。
2. 调度域名深度定制方式
这种模式主要是一些代理商客户,即使用腾讯云CDN来接客户,又想在DNS层面隐藏他们使用的CDN厂商。一般做法是客户提供一个自己的域名比如: gslb.mycdn.com,腾讯云也提供一个中性的且不备案的平台调度域名 glsb.mycdn-platform.com。真正的客户域名 www.test.com CNAME到 gslb.mycdn.com ,后者CNAME到腾讯云的调度域名 gslb.mycdn-platform.com。这样整个解析环节都没有腾讯云的痕迹。
3. 域名托管方式
这种模式不太常见。以域名 www.test.com 为例,如果客户要将请求切往CDN,需要将 test.com 的NS记录改为 CDN厂商提供的NS 权威服务器。这时CDN厂商同时担当了DNS服务商和CDN服务商的角色。
DNS调度原理
浏览器首次请求目标URL,本地无p73.ping.dnsv1.com 解析记录,向DNS服务器(也称为 local DNS)202.96.134.133发起查询请求。
202.96.134.133(此IP背后的真实服务器)若本地无缓存,发起遞迴解析,最终解析到388957.p23.tc.cdntip.com,解析请求被发往cdntip.com的权威服务器 ns-open3.qq.com
ns-open3.qq.com并非一台实体服务器,而是网络的虚拟IP,先避开复杂的网络结构,其背后有一台或多台真实DNS权威服务器(或集群),为描述方便假设其IP为10.1.1.1
10.1.1.1 目前有的信息包括域名 388957.p23.tc.cdntip.com、local DNS ip 202.96.136.240。如果local DNS支持EDNS,那此时还能看到客户端IP 113.87.117.154
Reference: https://www.huidu.io/news/1270/
CDN网络架构主要由两大部分,分为中心和边缘两部分
1. 中心指CDN网管中心和DNS重定向解析中心,负责全局负载均衡,设备系统安装在管理中心机房
2. 边缘主要指异地节点,CDN分发的载体,主要由Cache和负载均衡器等组成。
当用户访问加入CDN服务的网站时,域名解析请求将最终交给全局负载均衡DNS进行处理。全局负载均衡DNS通过一组预先定义好的策略,将当时最接近用户的节点地址提供给用户,使用户能够得到快速的服务
还与分布在世界各地的所有CDN节点保持通信,搜集各节点的通信状态,确保不将用户的请求分配到不可用的CDN节点上,实际上是通过DNS做全局负载均衡
每个CDN节点由两部分组成:负载均衡设备和高速缓存服务器
负载均衡设备负责每个节点中各个Cache的负载均衡,保证节点的工作效率
负载均衡设备还负责收集节点与周围环境的信息,保持与全局负载DNS的通信,实现整个系统的负载均衡
高速缓存服务器(Cache)负责存储客户网站的大量信息,就像一个靠近用户的网站服务器一样响应本地用户的访问请求
Reference:
https://www.zhihu.com/question/21771529
Friday, June 2, 2023
DRM index
DRM的基本构成:EME、CDM、AES、CENC以及密钥和密钥服务器
AES
CDM
目的:
阻止特定国家的人群查看内容
允许用户在特定时间访问内容
防止用户将电影投屏到屏幕上
阻止免费用户访问付费内容
阻止在某些特定设备上的播放
在减少盗版以及确保内容创造者获取收益方面,DRM发挥了非常重要的作用
DRM是一个系统或解决方案,不同于加密
使用加密方法保护内容
用专业技术安全地存储和传输加密和解密密钥(比如7年级同学例子中的密码本),
并以一种不会使内容落入坏人之手的方法通过密钥解密内容
允许内容生产商设置商业规则,并限制观看人群(到期时间等)
Reference:
构建DRM系统的重要基石——EME、CDM、AES、CENC和密钥
Thursday, June 1, 2023
Database index
30天之從 0 至 1 盡可能的建立一個好的系統 (性能基礎篇)
系統設計基礎 — 資料庫分片與複寫 (Database Sharding & Replication)
架設 HA 高可用性:MySQL Cluster 叢集 – 7.4.11(5.6.29)
巨型服務
高性能架構之道:分佈式、並發編程、數據庫調優、緩存設計、IO模型、前端優化、高可用
Wednesday, May 24, 2023
Friday, February 3, 2023
n8n index
【n8n免費本地端部署】Windows版|程式安裝x指令大補帖 【一鍵安裝 n8n】圖文教學,獲得無限額度自動化工具&限時免費升級企業版功能
-
模板直到实例化时才生成代码,所以获得模板代码编译错误的时机较晚。编译器在3个阶段报告错误: 1. 第一阶段是编译模板本身时,此时一般错误很少,只是 检查语法错误 ,不检查依赖于类型的代码 第二个阶段是遇到使用模板时,对函数模板调用编译器会 检查实参数目是否正确 。还要检查 参数类...
-
编译器遇到一个模板定义时,并不生成代码。只有当实例化模板时编译器才生成代码。 当调用一个函数时, 编译器只需要掌握函数的声明,函数定义不必已经出现 ,即使不定义,编译也会通过, 最终会在链接时才发现undefined symbol这个熟悉的错误 。 但对于模板来说却不同,生成一...
-
iostream 标准库,它提供了 cin 和 cout 方法分别用于 从标准输入读取流和向标准输出写入流 。 如何从 文件读取流和向文件写入流 。这就需要用到 C++ 中另一个标准库 fstream,它定义了三个新的数据类型: 数据类型 描述 ofstream 该数据类型表...