golang
已收录文章:264篇
-
要构建低延迟交易系统,选择合适的通信库并进行性能优化是关键。若在Golang中选用nanomsg或ZeroMQ,需根据具体需求决定:1.ZeroMQ社区活跃、生态丰富,适合需要完善支持的场景;2.nanomsg设计简洁,适合追求轻量级和易理解性的系统;3.对性能极致要求时应分别测试,结合团队技术栈选择更熟悉的库以降低学习成本。配置方面,使用goget命令安装对应库,并合理设置通信模式如REQ/REP或PUB/SUB,调整socket参数如缓冲区大小与超时时间。性能优化包括:4.避免频繁内存分配,使用syn105 收藏
-
io.Copy默认使用中间缓冲区导致多次内存拷贝,而sendfile可实现零拷贝。io.Copy默认使用32KB缓冲区在用户空间中转数据,造成文件内容从磁盘到用户空间再到socket的多次复制;sendfile系统调用则直接在内核态完成文件传输,跳过用户空间,降低CPU和内存开销;Go标准库如net/http在静态文件服务等条件下会自动使用sendfile;手动触发可通过syscall.Sendfile实现,但需满足源为普通文件、目标支持sendfile等条件;适用场景包括大文件传输、静态资源服务和高并发104 收藏
-
1.TTL策略适合大多数场景,LRU适合访问模式不规律的数据,LFU适合数据访问模式稳定的高命中率场景,FIFO实现简单但效果一般。2.使用sync.RWMutex读写锁保证并发安全,允许多个goroutine同时读取缓存但写入时独占锁。3.通过分片锁降低锁竞争概率,利用sync.Pool减少内存分配,压缩数据减少内存占用,并可选用高性能缓存库优化性能。文章介绍了基于Golang内置map和互斥锁实现简易缓存系统的方法,支持过期时间机制并探讨了不同缓存策略的选择及优化手段。104 收藏
-
要实现Go中并发安全且支持定时清理和LRU淘汰的缓存,可组合使用标准库并设计结构。1.使用sync.RWMutex+map保障并发安全;2.每个条目记录过期时间,后台goroutine定期删除过期项;3.用container/list实现LRU,通过链表+哈希映射维护访问顺序;4.插入时更新顺序并判断容量,结合定时清理实现双重机制共存。102 收藏
-
微服务通信选型推荐gRPC;gRPC基于HTTP/2并使用protobuf,序列化效率更高、网络开销更低、接口更严谨,适合性能优先场景;HTTP/2+JSON更通用,适合跨平台或易调试需求。优化方面:1.设计简洁proto接口;2.启用压缩;3.用拦截器统一处理逻辑;4.合理管理连接池;5.采用异步流式通信。若使用HTTP/2则可选高效JSON库、启用ServerPush、控制返回字段。适用场景上,需浏览器直连或团队无gRPC经验时可选HTTP/2。100 收藏
-
Go-kit是一组模块化库,用于帮助开发者构建符合“干净架构”的微服务。核心理念包括:1.Service接口定义业务逻辑;2.Endpoint映射请求到方法;3.Transport负责网络协议;4.Middleware拦截处理请求。搭建时先定义接口并实现服务,再创建Endpoint处理请求转换,接着通过Transport层支持HTTP等协议,随后添加日志、认证等中间件提升可观测性与功能性,最后结合Consul、Prometheus、Docker、Kubernetes等工具完成部署与监控,从而构建出结构清晰100 收藏