- 博客(118)
- 资源 (5)
- 收藏
- 关注
原创 使用goner/otel/meter实现应用指标监控
详细介绍如何使用Gone框架的goner/otel/meter组件,结合Prometheus实现应用的指标监控、数据采集和可视化展示,帮助开发者轻松构建完整的应用监控系统
2025-05-10 09:38:59
902
原创 goner/otel 在Gone框架接入OpenTelemetry
goner/otel 组件让 Gone 框架轻松集成 OpenTelemetry,实现微服务分布式追踪。通过 gonectl 快速创建项目,简单五步即可采集和导出链路数据,支持控制台和 Jaeger 等后端,提升系统可观测性与运维效率。
2025-05-08 12:56:00
947
原创 OpenTelemetry 介绍
本文系统介绍了OpenTelemetry的核心概念、发展历史、主要特点与优势、关键组件(API、SDK、Collector、导出器)、与主流后端(如Jaeger、Prometheus、Zipkin)的集成方式,以及在云原生环境下的应用价值。适合希望了解和落地可观测性体系的开发者与运维人员。
2025-05-08 11:14:22
828
原创 gone框架命令行工具gonectl介绍
`gonectl` 是 Gone 框架的官方命令行工具,旨在简化 Gone 项目的开发流程。它提供了一系列便捷命令,帮助开发者快速创建项目、管理模块、生成代码和构建应用程序。无论您是 Gone 新手还是有经验的开发者,`gonectl` 都能大幅提高您的开发效率。
2025-04-30 09:33:54
566
原创 Gone 框架的服务注册与发现:打造高效微服务架构
本文深入探讨Gone框架中服务注册与发现的实现机制,介绍其在微服务架构中解决动态通信、负载均衡和高可用等核心问题的方式。文章详细阐述了Gone如何优雅集成Nacos、Consul和Etcd等服务治理组件,提供了实战示例和原理解析,并说明了自定义组件的开发方法,为Go开发者提供完整的微服务治理解决方案。
2025-04-21 15:56:59
589
原创 Gone 如何读取配置,如何对接配置中心?
本文详细介绍了Gone框架的配置管理系统,展示了其三层配置方案:核心框架内置环境变量支持、本地配置文件读取和配置中心对接。Gone通过统一的Configure接口、智能的ConfigProvider和默认的EnvConfigure实现,提供了类型安全的配置注入、多种配置源支持和灵活的默认值机制。系统支持从环境变量、多格式配置文件到Apollo、Nacos等多种配置中心,满足从简单应用到复杂分布式系统的各类配置管理需求。
2025-04-21 09:24:21
962
原创 使用Gone MCP 组件编写MCP Server
Gone MCP是基于MCP协议封装的Go组件,支持快速构建AI模型与业务系统的集成。组件提供服务端和客户端实现,支持两种定义方式(Goner Define和Functional Define)来定义Tool、Prompt和Resource。服务端支持Stdio和SSE两种通信通道,可配置Hooks和ContextFunc,并支持多实例。客户端支持多实例配置、Stdio/SSE传输及自定义Transport。通过简洁的API设计,开发者可以轻松实现AI模型与外部系统的交互。
2025-04-18 21:20:48
825
原创 使用gone v2 的Provider 机制升级改造 goner/xorm 的过程记录
本文详细记录了对 goner/xorm 组件的升级改造过程,主要解决了原设计中 Goner 机制和 Provider 机制并存导致的复杂性问题以及测试覆盖困难。通过统一采用 gone v2 的 Provider 机制实现,重构了代码结构,使各组件职责更加清晰,同时保持了与原有配置和注入方式的完全兼容性。改造后不仅保留并增强了原有的事务管理和 SQL 拼接功能,还显著提高了代码的可测试性和测试覆盖率,为未来的功能扩展和维护奠定了良好基础。
2025-04-14 11:44:34
994
原创 使用 gone.WrapFunctionProvider 快速接入第三方服务(下)—— LLM接入支持 openAI 和 deepseek
本文将介绍如何使用 gone.WrapFunctionProvider 和配置注入来快速接入大型语言模型(LLM)服务,包括 OpenAI 和 Deepseek。我们将详细说明这种方式的实现原理和最佳实践。
2025-04-10 18:14:33
906
原创 Nginx 终极指南:从入门到精通
这篇《Nginx终极指南》是一份全面且系统的Nginx技术总结,涵盖了从入门基础到高级应用的各个方面。内容包括Nginx的安装配置、核心概念、基本功能、HTTP服务器配置、反向代理与负载均衡设置、缓存机制、HTTPS配置、性能优化技巧、日志监控方法以及常见问题解决方案。文章通过清晰的配置示例和实用技巧,帮助读者全面掌握Nginx的使用和优化,适合从初学者到高级用户的各层次读者参考使用。
2025-04-10 17:37:33
982
原创 nacos-sdk-go v2.29 中一个拼写错误,我定位了3个小时 ……
在使用第三方库时,遇到问题要有耐心,从最基础的地方开始排查;最重要的是先看看Issues,可能已经有人提了相关问题,避免浪费时间。
2025-04-01 21:07:36
227
原创 使用 gone.WrapFunctionProvider 快速接入第三方服务(上)- 接入Elastic Search
本文详细介绍了如何使用Gone框架的WrapFunctionProvider功能快速接入第三方服务。通过Elasticsearch集成的实例,展示了配置注入、单例模式和错误处理的最佳实践。文章重点阐述了WrapFunctionProvider的实现原理,包括配置自动注入、资源单例管理等特性,并提供了完整的代码示例和使用指南。这种集成方式不仅适用于Elasticsearch,还可以推广到Redis、MySQL等其他第三方服务的接入,具有代码简洁、配置灵活、资源管理合理等优势,能够显著提高开发效率。
2025-03-26 16:38:47
1142
原创 Gone v2 配置管理4:连接Apollo配置中心
该文档详细介绍了Gone Apollo组件,这是基于携程开源的Apollo配置中心为Gone框架开发的集成组件。该组件提供了配置的动态获取和实时更新功能,使应用能够集中管理不同环境和不同集群的配置信息,并在配置修改后实时推送到应用端。文档包含了组件的快速入门指南,详细说明了如何加载Apollo配置组件、配置Apollo连接信息以及在应用中使用配置。特别强调了配置动态更新的实现方式,通过开启apollo.watch功能,Apollo组件会监听配置变更并自动更新已注册的配置项,但需要使用指针类型才能实现动态更
2025-03-24 21:32:18
859
原创 Gone v2 配置管理3:连接 Nacos 配置中心
该文档描述了Gone框架的Nacos配置中心组件,该组件通过使用阿里巴巴的Nacos作为后端,实现了分布式系统中的动态配置管理。这一集成方案提供了集中化的配置管理能力,支持无需重启服务的实时配置更新。该组件支持多种配置格式(JSON、YAML、Properties、TOML),通过命名空间实现逻辑分组,并提供配置的版本控制功能。文档详细介绍了客户端配置参数、服务器连接设置、配置属性以及分组选项。它包含了全面的实施指南,提供了配置文件设置和Go代码集成的示例。该组件通过Go结构体标签提供灵活的配置绑定能力,
2025-03-24 21:24:31
1004
原创 实战经验:Gone 框架模块化改造中的 go work 反思
本文分享了作者在 gone 框架模块化改造过程中对 Go 语言官方多模块开发工具 go work 的调研和使用体验。文章介绍了 go work 的基本功能和使用场景,深入分析了其在实际开发中存在的问题,特别是命令兼容性问题、版本管理混乱和 CI/CD 集成困难等。作者以 gone 框架的实际案例说明了为何最终放弃使用 go work 而选择回归传统的 go mod replace 方案,并提出了针对不同复杂度项目的实用建议。文章结论认为 go work 虽有用但功能有限,像"鸡肋"一样食之无味,弃之可惜,期
2025-03-23 17:34:08
717
原创 Gone框架模块化改造之路
本文详细介绍了Gone框架从单一仓库到模块化架构的改造过程。Gone是一个轻量级的Go语言依赖注入框架,通过将各功能组件(Goner)分离为独立模块,解决了依赖膨胀、版本管理困难等问题。文章阐述了改造背景、实施过程、技术挑战及解决方案,包括接口抽象、单仓库多模块管理和依赖解耦等核心技术。这次改造使Gone更符合"小而美"的设计理念,为开发者提供了更灵活、高效的组件化开发体验。
2025-03-23 10:08:22
1039
原创 Gone v2 配置管理2:使用 goner/viper/remote链接远程的配置中心,支持etcd、consul、firestore、nats
本文详细介绍了Gone Viper Remote组件,这是一个专为Gone框架设计的强大远程配置管理解决方案。该组件扩展了Viper配置系统,支持从etcd、consul等多种远程配置中心获取配置信息,并提供配置热更新、加密配置和本地配置回退等高级功能。文档涵盖了组件的安装方法、基本使用、安全配置、工作原理和最佳实践,适合需要构建灵活、可靠的分布式配置系统的Go开发者。无论是单体应用还是微服务架构,Gone Viper Remote都能帮助开发者轻松实现集中式配置管理,提高系统的可维护性和可扩展性。
2025-03-22 23:18:14
809
原创 使用 .github/realse.yml 自动生成 release change log
GitHub的 .github/release.yml 配置文件能自动化生成结构化发布说明,大幅提升版本管理效率。通过标签匹配机制,该配置可将Pull Request自动归类到"新功能"、"Bug修复"等预设类别,并支持排除特定标签(如 release-note/ignore )和作者(如dependabot)。文章详解了如何配置多级分类体系(示例包含7种标准分类),实现PR的智能排序(支持按标题/时间排序),并推荐结合GitHub Actions实现"推送tag即发布"的完整自动化流程。最佳实践部分强调应
2025-03-22 00:07:41
1251
原创 Gone v2 配置管理1:使用 Gone Viper 组件进行本地配置
Gone Viper 是为 Gone 框架打造的高度灵活的配置管理组件,基于 spf13/viper 实现,为 Go 开发者提供了一站式的配置解决方案。它支持 JSON、YAML、TOML 和 Properties 等多种格式的配置文件,并实现了智能的配置文件查找和加载机制。该组件允许开发者通过简单的标签注入或 API 调用来访问配置,同时支持层级化配置结构、默认值设置以及环境变量覆盖功能。Gone Viper 的设计特别考虑了不同环境(开发、测试、生产)的配置需求,通过预定义的加载顺序确保配置正确合并。无
2025-03-21 12:52:39
1205
原创 Gone gRPC 组件使用指南
本文档详细介绍了 Gone 框架中 gRPC 组件的两种实现方式:传统方式和基于 Provider 机制的 Gone V2 方式。通过完整的示例代码,展示了从 protobuf 定义、代码生成到服务端/客户端实现的全过程。特别强调了 Gone V2 Provider 机制带来的简化优势,包括自动依赖注入、灵活的配置管理等特性,帮助开发者更高效地构建 gRPC 服务。
2025-03-20 23:08:35
848
原创 使用Gone V2 的Provide机制改造goner/grpc组件
手动注册机制违背DI原则服务端需要显式实现接口,这与Gone框架"自动装配"的核心理念相悖开发者需要手动管理gRPC服务的注册过程,而理想的依赖注入框架应该通过标签或约定自动完成这种绑定客户端实现存在大量样板代码每个gRPC客户端都需要实现相同模式的Address()和Stub()方法这些重复性的模板代码与Gone V2通过Provider机制消除重复代码的设计目标不符配置获取方式不够灵活,地址构建逻辑需要手写。
2025-03-20 18:12:31
1073
原创 如何给Gone框架编写Goner组件(下)——给对接Apollo的Goner组件编写测试代码
依赖注入与接口抽象将外部依赖(如viper和agollo)外部化,使代码具备更好的可测试性。Mock外部模块使用mockgen生成模拟对象,避免了在测试环境中对实际Apollo服务的依赖,大大降低了测试成本。完善的测试场景设计覆盖了配置读取、获取和变更监听等关键功能,确保组件在各种场景下均能稳定运行。提升代码可维护性通过单元测试为后续代码维护和重构提供了可靠保障,同时也为其他Gone组件的开发提供了可借鉴的测试方法。
2025-03-19 12:57:59
827
4
原创 如何对Golang代码进行单元测试?
编写可测试的代码是单元测试的前提,合理的接口抽象和Mock技术能有效隔离依赖,而精心设计的测试用例则是质量保障的核心。Golang的测试工具链(如testinggomocktestify)为开发者提供了强大支持,结合本文实践,可显著提升项目的健壮性与可维护性。
2025-03-19 06:00:00
1264
原创 如何给Gone框架编写Goner组件(上)——编写一个Goner对接Apollo配置中心
Gone是一个基于Go语言的依赖注入框架,而Goner则是基于Gone框架开发的可复用组件。通过编写Goner组件,我们可以将特定功能模块化,便于在不同项目中复用。配置管理界面(Portal):供用户管理配置配置服务(ConfigService):提供配置获取接口客户端SDK:与服务端交互,获取/监听配置变化。
2025-03-18 18:08:06
1045
原创 Gone框架中的延迟依赖注入:LazyFill()与option:lazy标签
LazyFill()选项和标签,它们都可以有效解决循环依赖问题。在实际应用中,应该根据具体需求选择合适的机制,并遵循最佳实践,以确保代码的可维护性和可靠性。通过合理使用这两种机制,可以在保持组件间依赖关系的同时,避免循环依赖带来的问题,从而构建更加健壮的应用程序。Init()Provide()Inject()等方法 包括:Init()没有返回值的Init方法有返回值的Init方法参数为 tagConf 的Provide方法没有参数的Provide方法按类型提供值的Provide方法。
2025-03-18 12:08:29
1029
原创 Go语言中的错误处理与异常恢复:性能对比与实践思考
在我的实践中,我会在中间件层面使用recover捕获所有未处理的panic,同时在业务逻辑层尽量使用返回error的方式处理可预见的错误情况。:继续遵循"错误是值,异常是非常规情况"的原则,对于可预见的错误情况返回error,只在真正的异常情况下使用panic。:在Web框架的中间件层面统一处理panic,将其转换为适当的HTTP响应,这样可以兼顾代码简洁性和错误处理的完整性。:对于确实对性能极其敏感的核心处理路径,可以优先考虑使用返回error的方式,特别是在这些路径可能频繁执行的情况下。
2025-03-17 19:31:17
693
原创 Gone v2 Tracer 组件-给微服务提供统一的traceID
是 Gone 框架的分布式追踪组件,用于提供了统一的trace ID。通过该组件,您可以轻松地在 Gone 应用中实现分布式追踪,跟踪请求在多个服务和多个 goroutine 之间的传递,便于问题排查和性能分析。库获取goroutine ID,并通过sync.Map维护goroutine ID与追踪ID的映射关系。同一个goroutine中不要重复设置traceId,如果尝试重复设置,将会保留第一次设置的值。:通过HTTP头或gRPC元数据传递追踪ID,实现跨服务的请求追踪。
2025-03-17 10:23:28
976
原创 Go语言进化之旅:从1.18到1.24的语法变革
从Go 1.18到Go 1.24,Go语言在保持简洁性和向后兼容性的同时,引入了许多增强开发体验的语法特性。泛型的引入是这一时期最重大的变革,而循环变量作用域的改进和迭代器支持则解决了长期以来的痛点。进一步完善泛型特性增强错误处理机制改进并发编程模型增加更多语法糖以提高开发效率Go语言的进化紧密围绕其设计哲学:保持简洁、实用性和可读性,同时谨慎地增加能够显著提升开发体验的特性。这种平衡的设计理念,使Go语言在企业级应用开发中越来越受欢迎。
2025-03-16 19:58:28
1226
原创 Gone v2 如何解决Goner间的循环依赖问题
这意味着,如果组件A依赖组件B,且B需要初始化,那么A的字段填充不仅依赖B的存在,还依赖B的初始化完成。:如果存在循环依赖,框架无法确定组件的初始化顺序,可能导致某些组件在依赖未完全初始化的情况下被使用。框架通过拓扑排序算法检测依赖图中的循环,如果发现循环,就会抛出panic,提示开发者解决这个问题。这就形成了一个无法打破的循环依赖链,框架无法确定初始化顺序,因此会抛出panic。:循环依赖可能导致初始化过程陷入死锁,特别是当所有组件都需要初始化时。关键在于,当一个字段依赖的组件被标记为。
2025-03-16 16:52:29
861
原创 Gone v2.0.3发布,新增allowNil 选项:优雅处理可选依赖
allowNil是 Gone 框架中的一个标签选项,用于标记那些"可以为空"的依赖。当一个字段被标记为allowNil时,如果框架无法找到或注入对应的依赖,程序会继续执行而不会因为依赖缺失而失败。allowNil选项是 Gone 框架提供的一个强大特性,它允许我们优雅地处理可选依赖,提高系统的健壮性和灵活性。通过合理使用这一特性,我们可以构建更加适应性强、容错能力高的应用程序。
2025-03-16 16:49:50
618
原创 什么是云原生?
云原生(Cloud Native)是一种为云环境设计的应用程序开发和部署方法,其核心目标是实现弹性、可扩展、自动化的软件架构。容器化、微服务、动态编排、声明式API、不可变基础设施,并通过自动化工具链实现高效管理。关键点•原生适配:从设计之初即针对云环境优化,而非简单迁移传统应用。•技术栈整合:以容器(如Docker)、编排工具(如Kubernetes)、服务网格(如Istio)等为核心,结合DevOps文化实现全流程自动化。云原生不仅是技术革新,更是一场软件架构与开发模式的范式转移。
2025-03-14 22:45:45
885
原创 Gone 从 v1 到 v2 的更新分析
v1 版本中,组件需要嵌入,而在 v2 版本中,组件只需要嵌入gone.Flag// v1 版本// v2 版本gone.Flag概念简化:移除宗教性术语,使用更直观的技术术语接口重新设计:减少内部方法的暴露,使接口更加清晰组件加载机制改进:提供更加一致和灵活的组件加载方式Provider 机制引入:替代 Vampire 概念,提供更强大的组件创建和提供能力生命周期管理优化:使组件的生命周期更加清晰和可预测多实例支持:允许在同一个应用程序中创建多个 Gone 框架实例动态组件获取。
2025-03-14 13:03:10
1030
原创 Gone v2 中 Gone-Gin 性能测试报告
Gone-Gin 是基于 Gin 框架的扩展,它提供了更加便捷的依赖注入和参数绑定功能,使得开发者可以更加专注于业务逻辑的实现,而不必关心请求参数的解析和绑定过程。本文档将介绍 Gone-Gin 的实现原理以及与原生 Gin 的性能对比。
2025-03-13 19:29:45
949
原创 Gone v2 提供 gRPC服务
在Gone中使用gRPC,需要完成以下几步:编写服务端编写服务端Goner,匿名嵌入proto协议生成代码的 默认实现重载proto文件中定义的接口方法,编写提供服务的具体业务逻辑实现接口的方法,在该方法中完成服务注册将 服务端Goner 注册到 Gone框架启动服务编写客户端编写客户端Goner,嵌入proto协议生成代码的客户端接口实现接口的Address和Stub方法,Address方法返回服务端地址,Stub初始化客服端接口将 客户端Goner 注册到 Gone框架。
2025-03-12 16:46:36
399
原创 Gone v2 Gin 组件,在gin中使用依赖注入
`gone-gin` 是一个基于 [gin-gonic/gin](https://github.com/gin-gonic/gin) 的 Web 框架封装,为 Gone 框架提供 HTTP 服务支持。它提供了路由管理、中间件处理、HTTP 注入、SSE(Server-Sent Events)等功能,使得在 Gone 框架中开发 Web 应用更加便捷。
2025-03-12 12:36:51
1630
原创 Gone V2的 依赖注入介绍
依赖注入介绍什么是 Goner?`gone` 标签的格式代码示例如何将 Goner 注册到 Gone 框架?方式一:单个注册方式二:批量注册依赖注入的执行时机手动完成依赖注入方式一:结构体注入(StructInjector)方式二:函数参数注入(FuncInjector)总结在使用 Gone 框架时,你可能会好奇它是如何进行依赖注入的。本文将带你深入了解 Gone 的注入机制,并通过示例让你轻松掌握它的用法。在 Gone 框架中,被注入的对象称为Goner。对象必须嵌入gone.Flag。
2025-03-11 15:15:23
790
原创 Gone V2 Provider 机制介绍
Gone V2 Provider 机制介绍1. Gone 的依赖注入流程2. 不同的 Provider2.1 按类型注入2.2 按名字注入2.3 基于名字的多类型 Provider3. “星号” Provider:`*`总结Gone V2 版本完全基于 Provider 机制实现依赖注入,其核心思想是通过 Provider 为对象提供依赖,而不必将所有第三方对象都包装为Goner。下面将从 Gone 的依赖注入流程、Provider 的分类及其使用示例等方面进行详细说明。按类型注入。
2025-03-11 11:37:59
951
原创 Goland如何玩依赖注入——基于gone@v2创建一个service
经过多天的工作,终于把gone2的beta版本发布出去了。在v2版本中,做了很多更新,最大的改进是将一些不必要的概念给隐藏起来了,提供了Provider机制……
2025-03-10 18:59:14
758
空空如也
TA创建的收藏夹 TA关注的收藏夹
TA关注的人