微服务

最近这段时间再看《微服务:从设计到部署》这本书,总结了一下微服务相关的理论。

主要的微服务相关的模块分为: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。

posted @ 2018-07-05 15:25  追逐~~~  阅读(163)  评论(0)    收藏  举报