随笔分类 - Go
摘要:Statistic:代码统计插件 Key Promoter X:点击方式完成时提示此方式的快捷键 GitToolBox:自动fetching项目最新代码,显示编辑页光标行的git日志
阅读全文
posted @ 2020-05-18 21:10
gao88
摘要:介绍 Raft 状态 一个 Raft 集群包含若干个服务器节点;通常是 5 个,这允许整个系统容忍 2 个节点的失效,每个节点处于以下三种状态之一: follower :所有结点都以 follower 的状态开始。如果没收到leader消息则会变成 candidate状态。 candidate:会向
阅读全文
posted @ 2020-03-27 17:55
gao88
摘要:前言: 前时间出了一个小问题,下游的服务时不时的阻塞,我这边为了确保数据一致性,不断的重试请求,这样的后果自然是雪上加霜。当然,下游处理的有待提高,但我们是否有更好的办法来优化重试? backoff 指数退避算法就是干这事的. 该文章后续仍在不断的更新修改中, 请移步到原文地址 http://xia
阅读全文
posted @ 2019-12-30 18:10
gao88
摘要:最近遇到 grpc 客户端报错 rpc error: code = Unavailable desc = transport is closing,原因是连接长时间没有使用,被服务端断开,这种情况通过简单粗暴的重试策略可以解决,更加优雅的解决方案是增加保持连接策略 服务端 客户端 链接 服务端代码:
阅读全文
posted @ 2019-12-09 14:49
gao88
摘要:问题描述 公司内部容器平台,接入层用nginx做LB,用户有grpc协议需求,所以在lb层支持grcp反向代理,nginx从1.13开始支持grpc反向代理,将公司使用的nginx包从1.12升级到1.14.0后,增加grpc反向代理配置。配置完成后,打压力测试时,发现接入层机器端口占满而导致服务异
阅读全文
posted @ 2019-12-09 14:41
gao88
摘要:gRPC有4种接口类型: Unary RPC (一元RPC) Server Streaming RPC ( 服务器流式RPC) Client Streaming RPC ( 客户端流式RPC) Bidirectional Streaming RPC (双向流式RPC) 对于底层的HTTP/2而言,这
阅读全文
posted @ 2019-12-09 14:40
gao88
摘要:Go 在编译前会下载(如需)依赖并检查校验和,如果不一致将拒绝编译。如需关闭检验,设定 GOSUMDB=off 。 来源:https://segmentfault.com/a/1190000020450159
阅读全文
posted @ 2019-12-08 19:23
gao88
摘要:I'm running some high volume gRPC requests through nginx and see a lot of this error: 'there is no connection available' and 'the connection is draini
阅读全文
posted @ 2019-12-08 18:32
gao88
摘要:前言 我想在每个 RPC 方法的前或后做某些事情,怎么做? 本章节将要介绍的拦截器(interceptor),就能帮你在合适的地方实现这些功能 🤫 有几种方法 在 gRPC 中,大类可分为两种 RPC 方法,与拦截器的对应关系是: 普通方法:一元拦截器(grpc.UnaryInterceptor)
阅读全文
posted @ 2019-11-22 10:40
gao88
摘要:golang的性能测试Benchmark go test 自带有三种测试: 功能测试(单元测试) 基准测试 (性能测试) 实例测试 (举例测试) 今天主要是写一下基准测试也就是我们的性能测试实践相关。 基准测试是测量一个程序在固定工作负载下的性能。 在Go语言中,基准测试函数和普通测试函数写法类似,
阅读全文
posted @ 2019-07-13 15:19
gao88
摘要:golang 终于出官方版本管理机制,名为 go modules 初体验 使用前: # 先升级 golang 到 1.11 版本,然后 export GO111MODULE=on 在项目github.com/humboldt-xie/test-mod下,通过go mod init go mod in
阅读全文
posted @ 2019-06-20 22:49
gao88
摘要:reflect包实现了运行时反射,允许程序操作任意类型的对象。典型用法是用静态类型interface{}保存一个值,通过调用TypeOf获取其动态类型信息,该函数返回一个Type类型值。 调用ValueOf函数返回一个Value类型值,该值代表运行时的数据。 func TypeOf(i interf
阅读全文
posted @ 2019-04-15 20:02
gao88
摘要:现有服务是用micro+protobuf+gRPC。现在每个服务都有个proto文件,完整定义了参数、传递消息及响应结果。主要实现步骤有三步1. 用.proto文件转换为swagger.json文件2. 合并所有swagger.json成为一个3. Serve the API Step 1: .pr
阅读全文
posted @ 2019-03-28 13:18
gao88
摘要:请求响应模式 无论是发布订阅模式还是queue模式,nats都不能保证消息一定发送到订阅方,除非订阅者发送一个响应给发布者。 所以订阅者发送一个回执给发布者,就是请求响应模式。 这种模式有什么用? nats要求订阅者一定要先完成订阅,发布消息后,订阅者才能收到消息,类似离线消息的模式nats不支持。
阅读全文
posted @ 2018-11-23 15:12
gao88
摘要:集群模式 nats的集群模式对客户端来说并不是透明的。 所以集群对发布者和订阅者都是有影响的。 发布者和订阅者都知道连接的是一个集群的服务,而不是一个单点服务,换句话说发布者订阅者都必须指明集群中各个节点的地址。 当然,发布者和订阅者可以只针对集群中的某节点发布消息和订阅消息,不过这并不是集群模式的
阅读全文
posted @ 2018-11-23 15:12
gao88
摘要:队列订阅模式 此模式中,订阅者要指定两个属性,主题和队列(queue,其实就是队列名称) 注意:下面所有前提=必须订阅同一个主题 发布消息后,N个具有同样的主题和queue的订阅者,只有一个会收到消息。(random算法) 说明:queue=工作组,工作组中有N个worker,发布消息后,同一个工作
阅读全文
posted @ 2018-11-23 15:05
gao88
摘要:package main import ( "github.com/robfig/cron" "time" "fmt" "os" log "github.com/cihub/seelog" ) var ( ttt int ) const ( logFilePath = "hard/log/test/
阅读全文
posted @ 2018-11-07 10:23
gao88
摘要:一个即将上线的go 写的高频服务,压测的时候发现 gc 特别高,高到10%-15% 左右了,本文记录下优化 gc 的过程和和思路。线上环境1.10. 该文章后续仍在不断的更新修改中, 请移步到原文地址http://dmwan.cc 首先,查看gc 是否有异常,我们可以使用 gctrace 跟踪实时的
阅读全文
posted @ 2018-10-25 15:38
gao88

浙公网安备 33010602011771号