服务熔断 之GO实现 hystrix-go 和 kratos
概念原理 GO
hystrix-go熔断器中比较典型的实现就是 hystrix,Golang 也有对应的版本,我们先来看一下 hystrix-go 是怎么实现的案例先看一个使用案例,首先我们使用 gin 启动一个服务端,这个服务端主要是前 200ms 的请求都会返回 500,之后的请求都会返回 200func server() {
e := gin.Default()
e.GET("/ping", func(ctx *gin.Context) {
if time.Since(start) &l... ...
阅读全文
服务熔断 之背景 服务雪崩
概念原理
分布式系统环境下,服务间类似依赖非常常见,一个业务调用通常依赖多个基础服务。如下图,如果各个服务正常运行,那大家齐乐融融,高高兴兴的,但是如果其中一个服务坏掉会出现什么样的情况呢?如下图,当Service A的流量波动很大,流量经常会突然性增加!那么在这种情况下,就算 Service A 能扛得住请求,Service B和Service C未必能扛得住这突发的请求。此时,如果Service C因为抗不住请求,变得不可用。那么Service B的请求也会阻塞,慢慢耗尽Service B的线程资源,Service B就会变得不可用。紧接着,Service A也会不可用。So,简单地讲。一个服务失败... ...
阅读全文
服务熔断 之概念 服务熔断 与 服务降级 详解
概念原理
服务熔断什么是服务熔断:当下游的服务因为某种原因突然变得不可用或响应过慢,上游服务为了保证自己整体服务的可用性,不再继续调用目标服务,直接返回,快速释放资源。如果目标服务情况好转则恢复调用服务熔断的原理:业内普遍采用断路器模式原理: 当远程服务被调用时,断路器将监视这个调用,如调用时间太长,断路器将会介入并中断调用。此外,断路器将监视所有对远程资源的调用,如对某一个远程资源的调用失败次数足够多,那么断路器会出现并采取快速失败,阻止将来调用此远程资源的请求.断路器模式的状态图熔断器存在三个状态:关闭(closed): 关闭状态下没有触发断路保护,所有的请求都正常通行打开(o... ...
阅读全文
git 配置 记住用户名和密码
Git
如果每次运行git pull/git push的时候都需要重新输入用户名和密码,不免有些麻烦,下面介绍如何配置记录用户名和密码。1. 允许 git 记录用户名和密码git config --global credential.helper store2.记录密码有两种方式方式一: 通过手动创建文件的方式进入我们的用户目录( %HOME% ),一般为 C:\users\Administrator,新建 .git-credentials 文件 https://{username}:{password}@github.com然后,再运行git pul... ...
阅读全文
git 配置 多git地址 多用户 公钥认证登录配置
Git
配置流程生成 密钥对公钥传到 git 服务器(gitlab,github等)本地配置 ~/.ssh/config 生效生成密钥对以 linux 为例(或者 win 下 git 终端)ssh-keygen -t ed25519 -C "your_email@example.com" -f name1-t :推荐使用 ed25519 算法-C :备注,信息-f :生成的 文件名(包含路径)。 上面 name1 为 当前目录生成更多: MAC/WINDOWS/LINUX 生成 ssh key ... ...
阅读全文
git config 多用户配置 提交时 仓库显示正确的用户信息
Git
在每一次git提交的时候,提交的记录里都会带上用户名及邮箱信息,这个信息不是在github或者gitlab上设置的,而是设置于我们的电脑中。这在所有平台都使用同一套用户信息的时候是可以正常使用的,但有时我们需要在不同平台,甚至不同的项目中使用不同的用户信息(比如在公司gitlab使用真实姓名和公司邮箱,在github上使用网名和个人邮箱),那就需要不同的设置方案了。下面分别介绍全局配置、按项目配置和按文件目录配置三种git配置方法。全局配置这是每次安装git后都会提示我们设置的,设置内容存于 ~/.gitconfig 文件中,格式如下:[user]
&nbs... ...
阅读全文
概念: 回调函数 和 闭包函数
概念原理
回调函数官方解释:当程序跑起来时,应用程序会时常通过API调用库里预先备好的函数。但是有些库函数却要求应用先传给他一个函数,好在合适的时候调用,以完成目标任务。这个被传入、后又被调用的函数被称为回调函数。常见的回调函数:事件回调函数定时器回调函数通俗的讲: 就是第三方的函数,需要一个函数作为参数 ,供它调用!譬如: 阿里云oss 的 Progress闭包函数可以读取函数内部的变量让这些变量的值始终保持在内存中。关于闭包:查看 : 什么是闭包? 何时用闭包... ...
阅读全文
了解常见的开源协议(BSD, GPL, LGPL,MIT)
概念原理
大概就是这样,具体的去 -> 搜去... ...
阅读全文
go get -u 私有仓库 不会更新版本问题
GO
如果是自己的私有仓库,在版本号设置没问题的情况下,请设置,否则 go get -u 不会更新go env -w GOPRIVATE=git.xiewo.net... ...
阅读全文