GORM 是一个用于 Go 语言的 ORM(Object-Relational Mapping)库,它简化了数据库操作,允许你用更少的代码完成常见的 CRUD(Create, Read, Update, Delete)操作。下面是如何使用 GORM 封装 CRUD 操作的一个示例...
go
Golang基础 math包
Go 语言的标准库 math 提供了一系列基础数学函数和常量,用于进行科学计算、几何计算和其他数学相关的操作。以下是一些 math 包中的核心功能和函数。 一、math包 主要功能 Go 语言的标准库 math 包主要用于...
Golang占位符
fmt 包实现了格式化I/O函数,类似于C的 printf 和 scanf. 格式“占位符”衍生自C,但比C更简单。 占位符: 一般: %v 相应值的默认格式。在打印结构体时,“加号”标记(%+v)会添加字段名 %#v 相应值的Go语法...
gRPC(Go)入门教程(十三)—Kubernetes 环境下的 gRPC 负载均衡
1. 概述 系统中多个服务间的调用用的是 gRPC 进行通信,最初没考虑到负载均衡的问题,因为用的是 Kubernetes,想的是直接用 K8s 的 Service 不就可以实现负载均衡吗。 但是真正测试的时候才发现,所有流量都...
gRPC(Go)入门教程(十二)—客户端负载均衡
1. 概述 gRPC 负载均衡包括客户端负载均衡和服务端负载均衡两种方向。本文主要介绍的是客户端负载均衡。 gRPC 的客户端负载均衡主要分为两个部分: 1)Name Resolver 2)Load Balancing Policy 1. Nam...
gRPC(Go)入门教程(十一)—NameResolver 实战及原理分析
1. 概述 具体可以参考官方文档-Name Resolver gRPC 中的默认 name-system 是 DNS,同时在客户端以插件形式提供了自定义 name-system 的机制。 gRPC NameResolver 会根据 name-system 选择对应的解析器,用...
gRPC(Go)入门教程(十)——gRPC压测工具ghz
1. 安装 可以直接在Release页面下载二进制文件,也可以 clone 仓库手动编译。 下载解压后即可使用 # 下载 $ wget https://github.91chifun.workers.dev/https://github.com//bojand/ghz/releases/downloa...
gRPC(Go)入门教程(九)—配置retry自动重试
1. 概述 gRPC 系列相关代码见 Github gRPC 中已经内置了 retry 功能,可以直接使用,不需要我们手动来实现,非常方便。 2. Demo Server 为了测试 retry 功能,服务端做了一点调整。 记录客户端的请求...
gRPC(Go)入门教程(八)—使用context进行超时控制
1. 概述 gRPC 系列相关代码见 Github 通过 ctx 完成 cancel 和 deadline 功能。 Go 语言中可以通过 ctx 来控制各个 Goroutine,调用 cancel 函数,则该 ctx 上的各个子 Goroutine 都会被一并取消。 gRP...
gRPC(Go)入门教程(七)—利用Gateway同时提供HTTP和RPC服务
1. 概述 gRPC 系列相关代码见 Github gRPC-Gateway 是Google protocol buffers compiler(protoc)的一个插件。读取 protobuf 定义然后生成反向代理服务器,将 RESTful HTTP API 转换为 gRPC。 换句话说就是...