// $GOROOT/src/sync/atomic/doc.gofuncSwapInt64(addr*int64,newint64)(oldint64)// $GOROOT/src/sync/atomic/asm.sTEXT·SwapInt64(SB),NOSPLIT,$0JMPruntime∕internal∕atomic·Xchg64(SB)// $GOROOT/src/runtime/internal/atomic/atomic_amd64.sTEXTruntime∕internal∕atomic·Xchg64(SB),NOSPLIT,$0-...
使用cancel 将稿件数据库 binlog 抽取到消息队列Kafka 中,稿件job服务消费 kafka 数据组建一个稿件查阅结果数据库,并对外提供一个独立查询服务,来拆分复杂架构和业务。 图片来源于极客时间go进阶训练营
存放固定容量令牌的桶,按照固定速率往桶里添加令牌 https://pkg.go.dev/golang.org/x/time/rate 漏桶算法 作为计量工具(The Leaky Bucket Algorithm as a Meter)时,可以用于流量整形(Traffic Shaping)和流量控制(TrafficPolicing) https://pkg.go.dev/go.uber.org/ratelimit 令牌桶和漏桶有什么区别和本质原理...
go 进阶训练营 微服务可用性(上) 笔记 隔离 本质上是对系统和资源进行分割,从而实现当系统故障时能限定传播范围和影响范围,即发生故障后只有出问题的服务不可用,保证其他服务仍然可用。 服务隔离 动静隔离 mysql 表中的bufferpool 频繁过期,隔离动静表。如 稿件的基本信息,作者、封面等和稿件的播放、点赞 频繁变化...
今日打卡:图解TCP/IP两章,go学习笔记两章。本来想看go进阶训练营,然后发现基础还是得补不少就先没看了,学习笔记这本早日看完然后配合ics这本再速览一遍基础就差不多了。昨天没睡好,一天都不太清醒所以没刷算法题。今天早点睡再设个闹钟调整作息~_牛客网_牛客在手,offe
如果在单个核上被调度,go程序也能并发运行,运行在 Go 中的逻辑处理器上。 并发程序设计 如果一个事情交给别人,而自身还需要依赖该结果,那么这个工作自己来做是最合适的。 极客时间go进阶训练营 第一个api:将目录读取到一个 slice 中,通过切片传递结果,如果出现错误,则返回错误。
Go在最初设计时就有意识地选择了使用显式错误结果和显式错误检查,这就导致在代码中会出现大量的错误检查语句,那么在平时开发时优化这些反复出现的重复代码也有一些比较好的实践,今天我们就来看下。 改善代码的视觉呈现,将代码写成一条直线 对于异常处理,其实我们抱怨的不是代码过多,而是这些代码会影响阅读代码的体验...
在go语言中,错误就是一个值,go语言没有提供结构化try-catch-finally错误处理机制,所以我们学习go的异常处理,其实就是在学习go的error接口以及其实现类的处理方法。 error初始化 varerrerrorerr:=errors.New("your first demo error")errWithCtx:=fmt.Errorf("index %d is out of bounds",i)wrapErr:=fmt.Erro...
极客时间go进阶训练营 从图中可以看到客户端和服务端注册发现的对比 本质上服务端服务发现要比客户端多了一层负载均衡器,这个负载均衡器会查询服务注册表,并将请求路由到可用的服务实例上。 这样的好处是将通用逻辑剥离,服务端不用关注服务的注册和路由逻辑,但是相应的会多一个流量的中心节点,而微服务的核心是去中心...
今天我们来看下服务的可用性设计,服务可用性设计包括隔离、超时、限流、重试、负载均衡。 隔离 隔离,对系统或资源进行分割,这样在系统发生故障时能限制传播范围和影响范围,保证其他服务仍然可用。 动静隔离 比如CDN 场景中,将静态资源和动态 API 分离。 好处是 ...