共计 909 个字符,预计需要花费 3 分钟才能阅读完成。
微服务框架
常见的 APIGetWay 框架: kong zuul envory nginx
服务发现, 服务注册组件: eureka etcd zookeeper consul
基于客户端发现模式 (服务发现负载都在客户端)
基于服务器服务发现模式(搭建一个服务发现注册的中继服务)
Service Mesh 的发现模式(服务发现, 注册 — 与客户端的在一个过程中)
go web 框架: gin iris beego
error 与异样的应用: pkg/erros 包
go 的并发模型:
go 的内存模型 —- happens before chan sync
Mutex (线程阻塞 唤醒) 模式: handoff spin
RWMutex
Context
waitGroup
chan
atomic
把握 errGroup 并发解决包
微服务的可用性:
隔离 —> 隔离,以避免相互影响的状况
超时管制 —-> 基于 Context 超时
过载 —> RateLimiter 依据 CPU 负载状况
限流 —-> redis QPS 形式
降级 —-> 提供有损的服务
重试 —> 申请失败进行重试机制
负载平衡 —> 基于主机 CPU 内存状况进行负载
分布式事物的解决: 本地事务 + 音讯队列
go 的底层原理:
goroutine 的调度模型 GMP 调度算法
内存调配 — 基于 groutine 模式 —>mcache mcentral mheap, 内存的调配构造 spans bitmap arena, 内存治理的根本单元: mspan
内存回收 — 标记革除法
三色标记法:插入屏障 删除屏障 混合屏障模式
gRpc
RPC:近程调用 传输协定 + 序列化协定 (Protobuf) Google==> gRpc 框架
通过 RPC 框架,使得咱们能够像调用本地办法一样地调用近程机器上的办法:
1、本地调用某个函数办法
2、本地机器的 RPC 框架把这个调用信息封装起来(调用的函数、入参等),序列化(json、xml 等) 后,通过网络传输发送给近程服务器
3、近程服务器收到调用申请后,近程机器的 RPC 框架反序列化取得调用信息,并依据调用信息定位到理论要执行的办法,执行完这个办法后,序列化执行后果,通过网络传输把执行后果发送回本地机器
4、本地机器的 RPC 框架反序列化出执行后果,函数 return 这个后果