大规模高性能区块链架构设计模式与测试框架-李世敬以太坊Ethereum 新基建 • Linux 基 金 会 成 立 了 Hyperledger开源项目,IBM、 Intel、摩根大通等企业加入,开 始企业级区块链应用平台的研发 超级账本Hyperledger 趣链Hyperchain在同一时期开始研发 • 国家发改委正式将区块 链纳入“新基建”范畴, 区块链行业将迎来全新 的发展机遇 • 全球银行巨头组建成立R3 CEV 区块链联盟,致力于探索区块链 技术在金融行业的应用产品,自 区块链是由分布式数据存储、点对点传输、共识机制、加密算法等计算机技术构成的多中心 化系统 不可篡改(可信存证) ü 可对存储的文件、数据进行真实性校验 ü 可信追溯历史数据 去中心化共识(协作共享) ü 多方业务系统数据共享 ü 跨机构业务协作 核心特性 7 趣链科技 版权所有 ©2016-2021 7 趣链科技 版权所有 ©2016-2021 7 趣链科技 版权所有 ©2016-2021 7 区块链技术定义 应用生态层 经济金融 民生服务 智慧政务 社会治理 智慧城市 ··· 能源电力 飞洛 BaaS 密钥管理 业务数据可视化 智能合约研发 联盟组织管理 节点管理 合约安全审计 日志分析与告警 统一身份认证 专有联盟链 监控运维 应用研发 司法存证链 通用链 数字身份链 ··· 公共联盟链 溯源链 跨链服务 联盟链 Hyperchain 隐私保护 联盟治理 高效执行引擎0 码力 | 39 页 | 56.58 MB | 1 年前3
Go Web编程userinfo SET username=?,departname=?,created=?") checkErr(err) res, err := stmt.Exec("astaxie", "研发部门", "2012-12-09") checkErr(err) id, err := res.LastInsertId() checkErr(err) fmt.Println(id) userinfo(username, departname, created) values(?,?,?)") checkErr(err) res, err := stmt.Exec("astaxie", "研发部门", "2012-12-09") checkErr(err) id, err := res.LastInsertId() checkErr(err) fmt.Println(id) created) VALUES($1,$2,$3) RETURNING uid") checkErr(err) res, err := stmt.Exec("astaxie", "研发部门", "2012-12-09") checkErr(err) //pg不支持这个函数,因为他没有类似MySQL的自增ID id, err := res.LastInsertId()0 码力 | 295 页 | 5.91 MB | 1 年前3
Go 入门指南(The way to Go)起源与发展 Go 语言起源 2007 年,并于 2009 年正式对外发布。它从 2009 年 9 月 21 日开始作为谷歌公司 20% 兼 职项目,即相关员工利用 20% 的空余时间来参与 Go 语言的研发工作。该项目的三位领导者均是著名的 IT 工程师:Robert Griesemer,参与开发 Java HotSpot 虚拟机;Rob Pike,Go 语言项目总负责人,贝 尔实验室 Unix 团队成员,参与的项目包括 Thompson,贝尔实验室 Unix 团队成员,C 语言、Unix 和 Plan 9 的创始人之一,与 Rob Pike 共同开 发了 UTF-8 字符集规范。自 2008 年 1 月起,Ken Thompson 就开始研发一款以 C 语言为目标结果的编 译器来拓展 Go 语言的设计思想。 这是一个由计算机领域 “发明之父” 所组成的黄金团队,他们对系统编程语言,操作系统和并行都有着非 常深刻的见解 图 1.1 拥有简单却高效的标记-清除回收器。它的主要思想来源于 IBM 的可复用垃圾回收器,旨 在打造一个高效、低延迟的并发回收器。目前 gccgo 还没有回收器,同时适用 gc 和 gccgo 的新回收器 正在研发中。使用一门具有垃圾回收功能的编程语言不代表你可以避免内存分配所带来的问题,分配和回 收内容都是消耗 CPU 资源的一种行为。 Go入门指南 - 19 - 本文档使用 看云 构建 Go 的可0 码力 | 380 页 | 2.97 MB | 1 年前3
Go 入门指南(The way to Go)起源与发展 Go 语言起源 2007 年,并于 2009 年正式对外发布。它从 2009 年 9 月 21 日开始作为谷歌公司 20% 兼职项 目,即相关员工利用 20% 的空余时间来参与 Go 语言的研发工作。该项目的三位领导者均是著名的 IT 工程师: Robert Griesemer,参与开发 Java HotSpot 虚拟机;Rob Pike,Go 语言项目总负责人,贝尔实验室 Unix 团队成员,参与的项目包括 Thompson,贝尔实验室 Unix 团队成员,C 语言、Unix 和 Plan 9 的创始人之一,与 Rob Pike 共同开发了 UTF-8 字符集规范。自 2008 年 1 月起,Ken Thompson 就开始研发一款以 C 语言为目标结果的编译器来拓展 Go 语言的设计思想。 这是一个由计算机领域 “发明之父” 所组成的黄金团队,他们对系统编程语言,操作系统和并行都有着非常深刻的见 解 图 1.1 Go 拥有简单却高效的标记-清除回收器。它的主要思想来源于 IBM 的可复用垃圾回收器,旨在打造一 个高效、低延迟的并发回收器。目前 gccgo 还没有回收器,同时适用 gc 和 gccgo 的新回收器正在研发中。使用 一门具有垃圾回收功能的编程语言不代表你可以避免内存分配所带来的问题,分配和回收内容都是消耗 CPU 资源的 一种行为。 Go 的可执行文件都比相对应的源代码文件要大很多,这恰恰说明了0 码力 | 466 页 | 4.44 MB | 1 年前3
2.2.3 Go语言的抢占式调度curg 的标志位置为 true 这之后的流程需要正在运⾏的 goroutine 来配合 协作式抢占的“协作”过程 检查当前栈空间是否⾜够,不够的话,需要申请新的栈空间 只要当 framesize > 0 时才会有栈空间检查 framesize ⼀般是由 locals 决定的 协作式抢占的“协作”过程 保存当前 goroutine 的运⾏现场,切换到 m.g0,执⾏ newstack morestack_noctxt morestack newstack 协作式抢占的“协作”过程 gopreempt_m 将当前的 goroutine 放进了全局队列 教练,我不⼲了! 我不配合你 卡⼀辈⼦ 缅怀曾经的痛 新版本的抢占实现 第五部分 信号式抢占 增强版 preemptone 信号式抢占 通过系统调⽤ tgkill,给特定的线程发信号 信号式抢占 这次你不配合也得配合0 码力 | 44 页 | 7.43 MB | 1 年前3
1.6 resource scheduling & container technology for financial service_yujun 100% 自主研发。100% 开源给用户 Apache License v 2.0 容器级资源运行技术 基于Linux 内核隔离及业界先进的Container容器技术 自主研发的资源分配和动态调度调度算法 自主研发SWF核心算法 (基于场景的加权均衡算法) 两级作业调度框架 自主研发Gardener – 自主研发Lighthouse智能服务伸缩模型 分布式高可用控制系统 基于Raft/Chubby算法和GOSSIP协议的分布式高可用控 制系统与服务发现 智能模板和堆叠式组件管理系统 深度优化和预置的多层堆叠式开源软件发布和管理系统, 可以在保障版本统一的条件下,智能推送和维护应用模板 运维过程数据的大数据分析系统 自主研发Horus0 码力 | 21 页 | 27.20 MB | 1 年前3
1.5 Go 语言构建高并发分布式系统实践go语⾔言原⽣生提供的各组⼯工具,构建分布式系统配套设施⽅方⾯面,提供了 便利 配套设施= 测试 + 调优 + 监控 + 运维 便利 = 原⽣生profiling⼯工具 + 开协程模拟测试终端+协程协作模拟业务 go语⾔言运维管理⽅方⾯面的独特魅⼒力…… 具有go语⾔言特⾊色的运维 Æ 可视化平台 Profiling可视化 将常规排查问题从⼿手⼯工经验化,变成流程化的过程 提供接⼝口给后台 Æ 所有组件都必须通过⺴⽹网络启动,通过agent调⽤用命令⾏行 架构迭代 总结回顾 go语⾔言在基于并发协作的,重业务逻辑的基础服务⽅方向⾮非常适⽤用 适⽤用 = 开发体验好 + 服务稳定 + 性能满⾜足需要 go语⾔言程序开发需要找到⼀一种平衡,既利⽤用协程带来的便利性⼜又做适当集中化处理 go语⾔言原⽣生提供的各组⼯工具,构建分布式系统配套设施⽅方⾯面,提供了便利 ⽣生态圈 = 测试 + 调优 + 监控 + 运维 便利 = 原⽣生profiling⼯工具 + 通信库集成监控+协程协作模拟业务压测 谢 谢 ! 北京奇虎科技有限公司0 码力 | 39 页 | 5.23 MB | 1 年前3
2.4 Go 1.4 runtimeGoroutine Scheduler 1. Memory Allocator 内存分配器 base on tcmalloc. 基于成熟方案,性能优秀。随着版本升级, 针对性改进,以期与垃圾回收器更好协作。 核心:自主管理,缓存复用,无锁分配。 page, span. 内存管理以页为基本单位,多个地址连续 页构成内存块。 VA 8K 8K 8K 8K 8K span1 span2 small 并发调度器 goroutine. 轻量级实现,支持创建成千上万并发任务。 线程多路复用。 极小自定义初始栈。 任务在多个线程间切换。 scheduler. 三种抽象模型协作。 M G P thread CPU core VM task scheduler thread processor goroutine max. 系统限制,允许调整。 runtime0 码力 | 29 页 | 608.57 KB | 1 年前3
云原生go-zero微服务框架设计思考云原生go-zero微服务框架设计思考 万俊峰Kevin@好未来 关于我 万俊峰Kevin ● go-zero作者 ● 好未来资深专家 ● 晓黑板研发负责人 ● 十多年研发团队管理经验 ● 近20年开发和架构经验 Agenda ● go-zero之前世今生 ● go-zero是如何设计的 ● go-zero如何高效解决问题 go-zero之前世今生 go-zero的由来0 码力 | 29 页 | 5.70 MB | 9 月前3
5.cgo 原理解析及优化实践朱德江 蚂蚁集团 MOSN 核心成员 Golang contributor Envoy Golang extension maintainer 公众号 • 开源爱好者 • 十余年网关研发 • OpenResty 老司机(NGINX + LuaJIT) • MOSN 核心成员 • Envoy Golang extension maintainer • 玩过 DSL 编译器 • cgo 调度机制 03 CPU 优化 04 GC 优化 05 背景介绍 第一部分 网关发展历史 网关的扩展机制 什么是 MoE 举个例子 为什么需要 MoE Envoy 研发效能 良好的生态,上手门槛低 Wasm?Lua? Golang 云原生架构 良好的可扩展性 高性能 MoE 有什么挑战 业界少见 - 重度依赖 cgo 性能敏感0 码力 | 45 页 | 5.74 MB | 1 年前3
共 28 条
- 1
- 2
- 3













