现在的服务器,只需要舍得堆配置,单台服务器接入100W连接问题也不大,但是总有避免单点故障或其他场景的需要,我们要把网关设计成允许多节点的服务。由此也会衍生出一系列如客户端状态管理、消息的路由处理等问题需要处理,下面是一个简单的分布式TCP接入网关实现和说明。消息流程设备A -> 网关A -&...
标签:golang
10 篇文章Golang服务稳定性保障:性能监控工具与常见问题解决方案引言在当今高并发的微服务架构中,Golang因其出色的性能、高效的并发模型和简洁的语法,成为许多企业的首选开发语言。然而,即使是最优化的Go服务,也可能因内存泄漏、Goroutine失控、GC压力过大等问题导致稳定性下降。本文将介绍如何通过性...
在项目中,经常遇到接口响应慢的问题,严重的会造成接口超时,体验十分不好,此时就要定位原因进行优化,最简单的方式有对关键接口增加耗时日志打印,但是对于循环调用的接口,日志打印没法计算总时间,此时就要用golang 自带的性能分析工具 pprof 定位原因了。下面以导出报告优化为例介绍pprof的使用。...
在程序开发过程中,公司要求以docker镜像的形式提交版本用于测试,一般都是会有配套的CICD流程,本地打包镜像的方式不太适合,只能由cicd执行,所以需要在项目中提供Dockerfile,下面提供一个通用的Dockerfile模版通用模版FROM golang:1.19.3-alpine as b...
前言在面试中,经常会被问到topK问题,一般情况下都可以用最大堆来解决,但是如果没有自己写过堆的实现,可能经不住细问而面试失败(博主泪目T_T),所以专门写这篇文章介绍堆,争取做到量大量好还管饱。堆的介绍堆说白了就是一个特殊的容器,支持对元素进行一定规则的比较后存储到容器中,最大堆就是只保存最大元素...
从JAVA和JS转过来的苦逼工程师,因为以上两门语言,一般情况下是没有指针的说法的,所以现在用go一通折腾,有时候就是引用指针傻傻分不清楚,或者声明指针未初始化报错的问题。不得已,写下此博客,记录自己菜鸟之路。指针// 定义一个结构体type Person struct{Name stringAge...
修改完代码后,就不能用官方镜像了,所以需要自己重新打包镜像到本地库,开始吧。修改DockerfileDockerfile在scripts/Dockerfile,需要加一下GOPROXY配置,否则go mod download会很慢WORKDIR /go/src/github.com/go-sonic...
这篇文章介绍怎么修改主题,以及完善官方代码中不支持更新远程主题的实现。发现问题官方的代码中,首次添加远程主题仓库时可以成功,但是如果远程仓库主题文件更新了,想在后台更新同步却不支持(not supported),先删除重新下载也不行(already exists)。修改代码通过查看源码,发现更新主题...
最近在搭建个人博客,最开始的时候使用HaloHalo,但是奈何服务器2C2G的配置遭不住Java内存大户,所以只能寻找替代品,最后找到了go-sonicSonic,使用golang开发,内存占用小,而且现在我主要开发语言也是golang,正好拿来就用,修改也方便。该文章记录了修改源码,修改主题,自己...
为什么选择golang,出于什么考虑Golang以其高效的并发模型和编译速度,使其成为处理高并发情况下的优秀选择。其轻量级的协程(goroutine)机制可以在有限的资源下处理大量的并发请求,从而提供更好的性能。Golang以静态链接方式生成可执行文件,这意味着可以将所有依赖项包含在二进制文件中,减...