Golang 知识点总结

微服务框架
常见的APIGetWay 框架: kong zuul envory nginx
【Golang 知识点总结】服务发现,服务注册组件: 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这个结果

    推荐阅读