10 2022 档案
摘要:设计架构 在介绍go-zero实际使用前,先说一下整体架构,更方便理解 CI/CD Step1:本地deveploer开发好代码之后提交到gitlab(这里分支就不详细说明了) Step2:jenkins,使用pipline方式部署 从gitlab拉取代码 docker build ,基于最新git
阅读全文
摘要:go语言的微服务框架众多,有种百家争鸣的味道。在框架选型的时候,难免有点选择困难症。笔者选取影响力比较高的几种微服务框架(gin、beego等web框架排除在外)进行比较: 框架名开源时间官网/主文档githubgithub star go-zero 2020 https://go-zero.dev
阅读全文
摘要:RabbitMQ是实现了高级消息队列协议(AMQP)的开源消息代理软件(亦称面向消息的中间件)。RabbitMQ服务器是用Erlang语言编写的,而群集和故障转移是构建在开放电信平台框架上的。所有主要的编程语言均有与代理接口通讯的客户端库。 AMQP协议 核心概念 server:又称broker,接
阅读全文
摘要:一、中间件简介 我国企业从20世纪80年代开始就逐渐进行信息化建设,由于方法和体系的不成熟,以及企业业务和市场需求的不断变化,—个企业可能同时运行着多个不同的业务系统,这些系统可能基于不同的操作系统、不同的数据库、异构的网络环境。现在的问题是,如何把这些信息系统结合成一个有机地协同工作的整体,真正实
阅读全文
摘要:K8s 的认证管理项目基于 K8s/k3s 的二次开发过程中,往往需要频繁的进行 Apiserver 的接口调用,如何生成并调用接口的认证信息将会是很关键的一步呦! Token 管理Token实际就是在计算机身份验证中的令牌(临时)的意思。当用户向后端发起数据请求的时候,后端需要对用户进行身份验证,
阅读全文
摘要:不控制goroutine数量引发的问题 Goroutine 体积轻量 优质的GMP调度 ⽆限开辟goroutine :(1)CPU的使⽤率上升 (2)Memory占⽤不断上升 (3)主进程崩溃(被强制杀死) 限制goroutine数量的⽅法 ⽅法一: Channel和WaitGroup的组合⽅式来限
阅读全文
摘要:第一种方法,关闭channel。就是借助 channel 的 close 机制来完成对 goroutine 的精确控制。 func main() { ch := make(chan string, 6) go func() { for { v, ok := <-ch if !ok { fmt.Pri
阅读全文
摘要:Gin Recovery Recovery返回一个中间件,该中间件从任何恐慌中恢复,并写入500(如果有)。当你的程序出现一些你未考虑到的异常时,程序就会退出,服务就停止了,所以这个中间件是有必要的。 gin.Default()返回一个已连接记录器和恢复中间件的引擎实例,即Logger 和 Reco
阅读全文
摘要:Golang中context包提供上下文机制在 goroutine 之间传递 deadline、取消信号(cancellation signals)或者其他请求相关的信息。 其中context.WithCancel 函数能够从 context.Context 中衍生出一个新的子上下文并返回用于取消该
阅读全文
摘要:一、缓存穿透 1、缓存穿透理解 缓存穿透是指查询一个根本不存在的数据,缓存层和持久层都不会命中。在日常工作中出于容错的考虑,如果从持久层查不到数据则不写入缓存层,缓存穿透将导致不存在的数据每次请求都要到持久层去查询,失去了缓存保护后端持久的意义。(对于系统A,假设一秒 5000 个请求,结果其中 4
阅读全文
摘要:1. golang那些类型是引用类型,那些类型是值类型? 引用类型: 指针,map,slice,channel,interface 值类型: 非引用类型 Note: 对于interface类型,其原类型是引用类型那interface就也是引用类型,如果其原类型是值类型,那interface就也是值类
阅读全文
摘要:switch在golang中特殊的处理方式是考虑到大部分开发过程中不太会出现需要继续执行下一条分支的情况,所以默认无需显式的break,但也提供fallthrough让开发者可以显示的继续执行。
阅读全文
摘要:1.HTTP的options方法作用 检测服务器所支持的请求方法。(比如:‘/user'路由支持哪些方法:get、post、delete...) CORS中的预检请求(检测某个接口是否支持跨域) 2.allowedMethods方法 响应options方法,告诉它所支持的请求方法 相应的返回405(
阅读全文