Go可观测性实践Go工程可观测性实践 周曙光 得物 Go开发 目 录 可观测性概述 01 链路追踪 02 指标 03 可观测性概述 第一部分 广义的可观测性:可以根据系统的外部输出信息推断出系统内部状态的好 坏。 软件系统的可观测性:一种度量能力,能帮你更好的理解系统当前所处的 任何状态。如果无需发布新代码就可以理解任何新的或怪异的状态,那么 系统就具备可观测性。 什么是可观测性? 可观测性开源产品 可观测性开源产品 每种方案都有特定的、自定义的 步骤来生产和转移符合后端存储 的遥测(Telemetry)数据,这就带 来了工具或者厂商的绑定性。 为了解决“厂商锁定问题”,监控和可观测性社区过去创建了很多开源项 目,比如OpenTracing和OpenCensus,这些标准允许用户实时收集遥测 数据并传输到所选择的后端,最终在2019年,两个组织共同组建OTel项目, 并由CNCF负责。 并由CNCF负责。 OTel目前已经成为可观测性方案开源标准,标准的好处就是有了很多选择。 OpenTelemetry OTel 组件 • API • SDK • Exporter • Collector OTel Collector • Receiver • Processor • Exporter 微服务业务架构图 项目工程layout 遥测数据处理架构 链路追踪 第二部分0 码力 | 35 页 | 2.88 MB | 1 年前3
Erda 基于云原生的微服务可观测性 - 刘浩杨Erda 基于云原生的微服务可观测性 刘浩杨 端点科技 Erda 微服务和监控平台负责人 目 录 微服务系统监控的挑战 01 可观测性技术理论 02 Erda 服务观测平台技术内核分析 03 Erda 服务观测平台功能概览 04 Erda:新一代企业级云原生 PaaS 平台 当前微服务系统面临的挑战 目 录 微服务系统监控的挑战 01 可观测性技术理论 02 Erda 服务观测平台技术内核分析 服务观测平台技术内核分析 03 Erda 服务观测平台功能概览 04 可观测性三大支柱 (一)Tracing 模型 (二)Metrics 时序模型 Writes are vertical,reads are horizontal (三)数据关联 目 录 微服务系统监控的挑战 01 可观测性技术理论 02 Erda 服务观测平台技术内核分析 03 Erda 服务观测平台功能概览 04 微服务观测平台优势 指标覆盖完整 通过多种探针,覆盖基础 设施、业务系统、用户终 端全面的数据指标 高实时性 通过流计算平台,数据 处理和告警延迟都在秒 级别 海量数据 存储处理 高性能的大数据处理架 构,轻松应对海量可观 测性数据处理 平台架构 可观测性数据采集 可观测性数据处理 数据存储选择 ES 数据索引管理 自动路由 指标到索引 01 02 03 自动索引滚动 根据容量和0 码力 | 25 页 | 6.96 MB | 1 年前3
2.7 Golang与高性能DSP竞价系统Redis集群 专业DSP解决⽅方案 © ⼲⼴广州舜⻜飞信息科技有限公司 All Right ReservedAll Right Reserved • 最终在Client端实现 • ⼀一致性hash: github.com/stathat/consistent • 预先开启⾜足够多的Redis实例,预防增加节点带来的数据 迁移⿇麻烦 Redis集群 专业DSP解决⽅方案 ©0 码力 | 51 页 | 5.09 MB | 1 年前3
Golang 101(Go语言101 中文版) v1.21.a第30章:一些恐慌/恢复用例 第31章:详解panic/recover原理 - 也解释了什么是“函数退出阶段” 第32章:代码块和标识符作用域 第33章:表达式估值顺序规则 第34章:值复制成本 第35章:边界检查消除 并发编程 第36章:并发同步概述 第37章:通道用例大全 第38章:如何优雅地关闭通道 第39章:其它并发同步技术 - 如何使用sync标准库包 第40章:原子操作 - 如何使用sync/atomic标准库包 很少有语言同时拥有这四个特征。 事实上,这就是我当初从Java转到Go进行 Web开发的原因。 内置并发编程支持也算是Go的卖点,虽然我个人认为它不是Go的主要卖点。 良好的代码可读性是Go的另一个重要卖点。 我感觉可读性是Go在设计的时候 考虑的最重要的一个因素。 良好的跨平台支持也应该算是Go的一个卖点,尽管如今这个卖点并不是很新 鲜。 一个稳定的Go核心设计和开发团队以及一个活跃的社区也可以被视为Go的一 TheChalice和zonesan等。 特别感谢白凯同学帮助我翻译了《细节101》、《问答101》和《技巧101》三 篇文章。 我很抱歉如果上述列表遗漏了某个曾经给予我帮助的成员。 Go社区有如此多 友善和富有创造性的成员,以至于上述列表肯定遗漏了某些成员。 感谢所有 曾经直接或者间接,有意或者无意帮助过我完成这本书的Go社区成员。 另外也要感谢Bootstrap CSS框架 ? 、jQuery ? /code0 码力 | 821 页 | 956.82 KB | 1 年前3
Golang 101(Go语言101 中文版) v1.21.a第30章:一些恐慌/恢复用例 第31章:详解panic/recover原理 - 也解释了什么是“函数退出阶段” 第32章:代码块和标识符作用域 第33章:表达式估值顺序规则 第34章:值复制成本 第35章:边界检查消除 并发编程 第36章:并发同步概述 第37章:通道用例大全 第38章:如何优雅地关闭通道 第39章:其它并发同步技术 - 如何使用sync标准库包 第40章:原子操作 - 如何使用sync/atomic标准库包 少有语言同时拥有这四个特征。 事实上,这就是我当初从Java转到Go进行Web 开发的原因。 内置并发编程支持也算是Go的卖点,虽然我个人认为它不是Go的主要卖点。 良好的代码可读性是Go的另一个重要卖点。 我感觉可读性是Go在设计的时候 考虑的最重要的一个因素。 良好的跨平台支持也应该算是Go的一个卖点,尽管如今这个卖点并不是很新 鲜。 一个稳定的Go核心设计和开发团队以及一个活跃的社区也可以被视为Go的一个 TheChalice和zonesan等。 特别感谢白凯同学帮助我翻译了《细节101》、《问答101》和《技巧101》三篇 文章。 我很抱歉如果上述列表遗漏了某个曾经给予我帮助的成员。 Go社区有如此多友 善和富有创造性的成员,以至于上述列表肯定遗漏了某些成员。 感谢所有曾经 直接或者间接,有意或者无意帮助过我完成这本书的Go社区成员。 另外也要感谢Bootstrap CSS框架 、jQuery /code prettify0 码力 | 608 页 | 1.08 MB | 1 年前3
Golang 101(Go语言101 中文版) v1.21.a第31章:详解panic/recover原理 - 也解释了什么是“函数退出阶段” 第32章:代码块和标识符作用域 目录 2 第33章:表达式估值顺序规则 第34章:值复制成本 第35章:边界检查消除 并发编程 第36章:并发同步概述 第37章:通道用例大全 第38章:如何优雅地关闭通道 第39章:其它并发同步技术 - 如何使用sync标准库包 第40章:原子操作 - 如何使用sync/atomic标准库包 言同 时拥有这四个特征。 事实上,这就是我当初从Java转到Go进行Web开发的原因。 内置并发编程支持也算是Go的卖点,虽然我个人认为它不是Go的主要卖点。 良好的代码可读性是Go的另一个重要卖点。 我感觉可读性是Go在设计的时候考虑的 最重要的一个因素。 第0章:关于《Go语言101》 5 良好的跨平台支持也应该算是Go的一个卖点,尽管如今这个卖点并不是很新鲜。 一个稳定的Go核 第1章:致谢 7 特别感谢白凯同学帮助我翻译了《细节101》、《问答101》和《技巧101》三篇文 章。 我很抱歉如果上述列表遗漏了某个曾经给予我帮助的成员。 Go社区有如此多友善和 富有创造性的成员,以至于上述列表肯定遗漏了某些成员。 感谢所有曾经直接或者 间接,有意或者无意帮助过我完成这本书的Go社区成员。 另外也要感谢Bootstrap CSS框架(https://getbootstrap0 码力 | 591 页 | 21.40 MB | 1 年前3
Go 入门指南(The way to Go)开发出的软件能够很好地在网络环境下工作 使人们能够享受软件开发的过程 Go 语言就在这样的环境下诞生了,它让人感觉像是 Python 或 Ruby 这样的动态语言,但却又拥有像 C 或者 Java 这类语言的高性能和安全性。 Go 语言出现的目的是希望在编程领域创造最实用的方式来进行软件开发。它并不是要用奇怪的语法和晦 涩难懂的概念来从根本上推翻已有的编程语言,而是建立并改善了 C、Java、C# 中的许多语法风格。它提 Scala(Java 的并发语言)有更低的门槛,真可谓是 21 世纪的 C 语言! 作为一门系统编程语言,你不应该为 Go 语言的大多数代码示例和练习都和控制台有着密不可分的关系而 感到惊奇,因为提供平台依赖性的 GUI(用户界面)框架并不是一个简单的任务。有许多由第三方发起的 GUI 框架项目正在如火如荼地进行中,或许我们会在不久的将来看到一些可用的 Go 语言 GUI 框架。不过 现阶段的 Go 语言已经提供了大量有关 现。” “之后我们学到了更多。我们毫无疑问地接受了垃圾回收,异常处理和虚拟机这些当年人们认为只有疯子 才会想的东西。C++ 的复杂程度(新版的 C++ 甚至更加复杂)极大了影响了软件开发的高效性,这使得 它再也不再适合这个时代。人们不再像过往那样认同在 C++ 中兼容使用 C 语言的方法,认为这些工作只 是在浪费时间,牺牲人们的努力。就在此时,Go 语言已经成功地解决了 C++ 中那些本打算解决却未能解0 码力 | 380 页 | 2.97 MB | 1 年前3
Go 入门指南(The way to Go)开发出的软件能够很好地在网络环境下工作 使人们能够享受软件开发的过程 Go 语言就在这样的环境下诞生了,它让人感觉像是 Python 或 Ruby 这样的动态语言,但却又拥有像 C 或者 Java 这类语言的高性能和安全性。 Go 语言出现的目的是希望在编程领域创造最实用的方式来进行软件开发。它并不是要用奇怪的语法和晦涩难懂的概念 来从根本上推翻已有的编程语言,而是建立并改善了 C、Java、C# 中的许多语法风格。它提倡通过接口来针对面向 Scala(Java 的并发语言)有更低的门槛,真可谓是 21 世纪的 C 语言! 作为一门系统编程语言,你不应该为 Go 语言的大多数代码示例和练习都和控制台有着密不可分的关系而感到惊奇, 因为提供平台依赖性的 GUI(用户界面)框架并不是一个简单的任务。有许多由第三方发起的 GUI 框架项目正在如 火如荼地进行中,或许我们会在不久的将来看到一些可用的 Go 语言 GUI 框架。不过现阶段的 Go 语言已经提供了 的出现。” “之后我们学到了更多。我们毫无疑问地接受了垃圾回收,异常处理和虚拟机这些当年人们认为只有疯子才会想的东 西。C++ 的复杂程度(新版的 C++ 甚至更加复杂)极大的影响了软件开发的高效性,这使得它再也不再适合这个时 代。人们不再像过往那样认同在 C++ 中兼容使用 C 语言的方法,认为这些工作只是在浪费时间,牺牲人们的努力。 就在此时,Go 语言已经成功地解决了 C++ 中那些本打算解决却未能解决的关键问题。”0 码力 | 466 页 | 4.44 MB | 1 年前3
Go Web编程Go完全是垃圾回收型的语言,并为并发执行与通信提供了基本的支持。 按照其设计,Go打算为多核机器上系统软件的构造提供一种方法。 Go是一种编译型语言,它结合了解释型语言的游刃有余,动态类型语言的开发效率,以及静态类型的安全性。它也打 算成为现代的,支持网络与多核计算的语言。要满足这些目标,需要解决一些语言上的问题:一个富有表达能力但轻 量级的类型系统,并发与垃圾回收机制,严格的依赖规范等等。这些无法通过库或工具解决好,因此Go也就应运而生 PATH=$PATH:$GOBIN 看到如下图片即说明你已经安装成功 7 图1.1 源码安装之后执行Go命令的图 如果出现Go的Usage信息,那么说明Go已经安装成功了;如果出现该命令不存在,那么可以检查一下自己的PATH环境 变中是否包含了Go的安装目录。 Go标准包安装 Go标准包安装 Go提供了每个平台打好包的一键安装,这些包默认会安装到如下目录:/usr/local/go (Windows系统:c:\Go),当然 相应的~/go/bin,这个时 候打开终端,输入go 看到类似上面源码安装成功的图片说明已经安装成功 如果出现go的Usage信息,那么说明go已经安装成功了;如果出现该命令不存在,那么可以检查一下自己的PATH环境 变中是否包含了go的安装目录。 Linux 安装 Linux 安装 访问下载地址,32位系统下载go1.0.3.linux-386.tar.gz,64位系统下载go10 码力 | 295 页 | 5.91 MB | 1 年前3
Go 2 Generics? A (P)review2 的「合约」 ● 上手时间 ● 历史性评述 ● 展望 泛型的起源 Origin of Generics 2020 © Changkun Ou · Go 夜读 · Go 2 Generics? A (P)review 当我们谈论泛型时,我们在谈论什么? 4 多态是同一形式表现出不同行为的一种特性。在 编程语言理论中被分为两类: 临时性多态(Ad hoc Polymorphism return a+b } // 注意: Go 语言中不允许同名函数 Add(1, 2) // 调用第一个 Add(1.0, 2.0) // 调用第二个 Add("1", "2") // 编译时不检查,运行时找不到实现,崩溃 参数化多态(Parametric Polymorphism)根据实参类型生成不同的版本 ,支持任意数量的 调用。即泛型 func Add(a, b T) T{ return 实现如何对参数进行断言: type T interface { ... } func Max(a, b T) T { ... } // T 是接口 当使用泛型时,a、b、返回值必须为同一类型,类型参数施加了这一强制性保障: func Max(a, b T) T { ... } // T 是类型参数 泛型的总体目标就是:快且安全。在 这里: 快 意味着静态类型 安全 意味着编译早期的错误甄别 泛型的早期设计0 码力 | 41 页 | 770.62 KB | 1 年前3
共 78 条
- 1
- 2
- 3
- 4
- 5
- 6
- 8













