GoFrame框架介绍及设计成都医联科技 架构师 目 录 框架介绍 01 模块化设计 02 统一框架设计 03 代码分层设计 04 对象封装设计 05 DAO封装设计 06 未来发展规划 07 框架介绍 第一部分 • 框架介绍 • 框架架构 • 项目初心 框架介绍 GoFrame是一款模块化、高性能、企业级的Go基础开发框架。 • 模块化、松耦合 • 模块丰富、开箱即用 • 简洁易用、快速接入 跨平台性:基于Golang开发语言强大跨平台特性 框架介绍-项目初心 工程化建设 统一框架 核心组件 项目架构 设计模式 开发规范 开发文档 开发工具 …… 模块化设计 第二部分 • 复用原则 • 单仓包设计 • 模块聚合设计 • 常见问题 模块化设计 什么是模块? 模块化的目标? 模块也称作组件,是软件系统中可复用的功能逻辑封装单位。 在不同的软件架构层次,模块的概念会有些不太一样。 在开发框架层 在开发框架层面,模块是某一类功能逻辑的最小封装单位。 在Golang代码层面中,我们也可以将package称作模块。 软件进行模块化设计的目的, 是为了使得软件功能逻辑尽可能的解耦和复用, 终极目标也是为了保证软件开发维护的效率和质量。 模块化设计-复用原则 REP 发布等同原则 (Release/Reuse Equivalency Principle) 软件复用的最小粒度应等同于其发布的最小粒度。0 码力 | 37 页 | 8.84 MB | 1 年前3
1.2 基于 Golang 构建高可扩展的云原生 PaaS 平台的核⼼架构师 - 开源爱好者, Apache SkyWalking PMC 成员 ⽬ 录 ⾯向云原⽣的软件交付 01 端点⼀站式 PaaS - Erda 02 Erda 架构的思考 03 模块化开发框架 04 开源新时代的挑战 05 ⾯向云原⽣的软件交付 第⼀部分 ⾯向云原⽣的企业软件产品 - 敏捷开发 - 微服务化和容器化 - 交付标准化 - 可观察性 特点: 敏捷的⽬标是提升研发效能 议 - 即将⽀持 skywalking 和 opentelemetry 弹性监控架构 模块化开发框架 第四部分 什么是 Erda Infra 开发框架 Erda Infra 是⼀套轻量级 Go 微服务框架,包含⼤量现成的模块和⼯具,能够快速构 建起以模块化驱动的应⽤程序。 • 以模块化设计⽅式来驱动应⽤系统实现,⽀持模块可插拔 • 统⼀配置读取,⽀持默认值、⽀持从⽂件、环境变量、命令⾏参数读取 提供快速构建模块的代码⽣成⼯具 Erda Infra 如何设计 Erda Infra 有什么不同 - 不是重复造轮⼦ - 不仅是web框架 - 不仅是微服务框架 - 为扩展⽽⽣ - 以模块化的开发为核⼼ VS 模块化开发原则 - ⾯向接⼝进⾏开发,⽽不是⾯向实现 - 模块拆分的粒度尽可能⼩ - 模块内聚,模块间松耦合 - 模块间的引⽤使⽤DI⽽不是直接依赖实现包 - 服务可以由多个模块拼装组成0 码力 | 40 页 | 8.60 MB | 1 年前3
2.3 用golang写一个操作系统现有的微博应⽤用,继续强化 ⺫⽬目前阶段: ü 其他语⾔言不适合 ü 丰富的开源资料 ü 跨平台 ü 编绎速度不到3秒 ü 模块化很好,耦合度很低 ü ⼤大量使⽤用google的技术 ü 我喜欢Golang 价值观,哲学思想都⽐比较符合 选Golang的理由 l C或C++ l 极简的语法 l 快速的编译 以前的同花顺客户端编绎要近20分钟,现在⼩小于3秒 l Package和易⽤用的接⼝口 耦合度低 模块化好 迭代和重构 l 初觉的很好 错误和异常是不同的 l 后⽤用起来很烦 ⼤大量的重复代码 l 最后觉得很合理 写代码的时间很短0 码力 | 33 页 | 1014.12 KB | 1 年前3
云原生时代分布式链路追踪实践-曲赛愿景:让开发一切尽在掌握 - 分布式追踪 - 日志 - 服务监控 - 火焰图 - 存储监控 - SDK监控 - CI/CD监控 - 发布变更 - 告警历史 - 服务拓扑图 正交,模块化 相关性 多租户 天机阁2.0 架构 13 天机阁2.0 实践 14 分布式追踪 天机阁2.0 实践 15 分布式追踪 Log详情 点击Log详情中traceID字段的按 钮拉起Trace详情。0 码力 | 17 页 | 2.47 MB | 1 年前3
2.1.7 谈如何构建易于拆分的单体应用transport 。。。 elegant monoliths with go-kit 弹幕 directory 房间 directory ⽤户 directory ➢ 告别传统的MVC,⽤服务化/模块化的思想来构建我们的单体应⽤ 1. 同⼀个repo下,不同模块之间按照不同⽬录进⾏隔离; 2. 模块之间的通过service.go中定义的接⼝interface进⾏通信,⾼层模块不应该依赖于低层模块,两者都应该依赖其抽0 码力 | 27 页 | 13.04 MB | 1 年前3
Go Web编程,我们调用了一个函数Printf,这个函数来自于fmt包,所以我们在第三行中导入了 系统级别的fmt包:import "fmt"。 包的概念和Python中的package类似,它们都有一些特别的好处:模块化(能够把你的程序分成多个模块)和可重用性 (每个模块都能被其它应用程序反复使用)。我们在这里只是先了解一下包的概念,后面我们将会编写自己的包。 在第五行中,我们通过关键字func定义了一个mai0 码力 | 295 页 | 5.91 MB | 1 年前3
共 6 条
- 1













