Golang大规模云原生应用管理实践Golang⼤规模云原⽣应⽤管理实践 刘洋(炎寻) 关于我 • 毕业于中国科学技术大学,定居杭州 • 就职于阿里云-云原生应用平台团队 • Problem Solver,聚焦中间件,容器,Kubernetes,PaaS平台… • OAM社区成员 开局一张图 规模化应用交付效率对比去年 每万笔峰值交易的IT成本对比4年前 提升1倍 下降80% 云原生 技术 稳定 成本 效率 策略与机制随着层次的变化而变化; 应用管理的策略与机制 应用 版本 工作负载 负载均衡 标签 流量 组件 日志 指标 容量 服务 依赖 路由规则 持久卷 部署策略 健康检查 … 灰度 发布 定时弹性 事件 指标弹性 分批发布 重启 回滚 日志管理 事件中心 指标监控 存储挂载 服务绑定 手动弹性 回退历史 负载均衡 报警 诊断 组件管理 服务治理 … 级以维持安全,高可用,高性能的状态; • … 能力复用 自动化 可观测 稳定 安全 开发者真正想要的是策略:大象无形的基础设施,坚如磐石的中间件,丰富高效的应用PaaS平台 基础设施 云原生PaaS平台提供应用管理策略 基础设施 K8s 云原生生态(CNCF) 云原生应用 4 6 7 2 3 5 1 1 Kubectl plugins 2 Apiserver extension 3 4 50 码力 | 23 页 | 7.70 MB | 1 年前3
Go Module在又拍云的实践0 码力 | 28 页 | 12.85 MB | 1 年前3
Go Web编程install gcc libc6-dev来安装编译工具。 在Windows系统中,你需要安装MinGW,然后通过MinGW安装gcc,并设置相应的环境变量。 Go使用Mercurial进行版本管理,首先你必须安装了Mercurial,然后才能下载。假设你已经安装好Mercurial,执行 如下代码: 假设已经位于Go的安装目录 $GO_INSTALL_DIR下 hg clone -u o已经安装成功了;如果出现该命令不存在,那么可以检查一下自己的PATH环境 变中是否包含了Go的安装目录。 第三方工具安装 第三方工具安装 GVM GVM gvm是第三方开发的Go多版本管理工具,类似ruby里面的rvm工具。使用起来相当的方便,安装gvm使用如下命令: bash < <(curl -s https://raw.github.com/moovweb/gvm/mast 面系统,使用apt-get命令来管理软件包,我们可以通过下面的命令来安装Go: sudo add-apt-repository ppa:gophers/go sudo apt-get update sudo apt-get install golang-stable homebrew homebrew homebrew是Mac系统下面目前使用最多的管理软件的工具,目前已支持Go,可以通过命令直接安装Go:0 码力 | 295 页 | 5.91 MB | 1 年前3
Go 入门指南(The way to Go)月:谷歌投入使用 2011 年 5 月 5 日:Google App Engine 支持 Go 语言 从 2010 年 5 月起,谷歌开始将 Go 语言投入到后端基础设施的实际开发中,例如开发用于管理后端复杂环境的项 目。有句话叫 “吃你自己的狗食”,这也体现了谷歌确实想要投资这门语言,并认为它是有生产价值的。 Go 语言的官方网站是 golang.org,这个站点采用 Python 作为前端,并且使用 来构建基础设施的谷歌来说,无疑从根本上摆脱了 C++ 在构建速度 上非常不理想的噩梦。这不仅极大地提升了开发者的生产力,同时也使得软件开发过程中的代码测试环节更加紧凑, 而不必浪费大量的时间在等待程序的构建上。 依赖管理是现今软件开发的一个重要组成部分,但是 C 语言中“头文件”的概念却导致越来越多因为依赖关系而使得 构建一个大型的项目需要长达几个小时的时间。人们越来越需要一门具有严格的、简洁的依赖关系分析系统从而能够 过程变得微不足道,拥有了像脚本语言和动态语言那样的高效开发的能力。 另外,Go 语言在执行速度方面也可以与 C/C++ 相提并论。 由于内存问题(通常称为内存泄漏)长期以来一直伴随着 C++ 的开发者们,Go 语言的设计者们认为内存管理不应该 是开发人员所需要考虑的问题。因此尽管 Go 语言像其它静态语言一样执行本地代码,但它依旧运行在某种意义上的 虚拟机,以此来实现高效快速的垃圾回收(使用了一个简单的标记-清除算法)。 尽0 码力 | 466 页 | 4.44 MB | 1 年前3
Golang 101(Go语言101 中文版) v1.21.a链安装目录下的bin子目录路径必须配置在PATH环境变量中。 当使用安装程序 安装Go官方工具链时,安装程序很可能已经自动地将此配置好了。 Go官方工具链近来的版本均支持一个称为Go模块(Go modules)的特性,用来 管理项目依赖。 此特性在版本1.11中被试验性地引入并从版本1.16开始被默认 支持。 我们应该了解一个环境变量:GOPATH。 此环境变量的默认值为当前用户的 HOME目录下的名为go文件夹对应的目录路径。 fmt子命令来用同一种代码风格格式化Go代 码。 我们可以使用go test子命令来运行单元和基准测试用例。 我们可以使用go doc子命令来(在终端中)查看Go代码库包的文档。 强烈推荐让你的Go项目支持Go模块特性来简化依赖管理。对一个支持Go模块 特性的项目: go mod init example.com/myproject命令可以用来在当前目录中生成一个 go.mod文件。 当前目录将被视为一个名为example (请搜索关注微信公众号“Go 101”或者访问github.com/golang101/golang101 获 取本书最新版) 代码包和包引入 和很多现代编程语言一样,Go代码包(package)来组织管理代码。 我们必须 先引入一个代码包(除了builtin标准库包)才能使用其中导出的代码要素(比 如函数、类型、变量和具名常量等)。 此篇文章将讲解Go代码包和代码包引入 (import)。 包引入0 码力 | 608 页 | 1.08 MB | 1 年前3
Go 入门指南(The way to Go)月:谷歌投入使用 2011 年 5 月 5 日:Google App Engine 支持 Go 语言 从 2010 年 5 月起,谷歌开始将 Go 语言投入到后端基础设施的实际开发中,例如开发用于管理后端复杂 环境的项目。有句话叫 “吃你自己的狗食”,这也体现了谷歌确实想要投资这门语言,并认为它是有生产 价值的。 Go 语言的官方网站是 golang.org,这个站点采用 Python 作为前端,并且使用 来构建基础设施的谷歌来说,无疑从根本上 摆脱了 C++ 在构建速度上非常不理想的噩梦。这不仅极大地提升了开发者的生产力,同时也使得软件开 发过程中的代码测试环节更加紧凑,而不必浪费大量的时间在等待程序的构建上。 依赖管理是现今软件开发的一个重要组成部分,但是 C 语言中“头文件”的概念却导致越来越多因为依赖 关系而使得构建一个大型的项目需要长达几个小时的时间。人们越来越需要一门具有严格的、简洁的依赖 关系分析系统从而能够快速编译的编程语言。这正是 样的高效 开发的能力。 另外,Go 语言在执行速度方面也可以与 C/C++ 相提并论。 由于内存问题(通常称为内存泄漏)长期以来一直伴随着 C++ 的开发者们,Go 语言的设计者们认为内存 管理不应该是开发人员所需要考虑的问题。因此尽管 Go 语言像其它静态语言一样执行本地代码,但它依 旧运行在某种意义上的虚拟机,以此来实现高效快速的垃圾回收(使用了一个简单的标记-清除算法)。 尽管垃0 码力 | 380 页 | 2.97 MB | 1 年前3
5.cgo 原理解析及优化实践Interface 函数调用 数据交互 抽象模型 1 2 3 对 PC 寄存器的修改 编译器完成地址指引 函数调用规约 Go 1.17 数据结构/类型 内存对象生命周期 GMP cgo 编译的两个阶段 cgo 预编译 常规编译 1 2 生成 wrapper 代码 屏蔽 GMP 模型 底层调用 C 编译器 链接器通过符号寻址 cgo 内存布局一致 ② 生命周期一致 Go 对象是由 GC 管理的 确保不会被提前释放 ③ Go 指针 不可写 可以读? 同一进程内,可以互访 内存交互 – C to Go C 中常见的类型,都可以直接使用 内存交互 – Go to C Go 中一些基础类型,有对应的 C 类型 复杂的没有,如: Map channel Golang 内存管理方式 ①0 码力 | 45 页 | 5.74 MB | 1 年前3
Golang 101(Go语言101 中文版) v1.21.a链安装目录下的bin子目录路径必须配置在PATH环境变量中。 当使用安装程序 安装Go官方工具链时,安装程序很可能已经自动地将此配置好了。 Go官方工具链近来的版本均支持一个称为Go模块(Go modules)的特性,用 来管理项目依赖。 此特性在版本1.11中被试验性地引入并从版本1.16开始被默 认支持。 我们应该了解一个环境变量:GOPATH。 此环境变量的默认值为当前用户的 HOME目录下的名为go文件夹对应的目录路径。 fmt子命令来用同一种代码风格格式化Go 代码。 我们可以使用go test子命令来运行单元和基准测试用例。 我们可以使用go doc子命令来(在终端中)查看Go代码库包的文档。 强烈推荐让你的Go项目支持Go模块特性来简化依赖管理。对一个支持Go模块 特性的项目: go mod init example.com/myproject命令可以用来在当前目录中生成一个 go.mod文件。 当前目录将被视为一个名为example (请搜索关注微信公众号“Go 101”或者访问github.com/golang101/golang101 ? 获取本书最新版) 代码包和包引入 和很多现代编程语言一样,Go代码包(package)来组织管理代码。 我们必须 先引入一个代码包(除了builtin标准库包)才能使用其中导出的代码要素 (比如函数、类型、变量和具名常量等)。 此篇文章将讲解Go代码包和代码 包引入(import)。 包引入0 码力 | 821 页 | 956.82 KB | 1 年前3
大规模高性能区块链架构设计模式与测试框架-李世敬合约层 智能合约脚本 合约执⾏引擎 分布式应⽤DApp ⽹络层 P2P⽹络 区块链⽹络模型 区块链⽹络协议 扩 展 层 扩展操作 跨链协议 链上链下计算 预⾔机 扩展组件 消息队列MQ 证书管理 测试框架 治理层 权限体系 治理模型 区块链审计 BaaS运维治理 应⽤层 司法存证 供应链⾦融 智慧政务 物联⽹ 能源电⼒ 跨境贸易 ⼯业物联⽹ 智慧城市 ... 不同于 合约层 智能合约脚本 合约执⾏引擎 分布式应⽤DApp ⽹络层 P2P⽹络 区块链⽹络模型 区块链⽹络协议 扩 展 层 扩展操作 跨链协议 链上链下计算 预⾔机 扩展组件 消息队列MQ 证书管理 测试框架 治理层 权限体系 治理模型 区块链审计 BaaS运维治理 应⽤层 司法存证 供应链⾦融 智慧政务 物联⽹ 能源电⼒ 跨境贸易 ⼯业物联⽹ 智慧城市 ... 不同于 按需可扩展多层⼦链,基础⼦链为 扩展⼦链提供存证、互通等能⼒ 共识节点 ⾮共识节点 轻节点 轻客户端 共识节点 节点数量有限,参与交易的共识,存储全 量数据,节点间采⽤GRPC全连接⽅式互联 ⾮共识节点 节点数量较多,不参与共识,存储全量数 据,节点间使⽤gossip协议同步数据 轻节点 节点数量较多,存储部分数据, ⽤于交易的证明验证 轻客户端 节点数量较多,⼀般为物联⽹终端0 码力 | 39 页 | 56.58 MB | 1 年前3
Golang 101(Go语言101 中文版) v1.21.a装目录下的bin子目录路径必须配置在PATH环境变量中。 当使用安装程序安装Go 官方工具链时,安装程序很可能已经自动地将此配置好了。 Go官方工具链近来的版本均支持一个称为Go模块(Go modules)的特性,用来管理 项目依赖。 此特性在版本1.11中被试验性地引入并从版本1.16开始被默认支持。 我们应该了解一个环境变量:GOPATH。 此环境变量的默认值为当前用户的HOME目 录下的名为go文件夹对应的目录路径。 fmt子命令来用同一种代码风格格式化Go代码。 我们可以使用go test子命令来运行单元和基准测试用例。 我们可以使用go doc子命令来(在终端中)查看Go代码库包的文档。 强烈推荐让你的Go项目支持Go模块特性来简化依赖管理。对一个支持Go模块特性的 项目: go mod init example.com/myproject命令可以用来在当前目录中生成一 个go.mod文件。 当前目录将被视为一个名为example 101”或者访问github.com/golang101/golang101获 取本书最新版) 第10章:代码包和包引入 68 代码包和包引入 和很多现代编程语言一样,Go代码包(package)来组织管理代码。 我们必须先引 入一个代码包(除了builtin标准库包)才能使用其中导出的代码要素(比如函 数、类型、变量和具名常量等)。 此篇文章将讲解Go代码包和代码包引入 (import)。 包引入0 码力 | 591 页 | 21.40 MB | 1 年前3
共 62 条
- 1
- 2
- 3
- 4
- 5
- 6
- 7













