一、网络接入与相关技术
-
调度与负载均衡
- 负载均衡可分为四层负载均衡(在传输层基于 IP 和端口分发,如用于数据库集群)和七层负载均衡(如 Nginx),其目的是合理分配网络流量,避免单点服务器过载,提高系统的可用性和性能。
-
协议分析
-
应用层协议
- DNS:采用迭代查询方式,从根开始询问,用于将域名解析为 IP 地址。权威 DNS 通常使用 bind 服务器。其解析过程涉及多个步骤,从根域名服务器开始逐步查找,最终得到目标域名对应的 IP 地址。
- HTTP2 和 HTTP3:HTTP 协议的后续版本,在性能等方面有所优化,HTTP 依然基于 TCP 协议,而在安全方面,HTTPS 结合了 SSL/TLS 实现加密传输,其中非对称加密(如 RSA)用于建立安全连接,私钥存于服务器,证书链用于验证服务器身份,确保数据传输的安全性。
-
其他协议:如 UDP,其特点是无连接、高效,但用好较难,适用于对实时性要求较高但对数据准确性要求相对较低的场景,如视频流、音频流传输等。还有免费 ARP 用于查找下一跳的 MAC 地址,在网络通信中确定数据传输的下一个节点的链路层地址。
-
二、网络连接与传输相关
- 多图并发下载:在网络应用中,为了提高资源获取效率,可实现多图并发下载,充分利用网络带宽。
- 同运营商访问与智能解析:通过智能解析技术,根据用户所在运营商,将域名解析到对应的同运营商的服务器 IP 地址,减少跨运营商访问的延迟,提高网络访问速度。
- 静态资源路径优化与缓存:将静态资源缓存在边缘机房里,利用 CDN(内容分发网络)技术,当用户请求静态资源时,可从距离用户较近的边缘节点获取,减少数据传输的延迟,提高资源访问速度,同时起到容灾作用,当某个节点出现故障时,可从其他边缘节点获取资源。
三、Go 相关技术
-
GoSDK 与垃圾回收(GC)
-
线程类型
- Mutator(业务线程) :由用户启动,负责执行业务逻辑。
- Collector(GC 线程) :主要任务是找到存活对象并回收死亡对象,其垃圾回收过程包括标记根对象,然后标记可达对象,最后清理不可达对象。
-
垃圾回收算法
- Copying GC:把存活的对象复制到另一个区域,适用于年轻代的垃圾回收,其优点是高效,可有效利用内存空间,减少内存碎片。
- Mark - sweep GC:先标记空的对象,然后进行清理,是一种较为基础的垃圾回收方式。
- Mark - compact GC:在标记后对存活对象进行压缩,整理内存空间,减少内存碎片,适用于老年代的垃圾回收。
- 分代 GC:将内存分为年轻代(通常采用 Copying GC)和老年代(通常采用 Mark - sweep 或 Mark - compact),根据对象的存活周期特点分别采用不同的回收策略,提高垃圾回收效率。
- 引用计数:将 GC 平摊到程序执行过程中,但存在开销大、无法回收环形引用对象、内存开销大等缺点,在实际应用中较少单独使用。
-
-
Go 内存分配:在 Go 语言中,高频操作中小对象占比高,采用 Balanced GC 策略来平衡内存分配和回收的效率,以提高程序的整体性能。