为你推荐

微服务最强开源流量网关Kong

前言在微服务架构中,由于系统和服务的细分,导致系统结构变得非常复杂,为了跨平台,为了统一集中管理api,同时为了不暴露后置服务。甚至有时候需要对请求进行一些安全、负载均衡、限流、熔断、灰度等中间操作,基于此类种种的客观需求一个类似综合前置的系统就产生了,这就是API网关(APIGateway)。API网关作为分散在各个...

goku-api-gateway

高可用的微服务解决方案通过EOLINKERAPI网关,帮助企业进行API服务治理与API性能维护,降低IT运维的成本,提高系统灵活性,安全可靠地将企业内部系统通过微服务架构互相连接,为企业数字化赋能。          ...
代码星球·2020-10-02

supervisor原理及如何使用

Linux进程管理工具supervisor安装及使用superviosr是一个Linux/Unix系统上的进程监控工具,他/她upervisor是一个Python开发的通用的进程管理程序,可以管理和监控Linux上面的进程,能将一个普通的命令行进程变为后台daemon,并监控进程状态,异常退出时能自动重启。不过同dae...

Go语言开发的微服务框架

 Go语言开发的微服务框架有什么?  1、项目名称:Istio  项目简介:Istio是由Google、IBM和Lyft开源的微服务管理、保护和监控框架。使用istio可以很简单的创建具有负载均衡、服务间认证、监控等功能的服务网络,而不需要对服务的代码进行任何修改。  2、项目名称:Go-kit  项目简介:Go-ki...

go-kit 微服务 服务熔断(hystrix-go 实现)

对客户端请求login方法添加熔断在微服务架构中,每个服务都是相互关联的,比如我们下单服务和扣钱服务是分开的,现在扣钱服务出现的bug不能正常服务Hystrix可以让我们在在微服务架构中对服务间的调用进行控制,加入一些调用延迟或者服务降级的容错机制。对依赖服务调用时出现的调用延迟和调用失败进行控制和容错保护在复杂的分布...

雪崩利器 hystrix-go 源码分析

阅读源码的过程,就像是在像武侠小说里阅读武功秘籍一样,分析高手的一招一式,提炼出精髓,来增强自己的内力。之前的帖子说了一下微服务的雪崩效应和常见的解决方案,太水,没有上代码怎么叫解决方案。github上有很多开源的库来解决雪崩问题,比较出名的是Netflix的开源库hystrix。集流量控制、熔断、容错等于一身的jav...

hystrix-go简介

hystrix是一个容错库,旨在隔离指向远程系统,服务和第三方库的请求,杜绝级联故障,并在复杂的分布式系统中实现弹性,毕竟在分布式系统中,故障是不可避免的。此项目脱胎于由Netflix开源的同名java项目。https://github.com/Netflix/Hystrix像Hystrix命令一样执行代码定义依赖于外...
代码星球·2020-10-02

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

1.lua是什么2.redis,lua,python(java)三者的关系3.用lua承载业务逻辑减少网络开销。可以将多个请求通过脚本的形式一次发送,减少网络时延原子操作。redis会将整个脚本作为一个整体执行,中间不会被其他命令插入。因此在编写脚本的过程中无需担心会出现竞态条件,无需使用事务。复用。客户端发送的脚步会...

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

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

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

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

go 单向通道

funcGetCha(cha<-chanint){//这里参数用了一个单向通道只允许接收for{ifv,ok:=<-cha;ok{fmt.Println(v)}}//cha<-2这里会发生编译错误}funcmain(){cha:=make(chanint,3)lock:=make(chanstruct...
代码星球·2020-10-02

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

gochannelselect如何屏蔽已关闭通道(如果不屏蔽的话,select一直会处于选择状态)funcmain(){channel:=make(chanint,20)selectChannel(channel)getChannel(channel)time.Sleep(time.Hour)}funcselectCh...

go err

golang自定义err方案很多//Errno代表某种错误的类型typeErrnointfunc(eErrno)Error()string{return"errno"+strconv.Itoa(int(e))}funcmain(){//示例3。const(ERR0=Errno(0)ERR1=Errno(1)ERR2=E...
代码星球·2020-10-02

golang 做了个mutex与atomic性能测试

funcBenchmarkMutex(b*testing.B){varnumberintlock:=sync.Mutex{}fori:=0;i<b.N;i++{gofunc(){deferlock.Unlock()lock.Lock()number++}()}}funcBenchmarkAtomic(b*test...

Go语言中的条件变量

Go语言syncpackage提供了条件变量(conditionvariable)类型:typeCondstruct{//LisheldwhileobservingorchangingtheconditionLLocker//containsfilteredorunexportedfields}typeCondfunc...