GoFrame框架介绍及设计
项目依赖的模块过多,无从下手是否应当升级模块版本 • 各个模块孤立设计,单独看待每个模块可替换性很高, 开发体系难以建立,开发规范难以统一 模块化设计-模块聚合设计 • 框架核心维护较全面的通用基础模块,降低基础模块选择成本 • 我们只需要维护一个统一的框架版本,而不是数十个模块版本 • 我们只需要了解一个框架的内容变化,而不是数十个模块的内容变化 • 升级的时候只需要升级一个框架版本,而不是数十个模块版本的升级 • 减轻心智负担,提高模块可维护性,更容易保证各业务项目的模块版本一致性 改进: 模块化设计-常见问题 1. 模块低耦设计:文件层面的源文件下载与模块之间的逻辑耦合没有直接关系 2. 框架核心精简:功能强大且代码精简,包含测试与示例代码共8MB容量 3. 编译语言特性:编译型语言和解释型语言的模块管理逻辑不太一样 虽然框架每一个模块都按照低耦合设计,模块可以选择性引入,但在使用时也得全量下载完整框架代码。 项目依赖的模块过多,项目无从下手是否应当升级这些模块版本 • 各个模块孤立设计,单独看待每个模块可替换性很高,开发体系难以建 立,开发规范难以统一 改进: • 框架核心维护较全面的通用基础模块,降低基础模块选择成本 • 我们只需要维护一个统一的框架版本,而不是数十个模块版本 • 我们只需要了解一个框架的内容变化,而不是数十个模块的内容变化 • 升级的时候只需要升级一个框架版本,而不是数十个模块版本的升级 • 统0 码力 | 37 页 | 8.84 MB | 1 年前305. OpenKruise镜像预热实践_王思宇
maintainer 目 录 前言:OpenKruise 简介 01 为什么说人人都需要镜像预热 02 OpenKruise 是如何实现镜像预热的 03 如何通过镜像预热加速部署&发布 04 版本前瞻:原地升级与预热的结合 05 前言:OpenKruise 简介 第一部分 Cloud Native & Kubernetes & Go OpenKruise 是什么 OpenKruise( https://github 特殊业务镜像 – 资源池维度预热 版本前瞻:原地升级与预热的结合 第五部分 对效率的追求 create schedule attach/mount volume cni allotate start sidecar pull image for app start app Pod的创建过程,能否继续优化? 默认:重建升级 进阶:原地升级 优势: • 节省了调度的耗时,Pod 经存在了应用的旧镜像,当拉取新版本镜像时只 需要下载少数的几层 layer • 原地升级 Pod 中某个容器时,其他容器保持正 常运行,网络、存储均不受影响 对极致效率的追求 create schedule attach/mount volume cni allotate start sidecar pull image for app start app Pod原地升级,能否进一步优化? in-place0 码力 | 28 页 | 5.78 MB | 1 年前3Golang大规模云原生应用管理实践
声明是策略,过程是机制; • 策略面向外部交互,机制面向内部实现; • 策略追求开放标准,机制追求稳定可复用; • 策略与机制要分离; • 策略与机制随着层次的变化而变化; 应用管理的策略与机制 应用 版本 工作负载 负载均衡 标签 流量 组件 日志 指标 容量 服务 依赖 路由规则 持久卷 部署策略 健康检查 … 灰度 发布 定时弹性 事件 指标弹性 分批发布 重启 ,不得不学习复杂的声明字段和各种奇怪的Annotation; • 稳定性不足:没有设置Pod的QoS等级,导致频繁被驱逐,没有设置反亲和性策略,导致节点流量不均; • 扩展效率低:需要负责安装,升级丰富的云原生插件,无法解决插件的依赖,冲突和资源浪费问题; • 运维成本高:Apiserver, etcd, Controller-Manager, Kubelet,等组件都具有一定复杂度,无法做到定期升 • 应用 • 组件1(工作负载) • 运维特征1 • 运维特征2 • … • 组件2 (工作负载) • 运维特征1 • 运维特征2 • … • … 作用域 能力定义 依赖编排 组件版本 服务绑定 OAM应用模型 apiVersion: core.oam.dev/v1alpha2 kind: ApplicationConfiguration metadata: name: helloworld0 码力 | 23 页 | 7.70 MB | 1 年前32.4 Go 1.4 runtime
Garbage Collector 3. Goroutine Scheduler 1. Memory Allocator 内存分配器 base on tcmalloc. 基于成熟方案,性能优秀。随着版本升级, 针对性改进,以期与垃圾回收器更好协作。 核心:自主管理,缓存复用,无锁分配。 page, span. 内存管理以页为基本单位,多个地址连续 页构成内存块。 VA 8K 8K 8K 管理内存块的元数据。 allspans: 垃圾回收遍历。 2. Garbage Collector 垃圾回收器 gc. 阈值触发,并行标记,并发清理。 定期强制回收,释放物理内存。 版本升级,垃圾回收效率总是核心问题。 gogc. 阈值检查,或强制回收。 malloc next_gc 0 gogc runtime.gc() stop start mark sweep stop0 码力 | 29 页 | 608.57 KB | 1 年前3Go Web编程
第三方工具安装:目前有很多方便的第三方软件包工具,例如Ubuntu的apt-get、Mac的homebrew等。这种安 装方式适合那些熟悉相应系统的用户。 最后,如果你想在同一个系统中安装多个版本的Go,你可以参考第三方工具GVM,这是目前在这方面做得最好的工 具,除非你知道怎么处理。 Go源码安装 Go源码安装 在Go的源代码中,有些部分是用Plan 9 C和AT&T汇编写的,因此 install gcc libc6-dev来安装编译工具。 在Windows系统中,你需要安装MinGW,然后通过MinGW安装gcc,并设置相应的环境变量。 Go使用Mercurial进行版本管理,首先你必须安装了Mercurial,然后才能下载。假设你已经安装好Mercurial,执行 如下代码: 假设已经位于Go的安装目录 $GO_INSTALL_DIR下 hg clone -u 系统类 型”一行中,若显示“x64-based PC”,即为64位系统;若显示“X86-based PC”,则为32位系统。 Mac系统用户建议直接使用64位的,因为Go所支持的Mac OS X版本已经不支持纯32位处理器了。 8 Linux系统用户可通过在Terminal中执行命令uname -a来查看系统信息: 64位系统显示 <一段描述> x86_64 x86_64 x86_640 码力 | 295 页 | 5.91 MB | 1 年前3Go 入门指南(The way to Go)
就是实践,运行它的代码,修改并尝试更多的方 案。因此,你绝对不可以忽略书中的 130 个代码练习,这将对你学习好 Go 语言有很大的帮助。比如,我 们就为斐波那契算法提供了 13 个不同的版本,而这些版本都使用了不同的概念和技巧。 你可以通过访问本书的 官方网站 下载书中的代码(译者注:所有代码文件已经包括在 GitHub 仓库中), 并获得有关本书的勘误情况和内容更新。 为了让你在成为 18 章可以作为你在开发时的一个参考手册, 因为当中包含了众多的有价值的代码片段以及相关的解释说明。 最后要说明的是,你可以通过完整的索引来快速定位你需要阅读的章节。书中所有的代码都在 Go1.4 版本 下测试通过。 这里有一段来自在 C++、Java 和 Python 领域众所周知的专家 Bruce Eckel 的评论: “作为一个有着 C/C++ 背景的开发者,我在使用 Go 语言时仿佛呼吸到了新鲜空气一般,令人心旷神 直到 2009 年 11 月 10 日,开发团队将 Go 语言项目以 BSD-style 授权(完全开源)正式公布在 Linux 和 Mac OS X 平台上的版本。Hector Chu 于同年 11 月 22 日公布了 Windows 版本。 作为一个开源项目,Go 语言借助开源社区的有生力量达到快速地发展,并吸引更多的开发者来使用并改 善它。自该开源项目发布以来,超过 200 名非谷歌员工的贡献者对0 码力 | 380 页 | 2.97 MB | 1 年前303. Golang 在隐私计算平台建设中的实践 - 刘敬
隐私计算算法框架 协商算法 实例例版本 检查参与⽅方 任务状态 校验多⽅方输⼊入 格式是否匹配 参与⽅方掉线 检测 算 法 管 理理 异 常 处 理理 算 法 实 例例 ADD CMP PIR PSI 优点 01.算法流程基于数据驱动异步执⾏行行 异步执⾏行行并⾏行行化,提⾼高算法性能 02.算法版本协商 实现新旧节点版本兼容,全⽹网节点可错 开时间依次升级 03.统⼀一异常处理理 protocol_instance 基于he-同态加密 接⼝口暴暴露露 protocol_manager 其他算法 接⼝口暴暴露露 protocol manager:负责对外暴暴露露调⽤用接⼝口,管理理多个控制器器,并提供版本协商 protocol controller:⼀一个controller对应⼀一个算法实现,负责管理理隐私计算任务,以及算法实例例 中 元函数的调度,框架根据算法实例例会⾃自动⽣生成对应的控制器器 2021 21 隐私计算算法框架-manager 实现算法暴暴露露的调⽤用接⼝口 通过go的init函数 向框架注册算法 可注册多个算法的实 例例,具体执⾏行行时,会 选择所有参与⽅方都有 的且版本最⾼高的实例例 没有具体逻辑,只是做算 法结果的类型转换 根据配置的具体实现, 框架通过反射构建实例例 反射注⼊入继承的BaseManager字段 趣链科技版权所有©2016 – 20210 码力 | 37 页 | 6.20 MB | 1 年前302. Service Mesh落地之后_为sidecar注入灵魂 - 周群力
https://www.zhihu.com/question/55912398/ answer/147967674 Service Mesh 的初衷 6 • 升级成本高 • 业务解耦 • 平滑升级 • 异构语言治理 • 异构语言治理能力弱 • SDK 版本不统一 应用 SDK 服务路由 负载均衡 通信序列化协议 sidecar 应用 SDK 通信序列化协议 业务逻辑 服务路由 熔断限流0 码力 | 63 页 | 880.85 KB | 1 年前3Go 入门指南(The way to Go)
之后,决定每天抽出一点时间来进行翻译的工作,并且以 开源的形式免费分享给有需要的 Go 语言爱好者。 尽管该书对目前 Go 语言版本来说有小部分内容相对过时,但是为当下不可多得的好书,相关内容已获得作者同意根 据当前 Go 语言版本进行修改而不作出特别声明。 该翻译版本已获得原作者(Ivo Balbaert)本人授权,并表示支持开源事业的发展! 14.9 实现 Futures 模式 如果你喜欢本书 解决方案。记住,学习一门新语言的最佳方式就是实践,运行它的代码,修改并尝试更多的方案。因此,你绝对不可 以忽略书中的 130 个代码练习,这将对你学习好 Go 语言有很大的帮助。比如,我们就为斐波那契算法提供了 13 个不同的版本,而这些版本都使用了不同的概念和技巧。 你可以通过访问本书的 官方网站 下载书中的代码(译者注:所有代码文件已经包括在 GitHub 仓库中),并获得 有关本书的勘误情况和内容更新。 为了让你在成为 12 - 本文档使用 书栈(BookStack.CN) 构建 的有价值的代码片段以及相关的解释说明。 最后要说明的是,你可以通过完整的索引来快速定位你需要阅读的章节。书中所有的代码都在 Go1.4 版本下测试通 过。 这里有一段来自在 C++、Java 和 Python 领域众所周知的专家 Bruce Eckel 的评论: “作为一个有着 C/C++ 背景的开发者,我在使用 Go 语言时仿佛0 码力 | 466 页 | 4.44 MB | 1 年前3大规模高性能区块链架构设计模式与测试框架-李世敬
管理员3 普通⽤户1 普通⽤户2 管理员4 管理员2 4. 执⾏提案 投票 投票 投票 5. 完成提案 3. 表决提案 2. 审议提案 合约管理 合约部署 冻结/解冻/销毁 合约升级 CNS服务 应 ⽤ 场 景 系统管理 节点准⼊ 配置变更 权限变更 热备切换 应 ⽤ 场 景 基于Go插件的 区块链性能测试工具 25 趣链科技 版权所有 ©2016-2021 版权所有 ©2016-2021 30 趣链科技 版权所有 ©2016-2021 30 趣链科技 版权所有 ©2016-2021 30 实现中的Go plugin问题 1.使⽤相同的package版本 2.编译时使⽤--trimpath选项 3.不要使⽤vendor 4*.不⽀持多语⾔开发 请参考build/Demo_trimpath下的build.sh和如下 两个⽂件 genhash (c0 码力 | 39 页 | 56.58 MB | 1 年前3
共 41 条
- 1
- 2
- 3
- 4
- 5