话题编程语言 › Go

编程语言:Go

关联话题: Golang

Go 语言中的零拷贝优化

相信那些曾经使用 Go 写过 proxy server 的同学应该对 io.Copy()/io.CopyN()/io.CopyBuffer()/io.ReaderFrom 等接口和方法不陌生,它们是使用 Go 操作各类 I/O 进行数据传输经常需要使用到的 API,其中基于 TCP 协议的 socket 在使用上述接口和方法进行数据传输时利用到了 Linux 的零拷贝技术 sendfile 和 splice。

我前段时间为 Go 语言内部的 Linux splice 零拷贝技术做了一点优化:为 splice 系统调用实现了一个 pipe pool,复用管道,减少频繁创建和销毁 pipe buffers 所带来的系统开销,理论上来说能够大幅提升 Go 的 io 标准库中基于 splice 零拷贝实现的 API 的性能。因此,我想从这个优化工作出发,分享一些我个人对多线程编程中的一些不成熟的优化思路。

Golang协程池的使用

系统开发部分需求涉及到了多任务执行,而多任务执行过程中需要处理并发问题。

go pprof实战

近期重构了项目的投放系统,有幸做了一次比较完整的服务优化,尤其针对trace方面的分析网上资料还是比较少了,这里结合自己的理解记录一下!

pprof++: A Go Profiler with Hardware Performance Monitoring

Golang是Uber数千个后端服务的命脉,在数百万个CPU核心上运行。了解我们的CPU瓶颈是至关重要的,这既是为了减少服务延迟,也是为了使我们的计算机群高效。Uber运营的规模需要对代码和微架构的影响有深入的了解。

虽然与其他几种语言相比,内置的Go剖析器比没有剖析器要好,但Go中事实上的CPU剖析器在基于Linux的系统上(也可能在其他操作系统上)有严重的局限性,并且缺乏许多[1, 2, 3, 4]充分理解CPU瓶颈所需的细节。

从操作系统的角度理解Goroutine – Go 协程设计系列(1/2)

Gopher们一脚迈进了并发编程的大门,冲刺着去体验天然并发带来的快感,却发现自己刚迈进去一半,就被并发的门槛绊摔了一跤。

Go实现的高性能http缓存服务器Jaguar

在业界,http 缓存服务器有一些前辈产品,有些公司内部也会自己实现 http 缓存服务器。我们在2015年落地详情页静态化方案的时候,主要参考了三个业界比较著名的 http 缓存服务器:VARNISH CACHE,SQUID 和 apache traffic server,但由于varnish 和 squid 对动静态数据合并支持比较弱,且当时 ATS 在业界有不少成功的业界场景并且性能卓越,所以最后选择了 ATS 来实现。而 NGIMX+LUA 的方式由于可能会需要用 lua 实现一些比较复杂的功能以及性能上不及 ATS,最后没有被采用。

字节跳动 Go RPC 框架 KiteX 性能优化实践

KiteX 自 2020.04 正式发布以来,公司内部服务数量 8k+,QPS 过亿。经过持续迭代,KiteX 在吞吐和延迟表现上都取得了显著收益。本文将简单分享一些较有成效的优化方向,希望为大家提供参考。

网易传媒Go语言探索

网易传媒于2020年底开始尝试Go语言的探索,用于解决内存资源使用率偏高,编译速度慢等问题,本文将详细描述传媒在Go语言方面的所做的工作和取得的收益。

看点信息流Go后台单元测试有效性提升

变异测试(Mutation Testing)通过模拟典型应用错误,或者是强制产生有效地测试来定位测试用例设计中的弱点。本文将详细介绍看点信息流Go后台如何提升单测有效性的过程和结果。同时助力EPC研发模式变革成功。

Golang 单元测试:有哪些误区和实践?

几种隔离(mock)的手段。

一例 Go 编译器代码优化 bug 定位和修复解析

本文中介绍了 Go 编译器的整体编译流程脉络和一个编译优化错误导致数据越界访问的 bug,并分析了对这个 bug 的排查和修复过程,希望能够借此让大家对 Go 编译器有更多的了解,在遇到类似问题时有排查思路。

Golang 单元测试详尽指引

Golang单元测试框架介绍和选型推荐。

一文读懂golang channel

golang是一门非常适合开发高并发服务的语言,而goroutine是golang并行设计的核心。golang提供的channel机制,为开发者提供了一种优雅的方式,解决goroutine间通信问题。

Golang 定时器底层实现深度剖析

本文将基于 Golang 源码对 Timer 的底层实现进行深度剖析。主要包含以下内容: Timer 和 Ticker 在 Golang 中的底层实现细节,包括数据结构等选型。 分析 time.Sleep 的实现细节,Golang 如何实现 Goroutine 的休眠。 注:本文基于 go-1.13 源码进行分析,而在 go 的 1.14 版本中,关于定时器的实现略有一些改变,以后会再专门写一

涂鸦智能 dubbo-go 亿级流量的实践与探索

dubbo 是一个基于 Java 开发的高性能的轻量级 RPC 框架,dubbo 提供了丰富的服务治理功能和

[斗鱼]没人比我更懂微服务--Go微服务框架Jupiter

项目开源地址:https://github.com/douyu/jupiterJupiter 是斗鱼开源的,

首页 - Wiki
Copyright © 2011-2024 iteam. Current version is 2.124.0. UTC+08:00, 2024-04-21 04:40
浙ICP备14020137号-1 $访客地图$