这是我参与「第三届青训营 -后端场」笔记创作活动的的第5篇笔记
go高性能
优化:内存管理优化、编译器优化
用户体验、资源高效利用
业务代码,SDK,基础库,语言远行时,OS
业务层优化:特定场景;数据驱动
Go SDK:接口、实现,尽可能保证接口稳定情况下改变实现。测试用例驱动开发;隔离性:通过选项选择是否开启优化。
自动内存管理:
管理动态内存,三个任务:为对象分配新空间,找到存活对象,回收死亡对象的空间
评价GC:吞吐率,安全性、暂停时间、内存开销。
标记根对象:静态变量、全局变量等
找对可达对象
清理不可达对象:如何清理;1将存货对象
根据对象生命周期选择不同的清理方法。
分代GC:分年龄
引用技术:无法回收环形引用计数,内存开销。
内存:
每秒会分配GB内存,很多时候都是分配小对象
GAB:将多次小对象合并成大对象分配
计算机网络
同网段用交换机连接服务器,不一定只有一个交换机才是同网段,可以在虚拟网络实现同网段SDN
跨网段:路由,路由是不是一定对称的吗,不一定。
路由工作在网络层,
路由是不是改IP地址,改MAC地址,找到发包口。IP地址是不变的。发包是以网卡为单位的。
同一网段才ARP广播,应答是单播的。
Mac地址为什么代替IP地址:兼容问题,将不同链路层地址统一在一起。
IPv4不够用怎么办:NAT,IP+端口一起改变。
尽量避免分片,因为分片重组会消耗资源。
拔了网线,TCP连接会断吗:看有没有TCP探活
TCP:MSS,在TCP三次握手时确认。TCP option,
为什么老问Timewait:
为社么要用HTTP,而不是直接用TCP。分层,TCP本身东西也多,HTTP只是多了一层规则,更加清晰简单。
网络提质:提速、稳定
HTTP2.0:多路复用,一个TCP里面多个请求,stream,丢包会导致TCP对头阻塞。
QUIC/HTTP3.0,
为什么选UDP,是在内核态还是用户态,弱网传输的优势,因为弱网下TCP会丢包。
CDN,静态资源路径优化。
动态API路径优化(DSA)
容灾:故障发生,故障感知、自动切换、服务恢复
专线:内网连接;外网:通过Internet连接。
调度容灾:A机房1.1.1.1不可用,用B机房2.2.2.2。
CDN缓存。
故障明确,先止损再排查。
分段排查,客服端排查,服务端排查,中间链路排查。