 大规模高性能区块链架构设计模式与测试框架-李世敬©2016-2021 6 趣链科技 版权所有 ©2016-2021 6 区块链技术定义 区块链是由分布式数据存储、点对点传输、共识机制、加密算法等计算机技术构成的多中心 化系统 不可篡改(可信存证) ü 可对存储的文件、数据进行真实性校验 ü 可信追溯历史数据 去中心化共识(协作共享) ü 多方业务系统数据共享 ü 跨机构业务协作 核心特性 7 趣链科技 版权所有 ©2016-2021 参与交易验证。 仅在机构内使用,读写权,记账 权由组织内自由定制。中心控制 者制定可参与和进行交易验证成 员范围。 联盟链仅限于联盟成员参与,系 统内交易确认节点为事先设定, 并通过共识机制确认。 『非许可链』公有链 私有链『许可链』 联盟链『许可链』 区块链发展的主力军 不同的组织形态分别对应不同的“区块链产品架构” 11 趣链科技 版权所有 ©2016-2021 11 趣链科技 11 公有�架构(⾮�可�架构) 应⽤层 数据层 块链式结构 账户模型 时间戳 ⽹络层 共识层 激励层 发⾏机制 分配机制 PoW PoS DPoS 可编程货币 可编程⾦融 可编程社会 合约层 智能合约脚本 算法机制 合约执⾏引擎 哈希算法 数字签名 P2P⽹络 传播机制 验证机制 默克尔树 轮胎、悬架等 基础硬件配置 电路油路 等传导系统 引擎、动⼒系统 汽油等润滑系统0 码力 | 39 页 | 56.58 MB | 1 年前3 大规模高性能区块链架构设计模式与测试框架-李世敬©2016-2021 6 趣链科技 版权所有 ©2016-2021 6 区块链技术定义 区块链是由分布式数据存储、点对点传输、共识机制、加密算法等计算机技术构成的多中心 化系统 不可篡改(可信存证) ü 可对存储的文件、数据进行真实性校验 ü 可信追溯历史数据 去中心化共识(协作共享) ü 多方业务系统数据共享 ü 跨机构业务协作 核心特性 7 趣链科技 版权所有 ©2016-2021 参与交易验证。 仅在机构内使用,读写权,记账 权由组织内自由定制。中心控制 者制定可参与和进行交易验证成 员范围。 联盟链仅限于联盟成员参与,系 统内交易确认节点为事先设定, 并通过共识机制确认。 『非许可链』公有链 私有链『许可链』 联盟链『许可链』 区块链发展的主力军 不同的组织形态分别对应不同的“区块链产品架构” 11 趣链科技 版权所有 ©2016-2021 11 趣链科技 11 公有�架构(⾮�可�架构) 应⽤层 数据层 块链式结构 账户模型 时间戳 ⽹络层 共识层 激励层 发⾏机制 分配机制 PoW PoS DPoS 可编程货币 可编程⾦融 可编程社会 合约层 智能合约脚本 算法机制 合约执⾏引擎 哈希算法 数字签名 P2P⽹络 传播机制 验证机制 默克尔树 轮胎、悬架等 基础硬件配置 电路油路 等传导系统 引擎、动⼒系统 汽油等润滑系统0 码力 | 39 页 | 56.58 MB | 1 年前3
 2.1 gofmt 的文化演变4/21/2015 gofmt 的文化演变 http://127.0.0.1:3999/gofmt-cn.slide#1 29/34 编程文化的演变 gomft 是 Go 语言的一个重要的卖点 大家渐渐达成共识:一致的“足够好“的格式很有好处 这种在 AST-级别上的源代码操作带动了一系列的新的工具。 其它语言也在向我们学习:编程的文化在慢慢演变。 4/21/2015 gofmt 的文化演变 http://1270 码力 | 34 页 | 9.97 MB | 1 年前3 2.1 gofmt 的文化演变4/21/2015 gofmt 的文化演变 http://127.0.0.1:3999/gofmt-cn.slide#1 29/34 编程文化的演变 gomft 是 Go 语言的一个重要的卖点 大家渐渐达成共识:一致的“足够好“的格式很有好处 这种在 AST-级别上的源代码操作带动了一系列的新的工具。 其它语言也在向我们学习:编程的文化在慢慢演变。 4/21/2015 gofmt 的文化演变 http://1270 码力 | 34 页 | 9.97 MB | 1 年前3
 GoFrame框架介绍及设计统一框架设计-避免资源浪费 当每个团队都在试图自己创造轮子时,不仅 无法形成统一的开发规范,而且会出现非常 多的资源浪费。 让项目组把精力更多的投入到业务中,相信 这是大多数技术公司的共识。使用统一的开 发架构,可以把共性的技术问题提炼出来, 并形成通用的解决方案。避免每个项目都独 自去解决遇到的各种各样的技术难题,有效 的把精力释放出来。 代码分层设计 第四部分 • 经典MVC0 码力 | 37 页 | 8.84 MB | 1 年前3 GoFrame框架介绍及设计统一框架设计-避免资源浪费 当每个团队都在试图自己创造轮子时,不仅 无法形成统一的开发规范,而且会出现非常 多的资源浪费。 让项目组把精力更多的投入到业务中,相信 这是大多数技术公司的共识。使用统一的开 发架构,可以把共性的技术问题提炼出来, 并形成通用的解决方案。避免每个项目都独 自去解决遇到的各种各样的技术难题,有效 的把精力释放出来。 代码分层设计 第四部分 • 经典MVC0 码力 | 37 页 | 8.84 MB | 1 年前3
 03. Golang 在隐私计算平台建设中的实践 - 刘敬令集扩展,提供软硬件 ⼀一体的可信执⾏行行环境 2016年年发布的《隐私计 算研究范畴及发展趋势》 ⾸首次提出了了隐私计算概念 2021年年国内正式提 出了了隐私计算+区 块链,并达成业内 共识 趣链科技版权所有©2016 – 2021 7 隐私计算技术分类 • 安全多⽅方计算 纯密码学技术实现数据的可 ⽤用不不可⻅见 • 可信执⾏行行环境 基于TEE硬件保障计算环境安全 可信,提供计算模型及数据双维0 码力 | 37 页 | 6.20 MB | 1 年前3 03. Golang 在隐私计算平台建设中的实践 - 刘敬令集扩展,提供软硬件 ⼀一体的可信执⾏行行环境 2016年年发布的《隐私计 算研究范畴及发展趋势》 ⾸首次提出了了隐私计算概念 2021年年国内正式提 出了了隐私计算+区 块链,并达成业内 共识 趣链科技版权所有©2016 – 2021 7 隐私计算技术分类 • 安全多⽅方计算 纯密码学技术实现数据的可 ⽤用不不可⻅见 • 可信执⾏行行环境 基于TEE硬件保障计算环境安全 可信,提供计算模型及数据双维0 码力 | 37 页 | 6.20 MB | 1 年前3
 Golang大规模云原生应用管理实践插入:策略(Policy)与机制(Mechanism) 策略是做事的一组概念和计 划,关注要做什么事 “what” 机制是获取结果的过程, 方法和系统,关注如何做事 “how” • 员工进入公司需要验证是一个策略,人脸识别是机制; • 从杭州到上海是策略,坐火车是机制; • 接口是策略,实现是机制; • 声明是策略,过程是机制; • 策略面向外部交互,机制面向内部实现; • 策略追求开放标准,机制追求稳定可复用; 策略追求开放标准,机制追求稳定可复用; • 策略与机制要分离; • 策略与机制随着层次的变化而变化; 应用管理的策略与机制 应用 版本 工作负载 负载均衡 标签 流量 组件 日志 指标 容量 服务 依赖 路由规则 持久卷 部署策略 健康检查 … 灰度 发布 定时弹性 事件 指标弹性 分批发布 重启 回滚 日志管理 事件中心 指标监控 存储挂载 服务绑定 KEDA ES InfluxDB Promethues Knative Ingress Rook Kube eventer … 策略 机制 Jaeger 实例 调度策略 链路 K8s及云原生生态给 开发者提供的是机制 开发者直接使用K8s的失败故事 • 认知成本高:K8s功能强大却没有统一的使用方式,不得不学习复杂的声明字段和各种奇怪的Annotation; •0 码力 | 23 页 | 7.70 MB | 1 年前3 Golang大规模云原生应用管理实践插入:策略(Policy)与机制(Mechanism) 策略是做事的一组概念和计 划,关注要做什么事 “what” 机制是获取结果的过程, 方法和系统,关注如何做事 “how” • 员工进入公司需要验证是一个策略,人脸识别是机制; • 从杭州到上海是策略,坐火车是机制; • 接口是策略,实现是机制; • 声明是策略,过程是机制; • 策略面向外部交互,机制面向内部实现; • 策略追求开放标准,机制追求稳定可复用; 策略追求开放标准,机制追求稳定可复用; • 策略与机制要分离; • 策略与机制随着层次的变化而变化; 应用管理的策略与机制 应用 版本 工作负载 负载均衡 标签 流量 组件 日志 指标 容量 服务 依赖 路由规则 持久卷 部署策略 健康检查 … 灰度 发布 定时弹性 事件 指标弹性 分批发布 重启 回滚 日志管理 事件中心 指标监控 存储挂载 服务绑定 KEDA ES InfluxDB Promethues Knative Ingress Rook Kube eventer … 策略 机制 Jaeger 实例 调度策略 链路 K8s及云原生生态给 开发者提供的是机制 开发者直接使用K8s的失败故事 • 认知成本高:K8s功能强大却没有统一的使用方式,不得不学习复杂的声明字段和各种奇怪的Annotation; •0 码力 | 23 页 | 7.70 MB | 1 年前3
 1.6 resource scheduling & container technology for financial service_yujunResource  Fairness)  调度机制。 YARN自带FIFO、Capacity  Scheduler和Fair  Scheduler(借鉴了 Mesos的DRF)。  ② Mesos中的DRF调度算法过分的追求公平,没有考虑到实际的应 用需求。在实际生产线上,往往需要类似于Hadoop中Capacity  Scheduler的调度机制,将所有资源分成若干个queue,每个 Mesos采用了Resource  Offer机制,这种调度机制面临着资源碎 片问题,即:每个节点上的资源不可能全部被分配完,剩下的一 点可能不足以让任何任务运行,这样,便产生了类似于操作系统 中的内存碎片问题。  ④ YARN适合Long  running  job和数据分析类资源的调度,对于数 据库类等短运行时场景资源调度效果较差  ⑤ YARN采用了增量资源分配机制(当应用程序申请的资源暂时无 无 法保证时,为应用程序预留一个节点上的资源直到累计释放的空 闲资源满足应用程序需求),这种机制会造成浪费,但不会出现 饿死现象  ⑥ Mesos  和  YARN的调度器的扩展和定制在开发上都比较繁琐。  Gopher  China  2015  求解之路的探索  n 他们是否解决了我们的问题?  n No   ① Kubernetes0 码力 | 21 页 | 27.20 MB | 1 年前3 1.6 resource scheduling & container technology for financial service_yujunResource  Fairness)  调度机制。 YARN自带FIFO、Capacity  Scheduler和Fair  Scheduler(借鉴了 Mesos的DRF)。  ② Mesos中的DRF调度算法过分的追求公平,没有考虑到实际的应 用需求。在实际生产线上,往往需要类似于Hadoop中Capacity  Scheduler的调度机制,将所有资源分成若干个queue,每个 Mesos采用了Resource  Offer机制,这种调度机制面临着资源碎 片问题,即:每个节点上的资源不可能全部被分配完,剩下的一 点可能不足以让任何任务运行,这样,便产生了类似于操作系统 中的内存碎片问题。  ④ YARN适合Long  running  job和数据分析类资源的调度,对于数 据库类等短运行时场景资源调度效果较差  ⑤ YARN采用了增量资源分配机制(当应用程序申请的资源暂时无 无 法保证时,为应用程序预留一个节点上的资源直到累计释放的空 闲资源满足应用程序需求),这种机制会造成浪费,但不会出现 饿死现象  ⑥ Mesos  和  YARN的调度器的扩展和定制在开发上都比较繁琐。  Gopher  China  2015  求解之路的探索  n 他们是否解决了我们的问题?  n No   ① Kubernetes0 码力 | 21 页 | 27.20 MB | 1 年前3
 使用Go与redis构建有趣的应用(bitmap)、HyperLogLog、地理理坐标(GEO) • 内存存储和基于多路路复⽤用的事件响应系统,确保了了命令请求的执⾏行行速度和效率 • 丰富的附加功能:事务、Lua 脚本、键过期机制、键淘汰机制、多种持久化⽅方式(AOF、RDB、 RDB+AOF 混合) 特点 • 具有多种不不同的数据结构可⽤用,其中包括:字符串串、散列列、列列表、集合、有序集合、位图 (bitmap)、Hy (bitmap)、HyperLogLog、地理理坐标(GEO) • 内存存储和基于多路路复⽤用的事件响应系统,确保了了命令请求的执⾏行行速度和效率 • 丰富的附加功能:事务、Lua 脚本、键过期机制、键淘汰机制、多种持久化⽅方式(AOF、RDB、 RDB+AOF 混合) • 强⼤大的多机功能⽀支持:主从复制(单主多从)、Sentinel(⾼高可⽤用)、集群(基于 Raft 算法,多 主多从,内建⾼高可⽤用) (bitmap)、HyperLogLog、地理理坐标(GEO) • 内存存储和基于多路路复⽤用的事件响应系统,确保了了命令请求的执⾏行行速度和效率 • 丰富的附加功能:事务、Lua 脚本、键过期机制、键淘汰机制、多种持久化⽅方式(AOF、RDB、 RDB+AOF 混合) • 强⼤大的多机功能⽀支持:主从复制(单主多从)、Sentinel(⾼高可⽤用)、集群(基于 Raft 算法,多 主多从,内建⾼高可⽤用)0 码力 | 176 页 | 2.34 MB | 1 年前3 使用Go与redis构建有趣的应用(bitmap)、HyperLogLog、地理理坐标(GEO) • 内存存储和基于多路路复⽤用的事件响应系统,确保了了命令请求的执⾏行行速度和效率 • 丰富的附加功能:事务、Lua 脚本、键过期机制、键淘汰机制、多种持久化⽅方式(AOF、RDB、 RDB+AOF 混合) 特点 • 具有多种不不同的数据结构可⽤用,其中包括:字符串串、散列列、列列表、集合、有序集合、位图 (bitmap)、Hy (bitmap)、HyperLogLog、地理理坐标(GEO) • 内存存储和基于多路路复⽤用的事件响应系统,确保了了命令请求的执⾏行行速度和效率 • 丰富的附加功能:事务、Lua 脚本、键过期机制、键淘汰机制、多种持久化⽅方式(AOF、RDB、 RDB+AOF 混合) • 强⼤大的多机功能⽀支持:主从复制(单主多从)、Sentinel(⾼高可⽤用)、集群(基于 Raft 算法,多 主多从,内建⾼高可⽤用) (bitmap)、HyperLogLog、地理理坐标(GEO) • 内存存储和基于多路路复⽤用的事件响应系统,确保了了命令请求的执⾏行行速度和效率 • 丰富的附加功能:事务、Lua 脚本、键过期机制、键淘汰机制、多种持久化⽅方式(AOF、RDB、 RDB+AOF 混合) • 强⼤大的多机功能⽀支持:主从复制(单主多从)、Sentinel(⾼高可⽤用)、集群(基于 Raft 算法,多 主多从,内建⾼高可⽤用)0 码力 | 176 页 | 2.34 MB | 1 年前3
 Go Web编程游刃有余,动态类型语言的开发效率,以及静态类型的安全性。它也打 算成为现代的,支持网络与多核计算的语言。要满足这些目标,需要解决一些语言上的问题:一个富有表达能力但轻 量级的类型系统,并发与垃圾回收机制,严格的依赖规范等等。这些无法通过库或工具解决好,因此Go也就应运而生 了。 在本章中,我们将讲述Go的安装方法,以及如何配置项目信息。 目录 目录 links links 目录 参数值传递的 话, 在每次copy上面就会花费相对较多的系统开销(内存和时间)。所以当你要传递大的结构体的时候,用 指针是一个明智的选择。 Go语言中string,slice,map这三种类型的实现机制类似指针,所以可以直接传递,而不用取地址后传递 指针。(注:若函数需改变slice的长度,则仍需要取地址传递指针) defer defer Go语言中有种不错的设计,即延迟(defer)语句 一样的,但是我们可以实现很多种的逻辑,这样使得我 们的程序变得非常的灵活。 Panic和Recover Panic和Recover Go没有像Java那样的异常机制,它不能抛出异常,而是使用了panic和recover机制。一定要记住,你应当把它作为 最后的手段来使用,也就是说,你的代码中应当没有,或者很少有panic的东西。这是个强大的工具,请明智地使用 它。那么,我们应该如何使用它呢?0 码力 | 295 页 | 5.91 MB | 1 年前3 Go Web编程游刃有余,动态类型语言的开发效率,以及静态类型的安全性。它也打 算成为现代的,支持网络与多核计算的语言。要满足这些目标,需要解决一些语言上的问题:一个富有表达能力但轻 量级的类型系统,并发与垃圾回收机制,严格的依赖规范等等。这些无法通过库或工具解决好,因此Go也就应运而生 了。 在本章中,我们将讲述Go的安装方法,以及如何配置项目信息。 目录 目录 links links 目录 参数值传递的 话, 在每次copy上面就会花费相对较多的系统开销(内存和时间)。所以当你要传递大的结构体的时候,用 指针是一个明智的选择。 Go语言中string,slice,map这三种类型的实现机制类似指针,所以可以直接传递,而不用取地址后传递 指针。(注:若函数需改变slice的长度,则仍需要取地址传递指针) defer defer Go语言中有种不错的设计,即延迟(defer)语句 一样的,但是我们可以实现很多种的逻辑,这样使得我 们的程序变得非常的灵活。 Panic和Recover Panic和Recover Go没有像Java那样的异常机制,它不能抛出异常,而是使用了panic和recover机制。一定要记住,你应当把它作为 最后的手段来使用,也就是说,你的代码中应当没有,或者很少有panic的东西。这是个强大的工具,请明智地使用 它。那么,我们应该如何使用它呢?0 码力 | 295 页 | 5.91 MB | 1 年前3
 5.cgo 原理解析及优化实践maintainer • 玩过 DSL 编译器 • 对 LuaJIT、Go 有一些研究 目 录 背景介绍 01 cgo 工作机制 02 cgo 调度机制 03 CPU 优化 04 GC 优化 05 背景介绍 第一部分 网关发展历史 网关的扩展机制 什么是 MoE 举个例子 为什么需要 MoE Envoy  研发效能  良好的生态,上手门槛低  Wasm?Lua? 有什么挑战 业界少见 - 重度依赖 cgo  性能敏感  延时敏感 网关场景  cgo 是成熟 & 稳定的  唯一的 bug:trace 工具  性能挖掘空间大 cgo 工作机制 第二部分 Foreign Function Interface 函数调用 数据交互 抽象模型 1 2 3  对 PC 寄存器的修改  编译器完成地址指引  函数调用规约  Go C 函数  方便后续链接器寻址 常规编译  三种源码,分别编译,最终链接为一个可执行文件  asm 可以手写,C 不可以  go build -v -x -work cgo 调度机制 第三部分 GMP 调度模型 来源:https://learnku.com/articles/41728  OS 线程  GMP 环境  执行 Go 函数 两个调用方向 C 调用0 码力 | 45 页 | 5.74 MB | 1 年前3 5.cgo 原理解析及优化实践maintainer • 玩过 DSL 编译器 • 对 LuaJIT、Go 有一些研究 目 录 背景介绍 01 cgo 工作机制 02 cgo 调度机制 03 CPU 优化 04 GC 优化 05 背景介绍 第一部分 网关发展历史 网关的扩展机制 什么是 MoE 举个例子 为什么需要 MoE Envoy  研发效能  良好的生态,上手门槛低  Wasm?Lua? 有什么挑战 业界少见 - 重度依赖 cgo  性能敏感  延时敏感 网关场景  cgo 是成熟 & 稳定的  唯一的 bug:trace 工具  性能挖掘空间大 cgo 工作机制 第二部分 Foreign Function Interface 函数调用 数据交互 抽象模型 1 2 3  对 PC 寄存器的修改  编译器完成地址指引  函数调用规约  Go C 函数  方便后续链接器寻址 常规编译  三种源码,分别编译,最终链接为一个可执行文件  asm 可以手写,C 不可以  go build -v -x -work cgo 调度机制 第三部分 GMP 调度模型 来源:https://learnku.com/articles/41728  OS 线程  GMP 环境  执行 Go 函数 两个调用方向 C 调用0 码力 | 45 页 | 5.74 MB | 1 年前3
 Go 入门指南(The way to Go)言的函数式和面向对象编程进行透彻的讲解,包括如何使用 Go 语言来构造大型项目(第 9 章)。 在本书的第三部分,你将会学习到如何处理不同格式的文件(第 12 章)和如何在 Go 语言中巧妙地使用 错误处理机制(第 13 章)。然后我们会对 Go 语言中最值得称赞的设计 goroutine 和 channel 进行并发 和多核应用的基本技巧的讲解(第 14 章)。最后,我们会讨论如何将 Go 语言应用到分布式和 CSP(通信序列进程 Communicating Squential Processes)理 论影响的 Limbo 和 Newsqueak 的实践中借鉴了一些经验,并使用了和 Erlang 类似的机制。 这是一门完全开源的编程语言,因为它使用 BSD 授权许可,所以任何人都可以进行商业软件的开发而不需 要支付任何费用。 尽管为了能够让目前主流的开发者们能够对 Go 语言中的类 C 语言的语法感到非常亲切而易于转型,但是 关系而使得构建一个大型的项目需要长达几个小时的时间。人们越来越需要一门具有严格的、简洁的依赖 关系分析系统从而能够快速编译的编程语言。这正是 Go 语言采用包模型的根本原因,这个模型通过严格 的依赖关系检查机制来加快程序构建的速度,提供了非常好的可量测性。 整个 Go 语言标准库的编译时间一般都在 20 秒以内,其它的常规项目也只需要半秒钟的时间来完成编译 工作。这种闪电般的编译速度甚至比编译 C 语言或者0 码力 | 380 页 | 2.97 MB | 1 年前3 Go 入门指南(The way to Go)言的函数式和面向对象编程进行透彻的讲解,包括如何使用 Go 语言来构造大型项目(第 9 章)。 在本书的第三部分,你将会学习到如何处理不同格式的文件(第 12 章)和如何在 Go 语言中巧妙地使用 错误处理机制(第 13 章)。然后我们会对 Go 语言中最值得称赞的设计 goroutine 和 channel 进行并发 和多核应用的基本技巧的讲解(第 14 章)。最后,我们会讨论如何将 Go 语言应用到分布式和 CSP(通信序列进程 Communicating Squential Processes)理 论影响的 Limbo 和 Newsqueak 的实践中借鉴了一些经验,并使用了和 Erlang 类似的机制。 这是一门完全开源的编程语言,因为它使用 BSD 授权许可,所以任何人都可以进行商业软件的开发而不需 要支付任何费用。 尽管为了能够让目前主流的开发者们能够对 Go 语言中的类 C 语言的语法感到非常亲切而易于转型,但是 关系而使得构建一个大型的项目需要长达几个小时的时间。人们越来越需要一门具有严格的、简洁的依赖 关系分析系统从而能够快速编译的编程语言。这正是 Go 语言采用包模型的根本原因,这个模型通过严格 的依赖关系检查机制来加快程序构建的速度,提供了非常好的可量测性。 整个 Go 语言标准库的编译时间一般都在 20 秒以内,其它的常规项目也只需要半秒钟的时间来完成编译 工作。这种闪电般的编译速度甚至比编译 C 语言或者0 码力 | 380 页 | 2.97 MB | 1 年前3
共 37 条
- 1
- 2
- 3
- 4














