区分Protobuf中缺失值和默认值 2021-04-17 编解码 约 2253 字 预计阅读 5 分钟 背景 Protobuf 是目前非常主流的二进制序列化格式,GRPC 默认使用 Protobuf v3 格式,下面是 Protobuf 消息定义的例子: 1 2 3 4 5 6 7 8 9 10 11 # proto2message Account { required string name = 1; # 必需 optional double 阅读更多
Protobuf的FieldMaskPb 2021-04-17 编解码 约 2666 字 预计阅读 6 分钟 概述 软件包fieldmaskpb包含google / protobuf / field_mask.proto的生成类型。 FieldMask消息表示一组符号字段路径 阅读更多
Proto常见第三方类型介绍 2021-04-17 编解码 约 3814 字 预计阅读 8 分钟 Any Any 包含任意序列化的消息以及描述序列化消息类型的URL。 JSON格式 Any值的JSON表示使用反序列化的嵌入式消息的常规表示,并带有一个@t 阅读更多
proto生成Go代码指南 2021-04-16 编解码 约 4443 字 预计阅读 9 分钟 本页确切描述了protocol buffer编译器为任何给定的协议定义生成的Go代码。突出显示了proto2和proto3生成的代码之间的任何 阅读更多
Proto3语言指南 2021-04-12 编解码 约 19083 字 预计阅读 39 分钟 语言指南 定义消息类型 先来看一个非常简单的例子。假设你想定义一个“搜索请求”的消息格式,每一个请求含有一个查询字符串、你感兴趣的查询结果所在的 阅读更多
opentelemetry使用介绍 2021-04-01 链路追踪 约 6916 字 预计阅读 14 分钟 otel func GetTextMapPropagator 1 func GetTextMapPropagator() propagation.TextMapPropagator GetTextMapPropagator返回全局TextMapPropagator。如果未设置任何内容,则返回No-Op Tex 阅读更多
常见负载均衡算法的比较 2021-03-25 服务治理 约 3692 字 预计阅读 8 分钟 前言 如果我们在使用网络系统,那么可能会非常关心延迟问题。在面对一组服务器时,我们需要思考选择哪种负载均衡算法。如果可以直观了解不同负载均衡器 阅读更多
pkg-errors使用介绍 2021-03-22 Go三方库 约 3050 字 预计阅读 7 分钟 概述 Package errors 提供了简单的错误处理原语。 Go中的传统错误处理习惯用法大致类似于 1 2 3 if err != nil { return err } 当将其递归应用于调用堆栈时,将导致错误报告,而 阅读更多
SRE自适应熔断算法实现 2021-03-21 服务治理 约 5017 字 预计阅读 11 分钟 前言 断路器(Circuit Breakers): 为了限制操作的持续时间,我们可以使用超时,超时可以防止挂起操作并保证系统可以响应。因为我们处于高度动态的环境中, 阅读更多
如何编写Docker镜像 2021-03-13 Kubernetes 约 6191 字 预计阅读 13 分钟 优化基础镜像 优化基础镜像的方法就是选用合适的更小的基础镜像,常用的 Linux 系统镜像一般有 Ubuntu、CentOs、Alpine,其中Alpine 阅读更多
如何构建Go的镜像 2021-03-12 Kubernetes 约 10022 字 预计阅读 21 分钟 示例应用 首先贴出代码例子,我们假设要构建一个 http 服务 1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 package main import ( "fmt" "net/http" "time" "github.com/gin-gonic/gin" ) func main() { fmt.Println("Server Ready") router := 阅读更多
Dockerfile参考 2021-03-03 Kubernetes 约 22545 字 预计阅读 45 分钟 Dockerfile参考(Dockerfile reference) Docker可以通过读取Dockerfile中的指令自动构建镜像。 Dock 阅读更多
GRPC在k8s集群中的负载均衡 2021-02-22 Kubernetes 约 3046 字 预计阅读 7 分钟 背景 很多刚刚接触 gRPC 的用户,通常会惊讶于 Kubernetes 默认提供的负载均衡对于 gRPC 来说无法实现开箱即用的效果。比如,将一个简单的基于 Node.js 实现的 gRPC 微服务部署在 Kubernetes 后 阅读更多
Nginx Ingress如何负载grpc 2021-02-22 Kubernetes 约 1303 字 预计阅读 3 分钟 概述 一般情况下,我们的系统对外暴露HTTP/HTTPS的接口,内部使用rpc(GRPC)通讯,这时GRPC在服务之间通过service访问, 阅读更多
Vscode如何调试Go代码 2021-02-04 工具 约 3335 字 预计阅读 7 分钟 调试器设置 调试器会使用要以下这些配置, 在通常情况下, 你不需要更改或者修改他们中的任何一项, 但是需要看一看。 go.gopath. 查看GOPATH in VS Code go.inferGopath, 查看GO 阅读更多
net-http源码剖析 2021-01-29 Go源码 约 33155 字 预计阅读 67 分钟 HTTP 超文本传输协议(Hypertext Transfer Protocol、HTTP 协议)是今天使用最广泛的应用层协议,1989 年由 Tim Berners-Lee 在 CERN 起草的协议已经成为了 阅读更多
CPU缓存与伪共享 2021-01-26 Linux 约 6222 字 预计阅读 13 分钟 前言 伪共享的非标准定义为:缓存系统中是以缓存行(cache line)为单位存储的,当多线程修改互相独立的变量时,如果这些变量共享同一个缓存行 阅读更多
P2C+EWMA负载均衡算法实现 2021-01-24 服务治理 约 8840 字 预计阅读 18 分钟 动态WRR算法(权重轮询) 数据中心内部的负载均衡 在理想情况下,某个服务的负载会完全均匀地分发给所有的后端任务。在任何时刻,最忙和最不忙的节点 阅读更多
GRPC的服务发现与负载均衡 2021-01-22 GRPC 约 5307 字 预计阅读 11 分钟 基本原理 gRPC开源组件官方并未直接提供服务注册与发现的功能实现,但其设计文档已提供实现的思路,并在不同语言的gRPC代码API中已提供了命 阅读更多
GRPC的ClientConn源码剖析 2021-01-22 GRPC 约 21096 字 预计阅读 43 分钟 基本概念 ClientConn 对象是连接管理的入口,表示到服务端的一个逻辑的连接,会做名字解析、负载均衡、KeepAlive 等连接管理方面的操作,是个线程安全的 阅读更多