微服务
最近这段时间再看《微服务:从设计到部署》这本书,总结了一下微服务相关的理论。
主要的微服务相关的模块分为:API网关、服务注册、服务发现、事件驱动数据管理等。具体还包括:服务熔断、限流器等功能。
1 package main 2 3 import ( 4 "fmt" 5 "time" 6 7 "golang.org/x/time/rate" 8 ) 9 10 func main() { 11 12 // 每5秒产生一个新token,最多能缓存4个token 13 limiter := rate.NewLimiter(rate.Every(time.Duration(5)*time.Second), 4) //每次执行此函数都重新将token写入缓存中,5秒生成一个token并放入缓存中 14 for { 15 // // reserve()也会获取出一个token 16 // r := limiter.Reserve() 17 18 // limiter.Allow() 判断缓存中是否有token,有则返回true 19 fmt.Println("----allow1=", limiter.Allow()) 20 21 time.Sleep(1 * time.Second) 22 23 } 24 }
以上代码主要是作为限流器的功能。
rate.NewLimiter(rate.Every(time.Duration(5)*time.Second), 4)创建一个限流器,限流器的缓存大小为4,初始化时创建了4个token写入到缓存中。每隔5秒创建一个新的token写入缓存。
limiter.Allow()会读取一个token,缓存中有token则返回true,没有则返回false。