GoFrame框架介绍及设计GoFrame框架介绍及设计 郭强 成都医联科技 架构师 目 录 框架介绍 01 模块化设计 02 统一框架设计 03 代码分层设计 04 对象封装设计 05 DAO封装设计 06 未来发展规划 07 框架介绍 第一部分 • 框架介绍 • 框架架构 • 项目初心 框架介绍 GoFrame是一款模块化、高性能、企业级的Go基础开发框架。 • 模块化、松耦合 • 模块丰富、开箱即用 自顶向下、体系化设计 • 统一框架、统一组件、降低选择成本 • 开发规范、设计模式、代码分层模型 • 强大便捷的开发工具链 • 完善的本地中文化支持 • 设计为团队及企业使用 特点 框架介绍-框架架构 • 发布方式:Docker、二级制、源码模块 • 模块管理: • 核心模块、社区模块、三方模块 • Go Modules管理方式 • 开发工具链 • 设计模式:MVC、三层架构、工具集 • 跨平台性:基于Golang开发语言强大跨平台特性 框架介绍-项目初心 工程化建设 统一框架 核心组件 项目架构 设计模式 开发规范 开发文档 开发工具 …… 模块化设计 第二部分 • 复用原则 • 单仓包设计 • 模块聚合设计 • 常见问题 模块化设计 什么是模块? 模块化的目标? 模块也称作组件,是软件系统中可复用的功能逻辑封装单位。 在不同的软件架构层次,模块的概念会有些不太一样。0 码力 | 37 页 | 8.84 MB | 1 年前3
云原生go-zero微服务框架设计思考云原生go-zero微服务框架设计思考 万俊峰Kevin@好未来 关于我 万俊峰Kevin ● go-zero作者 ● 好未来资深专家 ● 晓黑板研发负责人 ● 十多年研发团队管理经验 ● 近20年开发和架构经验 Agenda ● go-zero之前世今生 ● go-zero是如何设计的 ● go-zero如何高效解决问题 go-zero之前世今生 go-zero的由来 Web & RPC微服务框架 ● 微服务代码生成工具goctl ● 通用API定义规范 go-zero的设计原则 ● 保持简单,第一原则 ● 弹性设计,面向故障编程 ● 工具大于约定和文档 ● 尽可能约束做一件事只有一种方式 ● 对业务开发友好,封装复杂度 go-zero是如何设计的 客户端 API端 Service端 缓存层 iOS PC web 安卓 HTTP协议 日志记录 服务发现 ETCD集群 Redis集群 代码未动,数据先行 ● 定义数据边界 ● 数据库互相隔离,通过RPC访问 ● No join, no pain! 用户 商品 订单 物流 如何设计缓存 ● 缓存穿透,不存在的数据 ● 缓存一分钟 ● 缓存击穿,热点key过期 ● 只拿一次数据,共享结果 ● 缓存雪崩,大量缓存同时过期 ● 过期时间设置随机偏差 service redis10 码力 | 29 页 | 5.70 MB | 9 月前3
2.游戏战中陪伴助手微服务架构设计与应用游戏战中陪伴助手微服务架构设计与应用 张敏 - AndruZhang 腾讯 - 高级后台工程师 目 录 功能介绍 01 早期探索 02 方案设计和工程实现 03 性能和成本优化 04 DevOps 建设 05 总结 & QA 06 功能介绍 第一部分 战中陪伴助手介绍——和平精英最佳第五人 战中陪伴助手介绍——和平精英最佳第五人 • 游戏战斗中指导 / 建议 • 敌人在附近 引入推荐系统 系统思考——如何评判方案的好坏? 需要定义几个维度来评判一个方案的好坏 - 响应性能: 获取事件到输出策略的延迟 - 服务器成本: 每服务千人成本越低越好 - 运营简易度: 设计新运营策略的难度 - 开发迭代: 如需开发介入,那么功能迭代的速度 - 可解释性: 理由是否能否说服玩家遵从建议 - 对用户价值: 提升玩家体验 / 吃鸡率的帮助有多大 推荐系统接入——系统架构 解决维度爆炸:只取部分子状态 - 统一“状态”的标准 方案设计和工程实现 第三部分 方案设计——Token、策略 更加具有通用性的方案 - 启发: - 抽象:子状态(特征维度) - 子状态组合成状态,同时子状态也可以组合成策略 - 策略选取:特征匹配 - 解决维度爆炸:只取部分子状态 - 统一“状态”的标准 - 方案设计 - 子状态:token - 状态:token 的组合(所有符合条件的)0 码力 | 47 页 | 11.10 MB | 1 年前3
大规模高性能区块链架构设计模式与测试框架-李世敬大规模高性能区块链架构 设计模式与测试框架 Gopher Meetup 深圳站 2021 年 8 ⽉ 21 号 趣�科技 李世敬 目录 区块链概述 01 大规模高性能区块链架构设计介绍 02 基于Go插件的区块链性能测试工具 03 写在最后 04 区块链概述 4 趣链科技 版权所有 ©2016-2021 4 趣链科技 版权所有 ©2016-2021 4 趣链科技 版权所有 ©2016-2021 ⼊要求。且⾮许可链⽹络节点⼤都由业务相关的机构组成,造成架构上共识、合约、安全、权限等⽅⾯的不同 �可�架构 大规模高性能区块链架构设计介绍 15 趣链科技 版权所有 ©2016-2021 ⼤�模⾼性能区��架构⾯�的�� 大规模高性能 区块链架构设计 网络连通问题 数据孤岛问题 异构部署问题 性能扩展问题 之困局 ? n 机构间数据难打通,不愿打通 n 公网内网、网关网闸情况复杂0 码力 | 39 页 | 56.58 MB | 1 年前3
2.2 龚浩华(月牙寂)p2p缓存系统 基于Golang的Aop设计模式LOGO p2p缓存系统 基于Golang的Aop设计模式 龚浩华 QQ 29185807 月牙寂 背景 v Web缓存(类似CDN技术) § 网页、图片 § 普通下载 § 普通视频 v P2P缓存 § 下载(bt等) § 视频(qvod、百度影音等) 背景 v P2P缓存好处 § 一次获取,多次利用 § 减少局域网出网流量 基于golang的分布式程序(单进程) 1、针对 缺乏全局状态知识 全局状态是可以获取到的 2、针对 缺乏全局时间 全局时间是一致的 3、非确定 仍然存在不确定性 现实世界的设计模式直接可以拿来借鉴 P2P缓存框架 P2P缓存框架 1、入口监听模块 常驻 功能监听识别连接 2、任务管理模块 常驻 1、全局收集任务,根据任务连接数排名,在 前n的任务给分发下载时间片。 2、任务定时更新自己的时间片 效果 效果 Golang总结 1、全新的设计模式 代码少、逻辑直观简单 2、代码维护简单 松散耦合 3、快速开发 4、性能高 Golang一些经验 1、程序雪崩与GC问题0 码力 | 29 页 | 338.20 KB | 1 年前3
Golang 101(Go语言101 中文版) v1.21.a一些困惑是关于一些Go语法和语义设计细节的。 一些困惑涉及到某些类型的 值,主要是切片,接口和通道类型。 另外一些涉及到标准包API的使用细节。 你认为造成你曾经的困惑的主要原因是什么? 我觉得最主要的原因是我当时抱着Go是一门非常简单的语言的态度去学习和使 用Go。 持有这种态度阻止了我更深刻地理解Go。 Go是一门特性丰富的语言。它的语法集虽然不大,但我们也不能说它很小。 Go中的一些语法和语义设计很简单明了,但也有一些设计略微反直觉,甚至自 Go中的一些语法和语义设计很简单明了,但也有一些设计略微反直觉,甚至自 相矛盾。 Go语法和语义设计中有很多折衷和权衡。一个Go程序员需要相当的 Go编程经验和感悟才能理解这些权衡。 Go提供了几种基本但非必需的类型,比如切片,接口和通道。 Go编译器和运 行时在实现这些类型的时候,进行了必要的封装。 一方面,这些封装为Go编程 带来了许多便利,使我们不用从头实现这些类型。 但另一方面,这些封装隐藏 了这些类型的内部结构, 从而对 内置并发编程支持也算是Go的卖点,虽然我个人认为它不是Go的主要卖点。 良好的代码可读性是Go的另一个重要卖点。 我感觉可读性是Go在设计的时候 考虑的最重要的一个因素。 良好的跨平台支持也应该算是Go的一个卖点,尽管如今这个卖点并不是很新 鲜。 一个稳定的Go核心设计和开发团队以及一个活跃的社区也可以被视为Go的一个 卖点。 《Go语言101》做了什么来消除Go编程中可能出现的困惑? 《Go0 码力 | 608 页 | 1.08 MB | 1 年前3
Golang 101(Go语言101 中文版) v1.21.a一些困惑是关于一些Go语法和语义设计细节的。 一些困惑涉及到某些类型的 值,主要是切片,接口和通道类型。 另外一些涉及到标准包API的使用细节。 你认为造成你曾经的困惑的主要原因是什么? 我觉得最主要的原因是我当时抱着Go是一门非常简单的语言的态度去学习和 使用Go。 持有这种态度阻止了我更深刻地理解Go。 Go是一门特性丰富的语言。它的语法集虽然不大,但我们也不能说它很小。 Go中的一些语法和语义设计很简单明了,但也有一些设计略微反直觉,甚至 Go中的一些语法和语义设计很简单明了,但也有一些设计略微反直觉,甚至 自相矛盾。 Go语法和语义设计中有很多折衷和权衡。一个Go程序员需要相当 的Go编程经验和感悟才能理解这些权衡。 Go提供了几种基本但非必需的类型,比如切片,接口和通道。 Go编译器和运 行时在实现这些类型的时候,进行了必要的封装。 一方面,这些封装为Go编 程带来了许多便利,使我们不用从头实现这些类型。 但另一方面,这些封装 隐藏了这些类型的内部结构, 从而对我们更深入地理解这些类型的值的行为 内置并发编程支持也算是Go的卖点,虽然我个人认为它不是Go的主要卖点。 良好的代码可读性是Go的另一个重要卖点。 我感觉可读性是Go在设计的时候 考虑的最重要的一个因素。 良好的跨平台支持也应该算是Go的一个卖点,尽管如今这个卖点并不是很新 鲜。 一个稳定的Go核心设计和开发团队以及一个活跃的社区也可以被视为Go的一 个卖点。 《Go语言101》做了什么来消除Go编程中可能 出现的困惑? 《G0 码力 | 821 页 | 956.82 KB | 1 年前3
Golang 101(Go语言101 中文版) v1.21.a我写了另外大约十篇Go基础教程和另外大约二十篇Go语言中关于各种其它主题的文 章。 所以现在《Go语言101》大约有50篇文章。 你曾经的困惑主要包括哪些方面? 一些困惑是关于一些Go语法和语义设计细节的。 一些困惑涉及到某些类型的值,主 要是切片,接口和通道类型。 另外一些涉及到标准包API的使用细节。 你认为造成你曾经的困惑的主要原因是什么? 第0章:关于《Go语言101》 4 我 学习和使用 Go。 持有这种态度阻止了我更深刻地理解Go。 Go是一门特性丰富的语言。它的语法集虽然不大,但我们也不能说它很小。 Go中的 一些语法和语义设计很简单明了,但也有一些设计略微反直觉,甚至自相矛盾。 Go 语法和语义设计中有很多折衷和权衡。一个Go程序员需要相当的Go编程经验和感悟 才能理解这些权衡。 Go提供了几种基本但非必需的类型,比如切片,接口和通道。 Go编译器和运行时在 内置并发编程支持也算是Go的卖点,虽然我个人认为它不是Go的主要卖点。 良好的代码可读性是Go的另一个重要卖点。 我感觉可读性是Go在设计的时候考虑的 最重要的一个因素。 第0章:关于《Go语言101》 5 良好的跨平台支持也应该算是Go的一个卖点,尽管如今这个卖点并不是很新鲜。 一个稳定的Go核心设计和开发团队以及一个活跃的社区也可以被视为Go的一个卖 点。 《Go语言101》做了什么来消除Go编程中可能出现0 码力 | 591 页 | 21.40 MB | 1 年前3
Go Web编程12.部署与维护 12.1 应用日志 12.2 网站错误处理 12.3 应用部署 12.4 备份和恢复 12.5 小结 13.如何设计一个Web框架 13.1 项目规划 13.2 自定义路由器设计 13.3 controller设计 13.4 日志和配置设计 13.5 实现博客的增删改 13.6 小结 14.扩展Web框架 14.1 静态文件支持 14.2 Session支持 14 Go是静态类型的语言,它的类型系统没有层级。因此用户不需要在定义类型之间的关系上花费时间,这样感 觉起来比典型的面向对象语言更轻量级。 Go完全是垃圾回收型的语言,并为并发执行与通信提供了基本的支持。 按照其设计,Go打算为多核机器上系统软件的构造提供一种方法。 Go是一种编译型语言,它结合了解释型语言的游刃有余,动态类型语言的开发效率,以及静态类型的安全性。它也打 算成为现代的,支持网络与多核计算的语 continue for import return var 在接下来的这一章中,我将带领你去学习这门语言的基础。通过每一小节的介绍,你将发现,Go的世界是那么地简 洁,设计是如此地美妙,编写Go将会是一件愉快的事情。等回过头来,你就会发现这二十五个关键字是多么地亲切。 目录 目录 links links 目录 上一章: 第一章总结 下一节: 你好,Go0 码力 | 295 页 | 5.91 MB | 1 年前3
Go 2 Generics? A (P)reviewVersion July 31, 2019 ) 2020 © Changkun Ou · Go 夜读 · Go 2 Generics? A (P)review 主要内容 ● 泛型的起源 ● 泛型的早期设计 ● Go 2 的「合约」 ● 上手时间 ● 历史性评述 ● 展望 泛型的起源 Origin of Generics 2020 © Changkun Ou · Go 夜读 · Go 2 func Max(a, b T) T { ... } // T 是类型参数 泛型的总体目标就是:快且安全。在 这里: 快 意味着静态类型 安全 意味着编译早期的错误甄别 泛型的早期设计 Early Designs on Generics 2020 © Changkun Ou · Go 夜读 · Go 2 Generics? A (P)review 从 Go 1 谈起 7 © Changkun Ou · Go 夜读 · Go 2 Generics? A (P)review Type Functions (2010) by Ian Lance Taylor 9 关键设计 ● 在标识符后使用 (t) 作为类型参数的缺省值,语法存在二义性 ○ 既可以表示使用 类型参数 Greater(t),也可以表示实例化一个 具体类型 Greater(t),其中 t 为推导的具体类型,如0 码力 | 41 页 | 770.62 KB | 1 年前3
共 51 条
- 1
- 2
- 3
- 4
- 5
- 6













