golang
已收录文章:128篇
-
状态模式通过接口定义状态行为,结构体实现具体状态,上下文委托调用,实现订单等对象的状态流转控制,提升可维护性与扩展性。357 收藏
-
Go语言中所有参数传递都是值传递,传递指针时复制的是地址值。值传递不改变原始变量,适用于基本类型和小型结构体;指针传递可修改原始数据,适合大型结构体但需防范副作用。切片和map作为引用类型,其底层数据可通过值传递的副本修改,但重新切片或扩容会导致底层数组分离,影响函数内外的一致性。356 收藏
-
如何用Golang实现事件驱动架构并集成NATSStreaming?1.定义事件结构,包含ID、类型、数据和时间戳;2.使用stan.Connect连接NATSStreaming集群;3.通过sc.Publish发布序列化后的事件到指定主题;4.利用sc.Subscribe订阅事件并用回调函数处理接收的数据;5.处理错误及确保可靠传递,使用持久化、ACK机制和DurableNames;6.采用领域.事件类型命名规范如user.created;7.引入版本控制,如添加version字段或使用不同主题区分版本350 收藏
-
状态模式在Golang中通过定义状态接口、实现具体状态类型、使用上下文对象管理状态转换来实现,适用于网络连接管理、订单流程、游戏角色控制等具有多状态和状态转换的场景,可通过状态合并、表驱动、职责链或与策略模式结合来避免状态爆炸,并支持通过CanTransition方法、状态转换表或监听器机制实现复杂的转换逻辑,从而在保证代码清晰的同时灵活应对复杂业务需求。340 收藏
-
Golang集成Consul实现服务发现需完成服务注册、发现与健康检查协同。服务启动时通过hashicorp/consul/api注册信息并配置HTTP健康检查,关闭时主动注销;客户端调用Health().Service()获取健康节点,结合缓存与轮询实现负载均衡;Consul定期探活,故障节点自动剔除,保障故障转移;利用KV存储实现配置动态更新,提升系统灵活性。337 收藏
-
使用Golang构建微服务API网关时,路由转发与服务聚合是核心功能,通过Gin或Echo框架结合httputil.ReverseProxy可实现高性能动态路由转发,利用通配符路径和配置化路由表提升灵活性;服务聚合通过并发请求多个微服务并合并结果满足前端单一接口需求,结合context控制超时、结果缓存和错误兜底提升可靠性;网关可通过中间件集成JWT鉴权、限流、日志和熔断机制增强安全性与稳定性;推荐采用配置文件或服务注册中心实现路由的动态管理,避免硬编码;并通过连接池、协程数控制、Prometheus监控337 收藏