ALOVN

志当存高远

gRPC 通过 ETCD 实现服务注册发现

gRPC etcd discovery

gRPC (google.golang.org/grpc/naming)中提供了两个接口: 1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 // 命名解析 // Resolver creates a Watcher for a target to track its resolution changes. // // Deprec...

MySQL中整数类型后面的数字的含义

MySQL Integer Types

先看下MySQL官方文档中对几种int类型的说明 integer-types 11.2.1 Integer Types (Exact Value) - INTEGER, INT, SMALLINT, TINYINT, MEDIUMINT, BIGINT MySQL supports the SQL standard integer types INTEGER (or INT) and...

高并发限流之令牌桶算法

Token Bucket RateLimiter

业务中有时需要做一些优惠活动, 经常会带来较大流量,面对突然到来的爆发流量,除了缓存、消息队列、系统扩容、降级之外,也要考虑做限流来保障系统的稳定运行,避免整个系统崩溃。被限流的消息将直接被丢弃,并回复”系统繁忙,请稍后再试”。生活中也能看到相似的场景:家里的电闸一般会安装上保险丝,一旦有大功率用电,超出负载保险丝就会烧断,保护电器不被烧坏。同理我们也需要为我们的系统安装上『保险丝』。 常...

GopherChina 2019

GopherChina 2019 Video & PPT

GopherChina 2019 Day 1 1.1 大型微服务框架设计实践 【Bilibili】 【Youtube】 【PPT】 如何用Go打造高性能路径规划和ETA引擎 【Youtube】 【PPT】 TiDB 的 Golang 实践 【Youtube】 【PPT】 How to write testable...

Golang 简单实现并发限流

Golang Simple Ratelimit

关于并发限流的实现有方法比较的多, 较多的是使用令牌桶算法。在Golang中可以利用 channel 的缓冲设定来实现并发限流的功能。只需要在收到请求后往 channel 里写入个数据(随便写点什么,内容不是很重要),然后在执行完成后把这个 channel 里的东西给取走,一个channel可以理解为一个先进先出的消息队列, 整个并发的数量可以根据channel队列的大小来判断。 以下主要...

gRPC middleware

gRPC middleware

RPC 本身只能设置一个拦截器, 采用开源项目 go-grpc-middleware 就可以解决这个问题 go-grpc-middleware 对interceptor进行了封装,支持多个拦截器的链式组装,对于需要多种处理的地方使用起来会更方便些。 官方使用示例: 1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 import "gi...

gRPC 拦截器 Interceptor

gRPC Interceptor

grpc服务需要提供认证的功能,如果认证信息是由每个服务中的方法处理并认证的,每个接口实现都要先处理认证信息,这种姿势就太蛋疼了。这个时候interceptor就站出来解决了这个问题,可以在请求被转到具体接口之前处理认证信息,一处认证,到处无忧。 grpc服务端提供了interceptor功能,可以在服务端接收到请求时优先对请求中的数据做一些处理后再转交给指定的服务处理并响应,功能类似mi...

gRPC TLS证书认证

gRPC TLS secure

gRPC建立在HTTP/2协议之上,对TLS提供了很好的支持。我们前面章节中gRPC的服务都没有提供证书支持,因此客户端在链接服务器中通过grpc.WithInsecure()选项跳过了对服务器证书的验证。没有启用证书的gRPC服务在和客户端进行的是明文通讯,信息面临被任何第三方监听的风险。为了保障gRPC通信不被第三方监听篡改或伪造,我们可以对服务器启动TLS加密特性。 可以用以下命令为...

生成 Outline AccessKey

generate outline app accesskey

OUTLINE作为跨平台的安全上网客户端, 安全稳定。它是Alphabet 旗下一家技术孵化器 Jigsaw 推出的代理软件,基于开源的shado.wsocks实现。OUTLINE 添加服务端的时候要填写的是 ss://access-key, 那么这个access-key应该怎么生成呢? 经查阅:SS 官方 定义了一个标准,配置还能通过 QRCODE 分享: 1 ss://base64(...

Protobuf 与 gRPC

Protobuf gRPC

ProtoBuf 与 gRPC ProtoBuf 是一套接口描述语言(Interface Definition Language,IDL),类似 Apache 的 Thrift。 相关处理工具主要是 protoc,基于 C++ 语言实现。 用户写好 .proto 描述文件,之后便可以使用 protoc 自动编译生成众多计算机语言(C++、Java、Python、C#、Golang 等)...