TarsGo微服务开发实践-利开园TarsGo微服务高效开发 最佳实践 利开园 腾讯高级工程师 2021-08-21 关于我 Docker TarsGo Tars+K8S DevOps 2015至今 腾讯 目录 1. RPC 2. 日志 3. 监控 4. 调用链 5. 网关 6. 错误码 7. 配置 8. 云原生 9. 标准化 背景 • Tars是腾讯开源的微服务解决方案 • 高性能的RPC框架 • 丰富的服务治理能力 丰富的服务治理能力 • 支持Golang/Cpp/Java/PHP/Nodejs • 腾讯内部(TAF)曾经应用最广的开发框架 • Tars应用实践:https://github.com/tarscloud/gopractice RPC:不应该只是RPC • 基本功能:远程函数调用 • 可观测 • 名字服务+SET流量管理 • 熔断与恢复 • 轮询/一致性Hash • 错误码管理 日志:排查问题的利器0 码力 | 15 页 | 4.23 MB | 1 年前3
1.2 Go 在分布式系统开发中的应用0 码力 | 20 页 | 131.34 KB | 1 年前3
Go Module在又拍云的实践0 码力 | 28 页 | 12.85 MB | 1 年前3
GoFrame框架介绍及设计成都医联科技 架构师 目 录 框架介绍 01 模块化设计 02 统一框架设计 03 代码分层设计 04 对象封装设计 05 DAO封装设计 06 未来发展规划 07 框架介绍 第一部分 • 框架介绍 • 框架架构 • 项目初心 框架介绍 GoFrame是一款模块化、高性能、企业级的Go基础开发框架。 • 模块化、松耦合 • 模块丰富、开箱即用 • 简洁易用、快速接入 • 自顶向下、体系化设计 • 统一框架、统一组件、降低选择成本 • 开发规范、设计模式、代码分层模型 • 强大便捷的开发工具链 • 完善的本地中文化支持 • 设计为团队及企业使用 特点 框架介绍-框架架构 • 发布方式:Docker、二级制、源码模块 • 模块管理: • 核心模块、社区模块、三方模块 • Go Modules管理方式 • 开发工具链 • 设计模式:MVC、三层架构、工具集 • 跨平台性:基于Golang开发语言强大跨平台特性 框架介绍-项目初心 工程化建设 统一框架 核心组件 项目架构 设计模式 开发规范 开发文档 开发工具 …… 模块化设计 第二部分 • 复用原则 • 单仓包设计 • 模块聚合设计 • 常见问题 模块化设计 什么是模块? 模块化的目标? 模块也称作组件,是软件系统中可复用的功能逻辑封装单位。 在不同的软件架构层次,模块的概念会有些不太一样。0 码力 | 37 页 | 8.84 MB | 1 年前3
1.2 基于 Golang 构建高可扩展的云原生 PaaS 平台端点⼀站式 PaaS - Erda 02 Erda 架构的思考 03 模块化开发框架 04 开源新时代的挑战 05 ⾯向云原⽣的软件交付 第⼀部分 ⾯向云原⽣的企业软件产品 - 敏捷开发 - 微服务化和容器化 - 交付标准化 - 可观察性 特点: 敏捷的⽬标是提升研发效能 需要⼀个 DevOps 平台来⽀撑敏捷开发的落地 这⾥需要有⼀个标准的交付平台 运⾏环境 业务 数据 标签管理 系统监控 集群管理 服务⽬录 埋点 数据库 ⽇志 画像 标签 报表 推荐 … 代码管理 持续集成 编排部署 应⽤运维 测试管理 协同管理 数据源管理 数据集成 数据开发 数据资产 数据服务 数据应⽤ 资源统计 运维报告 审计⽇志 K8S 管理 数据监控 多云管理平台 MySQL Redis Kafka ES MQ Minio 中间件 通⽤服务 弹性监控架构 模块化开发框架 第四部分 什么是 Erda Infra 开发框架 Erda Infra 是⼀套轻量级 Go 微服务框架,包含⼤量现成的模块和⼯具,能够快速构 建起以模块化驱动的应⽤程序。 • 以模块化设计⽅式来驱动应⽤系统实现,⽀持模块可插拔 • 统⼀配置读取,⽀持默认值、⽀持从⽂件、环境变量、命令⾏参数读取 • 统⼀模块的初始化、启动、关闭 • 统⼀管理模块间的依赖关系0 码力 | 40 页 | 8.60 MB | 1 年前3
2.1.7 谈如何构建易于拆分的单体应用Infrastructure 微服务架构的困境与突破 ➢ 服务拆分难 • 模块职责不清晰,模块之间耦合严重,⾯向数据库交 互,循环依赖等等,导致服务拆分困难:1.0版本, 2.0版本,3.0版本...... (初期缺乏设计) ➢ 服务维护成本⾼ • 看起来不复杂的功能搞了N个服务,花了⼏天的时间 才把测试环境跑起来。为了维护这个项⽬同时打开了 N个开发⼯具窗⼝来回切,⼀会⼉⾃⼰都蒙圈了;⼀ 个代码仓库有效代码只有⼏百⾏,⼀个脚本搞定的事 选择基础设施相对完善的云平台和合适的业务框架 03 突破 建模:通过表象看本质 第⼆部分 建模:通过表象看本质 ➢ 软件开发过程:描述软件开发全过程、软件开发活动以及他们之间关系的结构框架。 。。。 常⻅的软件开发模型 RUP开发模型 业务建模 01 软件开发过程 建模:通过表象看本质 ➢ 建模:对现实世界特征的模拟和抽象,⽐如机械模型,汽⻋模型等。 02 何为建模 ➢ 不同的想法 解法:联系⽣活中的类似场景进⾏推演;想想⽣活中什么样的场景跟直播平台很类似? 建模:通过表象看本质 08 动态视图—规则 ➢ 动态视图:通过对象之间的交互来说明⽤例是如何被实现的 ➢ 问题:如何把实体转化为软件架构中的模块/系统 对象? ➢ ⽅案:尽量去映射,采⽤相似的命名,减少理解 上的差异! 建模:通过表象看本质 09 业务架构图 ➢ 分层架构:变与不变 ➢ 实现⽅式:单体架构 vs 微服务架构0 码力 | 27 页 | 13.04 MB | 1 年前3
Go Web编程编程》 《Go Web 编程》 因为自己对Web开发比较感兴趣,所以最近抽空在写一本开源的书籍《Go Web编程》《Build Web Application with Golang》。写这本书不表示我能力很强,而是我愿意分享,和大家一起分享Go写Web应用的一些东西。 对于从PHP/Python/Ruby转过来的同学了解Go怎么写Web应用开发的 对于从C/C++转过来的同学了解Web到底是怎么运行起来的 首先要感谢Golang-China的QQ群102319854,里面的每一个人都很热心,同时要特别感谢几个人 四月份平民 (review代码) Hong Ruiqi (review代码) BianJiang (编写go开发工具Vim和Emacs的设置) Oling Cat(review代码) Wenlei Wu(提供一些图片展示) polaris(review书) 雨痕(review第二章) 授权许可 授权许可 ADVISED OF THE POSSIBILITY OF SUCH DAMAGE. 3 1.Go环境配置 1.1. Go安装 1.2. GOPATH 与工作空间 1.3. Go 命令 1.4. Go开发工具 1.5. 小结 2.Go语言基础 2.1. 你好,Go 2.2. Go基础 2.3. 流程和函数 2.4. struct 2.5. 面向对象 2.6. interface 2.7. 并发0 码力 | 295 页 | 5.91 MB | 1 年前3
Golang 101(Go语言101 中文版) v1.21.a是Go的主要卖点。 节省内存、程序启动快、代码执行速度快和编译速度快合在一块儿是Go的另 一个主要卖点。 虽然这三项是C家族语言的共同特征,但是在Web开发领域, 很少有语言同时拥有这四个特征。 事实上,这就是我当初从Java转到Go进行 Web开发的原因。 内置并发编程支持也算是Go的卖点,虽然我个人认为它不是Go的主要卖点。 良好的代码可读性是Go的另一个重要卖点。 我感觉可读性是Go在设计的时候 我感觉可读性是Go在设计的时候 考虑的最重要的一个因素。 良好的跨平台支持也应该算是Go的一个卖点,尽管如今这个卖点并不是很新 鲜。 一个稳定的Go核心设计和开发团队以及一个活跃的社区也可以被视为Go的一 个卖点。 《Go语言101》做了什么来消除Go编程中可能 出现的困惑? 《Go语言101》做了以下这些方面来试图清除很多Go编程中可能遇到的困惑。 1. 着重于基本概念和术语的解释。如果不理解或者不熟悉这些基本概念和术 它语言编程经验的程序员来说,读懂一份Go源码也不是一件难事。 目前,使用最广泛的Go编译器由Go官方设计和开发团队维护。 以后我们将称 此编译器为标准编译器。标准编译器也常常称为gc(是Go compiler的缩写, 不是垃圾回收garbage collection的缩写)。 Go官方设计和开发团队也维护着另 外一个编译器,gccgo。 gccgo是gcc编译器项目的一个子项目。 gccgo的使用0 码力 | 821 页 | 956.82 KB | 1 年前3
Golang 101(Go语言101 中文版) v1.21.aGo的主要卖点。 节省内存、程序启动快、代码执行速度快和编译速度快合在一块儿是Go的另一 个主要卖点。 虽然这三项是C家族语言的共同特征,但是在Web开发领域,很 少有语言同时拥有这四个特征。 事实上,这就是我当初从Java转到Go进行Web 开发的原因。 内置并发编程支持也算是Go的卖点,虽然我个人认为它不是Go的主要卖点。 良好的代码可读性是Go的另一个重要卖点。 我感觉可读性是Go在设计的时候 我感觉可读性是Go在设计的时候 考虑的最重要的一个因素。 良好的跨平台支持也应该算是Go的一个卖点,尽管如今这个卖点并不是很新 鲜。 一个稳定的Go核心设计和开发团队以及一个活跃的社区也可以被视为Go的一个 卖点。 《Go语言101》做了什么来消除Go编程中可能出现的困惑? 《Go语言101》做了以下这些方面来试图清除很多Go编程中可能遇到的困惑。 1. 着重于基本概念和术语的解释。如果不理解或者不熟悉这些基本概念和术 它语言编程经验的程序员来说,读懂一份Go源码也不是一件难事。 目前,使用最广泛的Go编译器由Go官方设计和开发团队维护。 以后我们将称 此编译器为标准编译器。标准编译器也常常称为gc(是Go compiler的缩写,不 是垃圾回收garbage collection的缩写)。 Go官方设计和开发团队也维护着另外 一个编译器,gccgo。 gccgo是gcc编译器项目的一个子项目。 gccgo的使用广泛0 码力 | 608 页 | 1.08 MB | 1 年前3
Golang 101(Go语言101 中文版) v1.21.a主要卖点。 节省内存、程序启动快、代码执行速度快和编译速度快合在一块儿是Go的另一个主 要卖点。 虽然这三项是C家族语言的共同特征,但是在Web开发领域,很少有语言同 时拥有这四个特征。 事实上,这就是我当初从Java转到Go进行Web开发的原因。 内置并发编程支持也算是Go的卖点,虽然我个人认为它不是Go的主要卖点。 良好的代码可读性是Go的另一个重要卖点。 我感觉可读性是Go在设计的时候考虑的 我感觉可读性是Go在设计的时候考虑的 最重要的一个因素。 第0章:关于《Go语言101》 5 良好的跨平台支持也应该算是Go的一个卖点,尽管如今这个卖点并不是很新鲜。 一个稳定的Go核心设计和开发团队以及一个活跃的社区也可以被视为Go的一个卖 点。 《Go语言101》做了什么来消除Go编程中可能出现 的困惑? 《Go语言101》做了以下这些方面来试图清除很多Go编程中可能遇到的困惑。 1. 着重于基本概念 程经 验的程序员来说,读懂一份Go源码也不是一件难事。 目前,使用最广泛的Go编译器由Go官方设计和开发团队维护。 以后我们将称此编译 器为标准编译器。标准编译器也常常称为gc(是Go compiler的缩写,不是垃圾回 收garbage collection的缩写)。 Go官方设计和开发团队也维护着另外一个编译 器,gccgo。 gccgo是gcc编译器项目的一个子项目。 gccgo的使用广泛度大不0 码力 | 591 页 | 21.40 MB | 1 年前3
共 65 条
- 1
- 2
- 3
- 4
- 5
- 6
- 7













