分布式任务系统cronsunTechnology 分布式任务系统 cronsun 苏创绩 @Copyright Sunteng Technology 目录 01 任务系统 02 分布式任务系统 03 cronsun 04 心得体会 @Copyright Sunteng Technology Part One 01 任务系统 @Copyright Sunteng Technology 任务 1. 什么时间 什么时间 2. 什么地点 3. 做什么事 @Copyright Sunteng Technology 一个简单的任务 0 8 * * * echo "Hello Gophers!" @Copyright Sunteng Technology cron crond crontab cmd1 cmd2 cmd3 ... @Copyright @Copyright Sunteng Technology 早期的 cron V7,1979 1. 在Version 7 Unix里是一个系统服务 2. 只用 root 运行任务 3. 算法简单直接 @Copyright Sunteng Technology 早期的 cron 运行逻辑 1. 读 /usr/lib/crontab 文件 2. 如果有命令要在当前时间执行,就用0 码力 | 48 页 | 1.52 MB | 1 年前3
03. Golang 在隐私计算平台建设中的实践 - 刘敬的控制以及隐私计算任务的协 作 • 链下节点间基于隐私计算算 法,使⽤用多⽅方数据进⾏行行密态计 算,利利⽤用密码学算法达到“明 ⽂文数据不不出本地,计算结果定 向汇集”的数据计算效果,解 决隐私数据难使⽤用的问题。 区块链节点 隐私计算节点 本地数据库 发起⽅方节点 隐私计算节点 本地数据库 参与⽅方节点A 隐私计算节点 本地数据库 参与⽅方节点B 1.创建任务 2.完善⼦子模型 有⼤大量量的数据序列列化以及异步转同步 的⽹网络流程代码,算法本身不不应该关 注⽹网络相关逻辑 嵌套调⽤用其他算法复杂 在需要调⽤用其他算法时(OT,SS 等),都需要⼿手动编写⼀一遍类似的流 程,嵌套调⽤用逻辑冗余度⽐比较⾼高 发起⽅方逻辑 参与⽅方逻辑 趣链科技版权所有©2016 – 2021 15 嵌套调⽤用其他算法 同步写法存在问题 算法效率低下 计算逻辑和⽹网络io是串串⾏行行的,不不相关 的⽹网络流程代码,算法本身不不应该关 注⽹网络相关逻辑 嵌套调⽤用其他算法复杂 在需要调⽤用其他算法时(OT,SS 等),都需要⼿手动编写⼀一遍类似的流 程,嵌套调⽤用逻辑冗余度⽐比较⾼高 ⼦子算法参与⽅方逻辑 ⼦子算法发起⽅方逻辑 创建⼦子算法任务 发送⼦子算法任务id 等待ack 调⽤用⼦子算法任务 等待接收⼦子算法任务id 加⼊入⼦子算法任务 发送ack 趣链科技版权所有©2016 –0 码力 | 37 页 | 6.20 MB | 1 年前3
1.5 Go 语言构建高并发分布式系统实践400台物理机,9个独⽴立集群,国内外近10个IDC 运维管理的go语⾔言编写的常驻service服务实例接近3000个。 业务场景多样: ⽀支持聊天场景业务,稳定⽀支持多款聊天业务app 单通道多app复⽤用 上⾏行通道,回调⽀支持 对智能硬件产品,提供定制化消息推送与转发服务 性能满⾜足需要: 线上单机最⾼高160w⻓长连接 (24核 E5-2630 @ 2.30GHz 64G内存 ) qps在2~5w(取 Linux Web Windows Flash Iframe for ever 写 ������/ � �� �������� ������� 长连接客户端 认证或注册的io调 用 加载离线消息 ����� 客户端关注的 阻塞io逻辑,放 心阻塞执行不 用担心阻塞线 程,调度器会 帮忙调度其他 可执行协程 ������� ��� 读 ���� �� ������ ne到了, 阻塞解除,超时出错 对于所有io操作建⽴立的fd映射到指定loop,同 时记录上下⽂文关系进⾏行回调设置,超时控制 使⽤用timefd 通过channel与其他⽤用户通信 使⽤用eventfd事件通知的⽅方式,根据epoll获取 的fd绑定的回调函数和参数进⾏行回调操作 对外的通信采取阻io或者也可以go出去,不 阻塞主循环 对外通信信全局消息list,在映射到的 eventloop上开连接池进⾏行消耗0 码力 | 39 页 | 5.23 MB | 1 年前3
3.云原生边云协同AI框架实践Centralized Client devices Edge AI • 随着大模型的发展,AI 计算对算力需求大 幅且快速增长 AI应用到越来越多的边缘场景 分布式协同AI 概念 将人工智能相关的部分任务部署到边缘设备,基于边缘设备、边缘服务 器、云服务器,利用分布式乃至分布式协同方式实现人工智能的技术 数据在边缘产生 边侧逐步具备AI能力 分布式协同AI 核心驱动力 分布式协同AI核心驱动力 开源分布式协同AI框架KubeEdge-Sedna 1. GlobalCoordinator ⚫ 统一边云协同AI任务管理 ⚫ 跨边云协同管理与协同 ⚫ 中心配置管理 2. LocalController ⚫ 特性本地流程控制 ⚫ 本地通用管理: 模型, 数据集等 3. Worker ⚫ 执行训练或推理任务, 训练/推理程序, 基于现有AI框 架开 ⚫ 按需启动, docker容器或function Worker Worker 边侧推理 Lib 边侧训练 Model Worker 云侧 推理 Lib 参数 聚合 云侧 训练 Model Global Manager AI任务协调 AI任务管理 模型/数据集管理 Cloud Node Messaging over KubeEdge 终身学习 管理 边云协同AI框架 Sedna架构 Cloud EdgeNode Model0 码力 | 37 页 | 2.36 MB | 1 年前3
Golang 101(Go语言101 中文版) v1.21.a编程和程序代码元素 简单来讲,编程可以看作是以各种方式控制和组合计算机运行中的各种操作, 以达到各种各样的目的。 一个操作可能从一个硬件设备读取、或者向一个硬件 设备写入一些数据,从而完成一个特定的任务。 对于现代计算机来说,最基本 的操作是底层计算机指令,比如CPU和GPU指令。 常见的硬件设备包括内存、 磁盘、网卡、显卡,显示器、键盘和鼠标等。 直接操控底层计算机指令进行编程是非常繁琐和容易出错的。 声明的类型一样。 但如果一个实 参值的类型和其对应的形参声明的类型不一致,则此实参必须能够隐式转换到 其对应的形参的类型。 如果一个函数带有返回值,则它的一个调用被视为一个表达式。如果此函数返 回多个结果,则它的每个调用被视为一个多值表达式。 一个多值表达式可以被 同时赋值给多个目标值(数量必须匹配,各个输出结果被赋值给相对应的目标 值)。 下面这个例子完整地展示了如何调用几个已经声明了的函数。 Time的值。 UnixNano是类型time.Time的一个方法。 我们可以把方法看作是特殊的函 数 。 方 法 将 在 Go 中 的 方 法 ( 第 22 章 ) 一 文 中 详 述 。 方 法 调 用 aTime.UnixNano()将返回从UTC时间的1970年一月一日到aTime所表示的时 间之间的纳秒数。 返回结果的类型为int64,这也是rand.Seed函数的参数 类型(注意:rand0 码力 | 608 页 | 1.08 MB | 1 年前3
Golang 101(Go语言101 中文版) v1.21.a编程和程序代码元素 简单来讲,编程可以看作是以各种方式控制和组合计算机运行中的各种操作, 以达到各种各样的目的。 一个操作可能从一个硬件设备读取、或者向一个硬 件设备写入一些数据,从而完成一个特定的任务。 对于现代计算机来说,最 基本的操作是底层计算机指令,比如CPU和GPU指令。 常见的硬件设备包括 内存、磁盘、网卡、显卡,显示器、键盘和鼠标等。 直接操控底层计算机指令进行编程是非常繁琐和容易出错的。 // 20 自增和自减操作符 和很多其它流行语言一样,Go也支持自增(++)和自减(--)操作符。 不过 和其它语言不一样的是,自增(aNumber++)和自减(aNumber--)操作没有返 回值, 所以它们不能当做表达式(第11章)来使用。 另一个显著区别是,在 Go中,自增(++)和自减(--)操作符只能后置,不能前置。 一个例子: 1| package main 2| 3| func 声明的类型一样。 但如果一个 实参值的类型和其对应的形参声明的类型不一致,则此实参必须能够隐式转换 到其对应的形参的类型。 如果一个函数带有返回值,则它的一个调用被视为一个表达式。如果此函数返 回多个结果,则它的每个调用被视为一个多值表达式。 一个多值表达式可以 被同时赋值给多个目标值(数量必须匹配,各个输出结果被赋值给相对应的目 标值)。 下面这个例子完整地展示了如何调用几个已经声明了的函数。0 码力 | 821 页 | 956.82 KB | 1 年前3
Golang 101(Go语言101 中文版) v1.21.a验的程序员来说,读懂一份Go源码也不是一件难事。 目前,使用最广泛的Go编译器由Go官方设计和开发团队维护。 以后我们将称此编译 器为标准编译器。标准编译器也常常称为gc(是Go compiler的缩写,不是垃圾回 收garbage collection的缩写)。 Go官方设计和开发团队也维护着另外一个编译 器,gccgo。 gccgo是gcc编译器项目的一个子项目。 gccgo的使用广泛度大不 如gc, 编程和程序代码元素 简单来讲,编程可以看作是以各种方式控制和组合计算机运行中的各种操作,以达 到各种各样的目的。 一个操作可能从一个硬件设备读取、或者向一个硬件设备写入 一些数据,从而完成一个特定的任务。 对于现代计算机来说,最基本的操作是底层 计算机指令,比如CPU和GPU指令。 常见的硬件设备包括内存、磁盘、网卡、显卡, 显示器、键盘和鼠标等。 直接操控底层计算机指令进行编程是非常繁琐和容易出错的。 0" 27| } 28| 29| func doNothing(string, int32) { 30| } 从上例可以看出,一个函数的声明可以出现在它的调用之前,也可以出现在它的调 用之后。 一个函数调用可以被延迟执行或者在另一个协程(goroutine,或称绿色线程)中执 行。 后面的一文(第13章)将对这两个特性进行详解。 函数调用的退出阶段 在Go中,当一个函数0 码力 | 591 页 | 21.40 MB | 1 年前3
Go 入门指南(The way to Go)21 世纪的 C 语言! 作为一门系统编程语言,你不应该为 Go 语言的大多数代码示例和练习都和控制台有着密不可分的关系而 感到惊奇,因为提供平台依赖性的 GUI(用户界面)框架并不是一个简单的任务。有许多由第三方发起的 GUI 框架项目正在如火如荼地进行中,或许我们会在不久的将来看到一些可用的 Go 语言 GUI 框架。不过 现阶段的 Go 语言已经提供了大量有关 Web 方面的功能,我们可以通过它强大的 旧运行在某种意义上的虚拟机,以此来实现高效快速的垃圾回收(使用了一个简单的标记-清除算法)。 尽管垃圾回收并不容易实现,但考虑这将是未来并发应用程序发展的一个重要组成部分,Go 语言的设计 者们还是完成了这项艰难的任务。 Go 语言还能够在运行时进行反射相关的操作。 使用 go install 能够很轻松地对第三方包进行部署。 此外,Go 语言还支持调用由 C 语言编写的海量库文件(第 3.9 节),从而能够将过去开发的软件进行快 在打造一个高效、低延迟的并发回收器。目前 gccgo 还没有回收器,同时适用 gc 和 gccgo 的新回收器 正在研发中。使用一门具有垃圾回收功能的编程语言不代表你可以避免内存分配所带来的问题,分配和回 收内容都是消耗 CPU 资源的一种行为。 Go入门指南 - 19 - 本文档使用 看云 构建 Go 的可执行文件都比相对应的源代码文件要大很多,这恰恰说明了 Go 的 runtime 嵌入到了每一个可执0 码力 | 380 页 | 2.97 MB | 1 年前3
Go 入门指南(The way to Go)3 协程的同步:关闭通道-测试阻塞的通道 14.4 使用 select 切换协程 14.5 通道、超时和计时器(Ticker) 14.6 协程和恢复(recover) 14.7 新旧模型对比:任务和worker 14.8 惰性生成器的实现 14.9 实现 Futures 模式 第 15 章 网络,模板和网页应用 15.1 tcp服务器 15.2 一个简单的网页服务器 15.3 访问并读取页面 21 世纪的 C 语言! 作为一门系统编程语言,你不应该为 Go 语言的大多数代码示例和练习都和控制台有着密不可分的关系而感到惊奇, 因为提供平台依赖性的 GUI(用户界面)框架并不是一个简单的任务。有许多由第三方发起的 GUI 框架项目正在如 火如荼地进行中,或许我们会在不久的将来看到一些可用的 Go 语言 GUI 框架。不过现阶段的 Go 语言已经提供了 大量有关 Web 方面的功能,我们可以通过它强大的 虚拟机,以此来实现高效快速的垃圾回收(使用了一个简单的标记-清除算法)。 尽管垃圾回收并不容易实现,但考虑这将是未来并发应用程序发展的一个重要组成部分,Go 语言的设计者们还是完成 了这项艰难的任务。 Go 语言还能够在运行时进行反射相关的操作。 使用 go install 能够很轻松地对第三方包进行部署。 此外,Go 语言还支持调用由 C 语言编写的海量库文件(第 3.9 节),从而能够将过去开发的软件进行快速迁移。0 码力 | 466 页 | 4.44 MB | 1 年前3
Golang在接入层长连接服务中的实践-黄欣高频度的数据交互 • 坐标数据 • 计价数据 – App和服务端双向可达 • 上行(抢单) • 下行(派单) 背景—why golang? • 开发效率 • 异步模型,同步原语 – C:代码上各种回调、思维中保持冷静 – Go:代码上同步,思维自然 • 性能够用,工具齐全 – 100w?10w?~~ – Memprof、cpuprof~ • 社区活跃,发展迅猛 背景—使用现状 • 每天服务于千万级别的司机,数亿的用户 Channel使用优化 心得—timer优化 • 为什么需要优化? – 万级别的连接 – 每个连接上大量的定时任务(心跳检测,注册检测,认证检测) 实际情况:当10w左右连接,什么数据不收发,只有定时器检测心跳超时,cpu 能耗掉一个core • 怎么优化? – 特点: • 秒级别定时任务 • 范围最多60s – 方案: • 时间轮 • 实现 – Channel 心得—channel使用优化0 码力 | 31 页 | 1.67 MB | 1 年前3
共 48 条
- 1
- 2
- 3
- 4
- 5













