区分Protobuf中缺失值和默认值

背景 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

概述 软件包fieldmaskpb包含google / protobuf / field_mask.proto的生成类型。 FieldMask消息表示一组符号字段路径

Proto常见第三方类型介绍

Any Any 包含任意序列化的消息以及描述序列化消息类型的URL。 JSON格式 Any值的JSON表示使用反序列化的嵌入式消息的常规表示,并带有一个@t

proto生成Go代码指南

本页确切描述了protocol buffer编译器为任何给定的协议定义生成的Go代码。突出显示了proto2和proto3生成的代码之间的任何

Proto3语言指南

语言指南 定义消息类型 先来看一个非常简单的例子。假设你想定义一个“搜索请求”的消息格式,每一个请求含有一个查询字符串、你感兴趣的查询结果所在的

opentelemetry使用介绍

otel func GetTextMapPropagator 1 func GetTextMapPropagator() propagation.TextMapPropagator GetTextMapPropagator返回全局TextMapPropagator。如果未设置任何内容,则返回No-Op Tex

常见负载均衡算法的比较

前言 如果我们在使用网络系统,那么可能会非常关心延迟问题。在面对一组服务器时,我们需要思考选择哪种负载均衡算法。如果可以直观了解不同负载均衡器

pkg-errors使用介绍

概述 Package errors 提供了简单的错误处理原语。 Go中的传统错误处理习惯用法大致类似于 1 2 3 if err != nil { return err } 当将其递归应用于调用堆栈时,将导致错误报告,而

SRE自适应熔断算法实现

前言 断路器(Circuit Breakers): 为了限制操作的持续时间,我们可以使用超时,超时可以防止挂起操作并保证系统可以响应。因为我们处于高度动态的环境中,

如何编写Docker镜像

优化基础镜像 优化基础镜像的方法就是选用合适的更小的基础镜像,常用的 Linux 系统镜像一般有 Ubuntu、CentOs、Alpine,其中Alpine

如何构建Go的镜像

示例应用 首先贴出代码例子,我们假设要构建一个 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参考

Dockerfile参考(Dockerfile reference) Docker可以通过读取Dockerfile中的指令自动构建镜像。 Dock

GRPC在k8s集群中的负载均衡

背景 很多刚刚接触 gRPC 的用户,通常会惊讶于 Kubernetes 默认提供的负载均衡对于 gRPC 来说无法实现开箱即用的效果。比如,将一个简单的基于 Node.js 实现的 gRPC 微服务部署在 Kubernetes 后

Vscode如何调试Go代码

调试器设置 调试器会使用要以下这些配置, 在通常情况下, 你不需要更改或者修改他们中的任何一项, 但是需要看一看。 go.gopath. 查看GOPATH in VS Code go.inferGopath, 查看GO

net-http源码剖析

HTTP 超文本传输协议(Hypertext Transfer Protocol、HTTP 协议)是今天使用最广泛的应用层协议,1989 年由 Tim Berners-Lee 在 CERN 起草的协议已经成为了

CPU缓存与伪共享

前言 伪共享的非标准定义为:缓存系统中是以缓存行(cache line)为单位存储的,当多线程修改互相独立的变量时,如果这些变量共享同一个缓存行

P2C+EWMA负载均衡算法实现

动态WRR算法(权重轮询) 数据中心内部的负载均衡 在理想情况下,某个服务的负载会完全均匀地分发给所有的后端任务。在任何时刻,最忙和最不忙的节点

GRPC的服务发现与负载均衡

基本原理 gRPC开源组件官方并未直接提供服务注册与发现的功能实现,但其设计文档已提供实现的思路,并在不同语言的gRPC代码API中已提供了命

GRPC的ClientConn源码剖析

基本概念 ClientConn 对象是连接管理的入口,表示到服务端的一个逻辑的连接,会做名字解析、负载均衡、KeepAlive 等连接管理方面的操作,是个线程安全的