2.2.3 使用 Go 重新实现一套 Service Mesh
0 码力 | 24 页 | 4.02 MB | 1 月前文档介绍了使用Go语言重新实现Service Mesh的方案。当前Service Mesh方案百花齐放,Linkerd和Istio占据主要市场。重新实现的原因包括方案简单、资源占用少且完全通过容器化部署。选择Go语言的优势在于其性能优势,能应对大量网络请求和数据传输;生态丰富,Docker、Kubernetes、Istio等项目均通过Go实现,便于利用成熟工具集;开发效率高。通用架构采用Sidecar模型,通过webhook实现自动注入,Sidecar进行流量代理和拦截,Controller处理配置翻译和服务发现。此外,Apache APISIX性能更优,已有大量国内外用户,从API网关扩展到Service Mesh是用户诉求。
2.1.7 企业级 Go HTTP 框架在字节跳动的实践
0 码力 | 38 页 | 5.20 MB | 1 月前文档介绍了企业级Go HTTP框架Hertz在字节跳动的实践。首先回顾了字节内部框架的变迁,从2014年引入Golang,到2016年发布Ginex,再到2020年启动Hertz项目并于同年10月发布,2022年6月正式开源。Hertz因性能与可扩展性诉求而生,曾承接抖音春晚主会场1000万请求且零异常。在企业级框架设计考量方面,内部关注扩展性、可控性、业务视角和质量建设,外部关注功能需求、性能需求、易用性和稳定性。Hertz的核心特点包括解构框架,涉及连接处理、协议处理和路由处理,并作为CloudWeGo核心子项目,聚焦为开源用户提供一站式组件间联动的研发最佳实践。
2.1.6 谈谈 Go 泛型
0 码力 | 52 页 | 3.09 MB | 1 月前文档系统回顾了Go泛型的基本概念,包括泛型类型和泛型函数,以及类型参数和类型约束的使用。介绍了泛型类型的方法和泛型方法的限制。阐述了类型约束与接口的关系,以及泛型的实现方式。列举了标准库中泛型的使用,如atomic.Pointer、exp包中的maps、slices和arena。讨论了最佳实践,包括何时使用泛型(如语言定义的容器类型、通用数据结构)和何时避免使用(如替换接口、方法实现不同)。最后提到了对泛型的不满之处,如类型集共同字段、泛型方法实现和更智能的类型推断等提案。
2.1.5 千万级高性能长连接Go服务架构实践
0 码力 | 34 页 | 1.24 MB | 1 月前文档介绍了千万级高性能长连接Go服务架构的实践,包括统一长连接服务的背景、介绍、架构、Golang实践以及总结与规划。背景部分解释了长连接的定义,即APP生命期常驻、支持全双工上下行、提升实时性与互动性,应用场景包括消息、直播和PUSH。架构部分描述了服务组成,包括统一长连接SDK和长连接协议。Golang实践部分从开发、测试、运维三方面阐述了Golang的优势:开发效率高、语法简单、网络开发模式清晰、依赖工具完整、代码依赖清晰;测试方面原生支持单测和profile工具;运维方面支持异常捕获和线上问题定位。总结强调需求边界明确、设计简单优先,规划包括精细化网络质量数据分析、智能化网络切换和场景拓展。
2.1.4 dubbogo 精进之路:从开源项目到开源产品
0 码力 | 36 页 | 5.00 MB | 1 月前文档介绍了dubbogo从开源项目到开源产品的演进历程。dubbogo社区负责人于雨分享了个人开源经历,包括担任Pika项目负责人、前蚂蚁seata开源负责人等。项目通过开源影响力赢得社会价值,以to B产品认知产生商业价值,并提升企业技术水平、减少技术债务,培养黑客文化、工程师文化和开源文化。发展过程中总结了教训:耦合太紧需做好减法,合并太快需至少3个committer Review,易用性差需dubbogo-cli代码生成和在线调试,文档不够需dubbo-go-samples提供文档和代码示例。dubbogo提供一站式微服务平台,已在小米电商等近百家知名企业落地,采用Dubbo-go+Nacos+sidecar+etcd+mirpc体系,看重互联互通和服务治理能力。社区发展模式包括答疑、处理issue、沉淀实践文章和宣传,吸引更多开发者加入,形成良性循环。
2.1.3 微博增值团队在Go服务可观测性的实践与探索
0 码力 | 30 页 | 4.81 MB | 1 月前文档介绍了微博增值团队在Go服务可观测性方面的实践与探索。内容包括使用OpenTelemetry Client SDK进行手动埋点,收集运行时数据,并利用Go Hook、WASM、eBPF等技术。团队内部封装了官方包以统一管理和控制版本,增强数据收集,与内部框架集成实现开箱即用,并支持内部Client SDK。此外,基于业务特性进行深度埋点,如基于uid查询用户调用链路。文档还展示了OTEL COLLECTOR的使用和具体异常案例。
2.1.1 Sentinel&OpenSergo:下一代微服务治理标准与实践
0 码力 | 36 页 | 6.55 MB | 1 月前文档介绍了Sentinel与OpenSergo作为下一代微服务治理标准与解决方案。OpenSergo是一套开放通用的、面向云原生架构的微服务治理标准规范,旨在解决各微服务生态中治理概念、能力与配置不一致的问题,通过统一的CRD/DSL进行治理配置,降低用户上云与维护成本。它支持多语言异构化,覆盖从网关到服务框架的全链路生态。Sentinel作为治理能力数据面,与OpenSergo统一控制面结合,实现治理规则统一管控和策略预计算。文档还展示了流量路由Spec基于Istio VirtualService/DestinationRule扩展,以及社区共建的开放标准。未来展望包括持续演进微服务治理技术、生态与标准化。
1.3.3 基于Go构建海量作业作业平台
0 码力 | 34 页 | 4.48 MB | 1 月前文档介绍了基于Go构建的B站作业平台Job。该平台是一套基于Agent/SSH双模式的原子平台,具备上万台机器并发处理能力,支持脚本执行、文件分发、定时任务等基础运维场景,并通过流程调度能力将单个任务组装成自动化作业流程。平台架构经历了从SSH模式到Agent/SSH双模式混合架构的演进,2021年起利用Kratos框架重构。平台面临系统集成、自动化编排、安全性、性能优化、故障排除和用户体验等挑战,以及资源变更、兼容性、回源问题和运维复杂等具体问题。平台组件包括Apiserver、Etcd、Scheduler和Worker,分别负责鉴权与任务初始化、作业存储、作业调度和作业执行与日志上报。
1.2.4 Go on GPU
0 码力 | 55 页 | 4.79 MB | 1 月前文档主要介绍了在Go程序中支持GPU加速的相关知识。首先阐述了与GPU交互的基本知识,包括使用GPU的动机(提高系统计算性能、更大并发量、大规模数据处理、机器学习等)、GPU驱动和标准(Vulkan/Metal/DX12/OpenGL)、渲染管线和计算管线。然后说明了在Go程序中支持GPU加速的基本流程,包括初始化(仅一次,考虑着色器编译)、资源加载(少量,考虑拷贝时间)、指令编码(频繁,考虑调度策略)、资源共享(频繁,考虑同步回调)。最后总结了使用Go进行GPU计算的挑战:Cgo的开销、基础设施的积累、设计GPU的统一抽象、着色器的编写和调试。
1.2.3 Go 泛型设计
0 码力 | 35 页 | 1.31 MB | 1 月前文档围绕Go泛型设计展开,首先介绍了泛型的概念,包括1967年斯特雷奇提出的特设多态和参数化多态。接着概述了Go泛型的设计方案,分为静态方案(如C++模板)和动态方案(如Java泛型),并指出Go当前泛型方案对基本数据结构支持较好,无运行时开销。文档强调不支持泛型方法、匿名结构体/匿名函数以及类型断言,同时建议尽量避免将接口类型传递给泛型函数。Go团队持续优化现有泛型方案,并考虑未来支持泛型方法及完全单态化以彻底消除运行时开销。
共 154 条
- 1
- 2
- 3
- 4
- 5
- 6
- 16













