上一页 1 ··· 73 74 75 76 77 78 79 80 81 ··· 234 下一页

2020年4月7日

hystrix-go简介

摘要: hystrix是一个容错库,旨在隔离指向远程系统,服务和第三方库的请求,杜绝级联故障,并在复杂的分布式系统中实现弹性,毕竟在分布式系统中,故障是不可避免的。 此项目脱胎于由Netflix开源的同名java项目。https://github.com/Netflix/Hystrix 像Hystrix命令 阅读全文

posted @ 2020-04-07 15:03 ExplorerMan 阅读(337) 评论(0) 推荐(0)

2020年4月2日

python分布式环境下的限流器

摘要: 项目中用到了限流,受限于一些实现方式上的东西,手撕了一个简单的服务端限流器。 服务端限流和客户端限流的区别,简单来说就是: 1)服务端限流 对接口请求进行限流,限制的是单位时间内请求的数量,目的是通过有损来换取高可用。 例如我们的场景是,有一个服务接收请求,处理之后,将数据bulk到Elastics 阅读全文

posted @ 2020-04-02 20:04 ExplorerMan 阅读(375) 评论(0) 推荐(0)

python redis lua 脚本 实战一个限流或抢红包等业务

摘要: 知识点 1.lua是什么 2.redis,lua,python(java)三者的关系 3.用lua承载业务逻辑 为何加入一个lua脚本 减少网络开销。可以将多个请求通过脚本的形式一次发送,减少网络时延 原子操作。redis会将整个脚本作为一个整体执行,中间不会被其他命令插入。因此在编写脚本的过程中无 阅读全文

posted @ 2020-04-02 20:00 ExplorerMan 阅读(845) 评论(0) 推荐(0)

利用redis-lua+python实现接口限流

摘要: 公司目前在市面上有大量的机器在运转。每天对接到服务器就有数百万的请求过来,无形中消耗了带宽和计算资源。可以通过一定的策略来过滤掉部分请求,保证服务器的稳定。 扩展阅读: 1.当然这层逻辑既可以落到接入层,也可以落到业务层。这里为了不影响线上其它业务,保证系统的稳定和代码可追溯。也方便实行最小验证,我 阅读全文

posted @ 2020-04-02 19:58 ExplorerMan 阅读(649) 评论(0) 推荐(0)

python分布式环境下的限流器

摘要: 项目中用到了限流,受限于一些实现方式上的东西,手撕了一个简单的服务端限流器。 服务端限流和客户端限流的区别,简单来说就是: 1)服务端限流 对接口请求进行限流,限制的是单位时间内请求的数量,目的是通过有损来换取高可用。 例如我们的场景是,有一个服务接收请求,处理之后,将数据bulk到Elastics 阅读全文

posted @ 2020-04-02 19:57 ExplorerMan 阅读(325) 评论(0) 推荐(0)

golang 函数作为参数传递(回调)

摘要: 和其他很多语言一样,golang中函数也可以作为其它函数的参数进行传递,然后在其它函数内调用执行,一般称之为回调。 语法:以函数签名作为主调函数的形参的类型,即传递一个指向函数的指针 func main() { sayhello("john", addperfix)} func addperfix( 阅读全文

posted @ 2020-04-02 18:31 ExplorerMan 阅读(2214) 评论(0) 推荐(0)

go 单向通道

摘要: func GetCha(cha <-chan int) { //这里参数用了一个单向通道 只允许接收 for{ if v,ok := <-cha; ok{ fmt.Println(v) } } //cha <- 2 这里会发生编译错误 } func main() { cha := make(chan 阅读全文

posted @ 2020-04-02 18:30 ExplorerMan 阅读(269) 评论(0) 推荐(0)

go channel select如何屏蔽已关闭通道

摘要: go channel select如何屏蔽已关闭通道(如果不屏蔽的话,select 一直会处于选择状态) func main() { channel := make(chan int ,20) selectChannel(channel) getChannel(channel) time.Sleep 阅读全文

posted @ 2020-04-02 18:29 ExplorerMan 阅读(661) 评论(0) 推荐(0)

go err

摘要: golang自定义err方案很多 // Errno 代表某种错误的类型 type Errno int func (e Errno) Error() string { return "errno " + strconv.Itoa(int(e)) } func main(){ // 示例3。 const 阅读全文

posted @ 2020-04-02 18:27 ExplorerMan 阅读(231) 评论(0) 推荐(0)

golang 做了个mutex与atomic性能测试

摘要: func BenchmarkMutex(b *testing.B) { var number int lock := sync.Mutex{} for i:=0; i< b.N;i++{ go func() { defer lock.Unlock() lock.Lock() number++ }() 阅读全文

posted @ 2020-04-02 18:24 ExplorerMan 阅读(623) 评论(0) 推荐(0)

上一页 1 ··· 73 74 75 76 77 78 79 80 81 ··· 234 下一页

导航