分布式任务系统cronsun
Technology 分布式任务系统 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基于 mesos 的容器调度框架
2017/8/3 基于 mesos 的容器调度框架 http://go-talks.appspot.com/github.com/huangnauh/slides/upone.slide#3 1/36 基于 mesos 的容器调度框架 Gopher 杭州 meetup 5 August 2017 黄励博(huangnauh) 又拍云 2017/8/3 基于 mesos 的容器调度框架 http://go-talks http://go-talks.appspot.com/github.com/huangnauh/slides/upone.slide#3 2/36 What's Upone 2017/8/3 基于 mesos 的容器调度框架 http://go-talks.appspot.com/github.com/huangnauh/slides/upone.slide#3 3/36 Mesos 介绍 Image credit: mesos 的容器调度框架 http://go-talks.appspot.com/github.com/huangnauh/slides/upone.slide#3 4/36 Mesos 调度 各个 Agent 启动后, 向 Master 注册,携带统计资源, 由 Master 决定给每个框架多少资源, 默认 采用分级主导资源公平算法 每个框架收到资源后, 根据自身任务需求, 调度任务的资源分配0 码力 | 36 页 | 2.49 MB | 1 年前32.2.3 Go语言的抢占式调度
Go 语⾔的抢占式调度 曹春晖 资深 Gopher ⽬ 录 Go 程序的启动 01 GMP 的本质 02 调度循环的实现 03 ⽼版本的抢占实现 04 新版本的抢占实现 05 当前的 Go 语⾔还有哪些问题 06 Go 程序的启动 第⼀部分 编译过程 Go 程序 hello.go 的编译过程: ⽂本 -> 编译 -> ⼆进制可执⾏⽂件 编译过程 编译:⽂本代码 -> 程序启动后创建的第⼀个线程; 获 取 CPU 核 ⼼ 数 初 始 化 内 置 数 据 结 构 开 始 执 ⾏ ⽤ 户 main 函 数 从这⾥开始 进⼊调度循环 GMP 的本质 第⼆部分 G、M、P 的本质 G:goroutine,⼀个计算任务。由需要执⾏的代码和其上下⽂组成,上下⽂ 包括:当前代码位置,栈顶、栈底地址,状态等。 M:machine,系统线程,执⾏实体,想要在 CPU 上执⾏代码,必须有线 才能执⾏代码,否则必须陷⼊休 眠(后台监控线程除外),你也可以将其理解为⼀种 token,有这个 token,才 有在物理 CPU 核⼼上执⾏的权⼒。 G、P、M 的全局⼤图 调度循环的实现 第三部分 调度循环 在这⾥输⼊标题 https://www.figma.com/proto/JYM6TcdzBx7WtanhcJX0rP/bootstrap-Copy?page-id=5106%3A2&node-0 码力 | 44 页 | 7.43 MB | 1 年前31.6 resource scheduling & container technology for financial service_yujun
务。 ② Condor采用集中式调度模式,且不能保障用户服务质量。 ③ 最小完成时间算法MCT(Minimum Completion Time)是以任意的顺序将任务映射到具有最早完成时间的主机上, 它并不保证任务被指派到执行它最快的主机上,而仅关心如何最小化任务完成时间,因而可能导致任务在资源上的 运行时间过长,从而潜在地增加了调度跨度。 ④ Min-Min算法, Min-Min算法,利用MCT矩阵,首先分别找到能够最短完成该任务的机器及最短完成时间,然后在所有的最短完成 时间中找出最小的最短完成时间对应的任务。Min-Min算法存在着一个很大的缺点,就是算法的资源负载均衡性能 (Load Balancing)不高。 ⑤ Max-Min算法与Min-Min算法相似,都是将任务指派给具有最小预测完成时间的主机,不同的是Max-Min算法从 所有任务的最小完成时间中选取一个最大值 所有任务的最小完成时间中选取一个最大值,然后进行相应任务。主机映射,之后重复此过程直至待调度任务集合 为空。 ⑥ 轮询调度(Round Robin Scheduling)算法就是以轮询的方式依次将请求调度不同的服务器,即每次调度执行i = (i + 1) mod n,并选出第i台服务器。轮叫调度算法假设所有服务器处理性能均相同,不管服务器的当前连接数和响 应速度。该算法相对简单,不适用于服务0 码力 | 21 页 | 27.20 MB | 1 年前3基于Go的大数据平台-党合萱
什什么是Pandora 简单 · 可信赖 Pandora架构图 Export Service API / Portal / 消息 消息 计算 计算 消息 导出任务 导出任务 导出任务 导出任务 导出任务 计算 消息 对象存储服务 HTTP MongoDB 时序数据库 ⽇日志检索服务 XSpark Report Studio 简单 · 可信赖 内容提要 • 系统设计分析与架构 master/server架构 • master/server间采⽤用golang rpc通信 • server上报⼼心跳证明⾃自⼰己存活,并汇报所 执⾏行行任务的情况 • master向server周期性下发任务,server 管理理⾃自身任务决定哪些要执⾏行行哪些要丢弃 简单 · 可信赖 master⾼高可⽤用 • master⾃自身⽆无状态,身份信息注册在zookeeper • master server注册⾃自身,防⽌止单机重复运⾏行行 • server注册每⼀一个任务,防⽌止任务被重复执⾏行行 • server⾼高可⽤用,节点故障时任务会被调度到其他正常节点 简单 · 可信赖 server⾼高可⽤用 • server注册⾃自身,防⽌止单机重复运⾏行行 • server注册每⼀一个任务,防⽌止任务被重复执⾏行行 • server⾼高可⽤用,节点故障时任务会被调度到其他正常节点 简单 · 可信赖 ⽔水平扩展0 码力 | 34 页 | 1.26 MB | 1 年前303. Golang 在隐私计算平台建设中的实践 - 刘敬
的控制以及隐私计算任务的协 作 • 链下节点间基于隐私计算算 法,使⽤用多⽅方数据进⾏行行密态计 算,利利⽤用密码学算法达到“明 ⽂文数据不不出本地,计算结果定 向汇集”的数据计算效果,解 决隐私数据难使⽤用的问题。 区块链节点 隐私计算节点 本地数据库 发起⽅方节点 隐私计算节点 本地数据库 参与⽅方节点A 隐私计算节点 本地数据库 参与⽅方节点B 1.创建任务 2.完善⼦子模型 在需要调⽤用其他算法时(OT,SS 等),都需要⼿手动编写⼀一遍类似的流 程,嵌套调⽤用逻辑冗余度⽐比较⾼高 ⼦子算法参与⽅方逻辑 ⼦子算法发起⽅方逻辑 创建⼦子算法任务 发送⼦子算法任务id 等待ack 调⽤用⼦子算法任务 等待接收⼦子算法任务id 加⼊入⼦子算法任务 发送ack 趣链科技版权所有©2016 – 2021 16 隐私计算算法通⽤用流程抽象 1 发起⽅方 参与⽅方1 参与⽅方n 3 返回值是返回到本⽅方给其他 元函数的⼊入参 • 需要发送给其他⽅方的数据, 通过context对象指定参与 ⽅方发送 Context中包含本次隐私计算任务的详细信息 趣链科技版权所有©2016 – 2021 18 隐私计算算法框架 协商算法 实例例版本 检查参与⽅方 任务状态 校验多⽅方输⼊入 格式是否匹配 参与⽅方掉线 检测 算 法 管 理理 异 常 处 理理 算 法 实 例例 ADD CMP0 码力 | 37 页 | 6.20 MB | 1 年前32.4 Go 1.4 runtime
配物理内存。 Microsoft Windows 系统不⽀支持 madvise。 3. Goroutine Scheduler 并发调度器 goroutine. 轻量级实现,支持创建成千上万并发任务。 线程多路复用。 极小自定义初始栈。 任务在多个线程间切换。 scheduler. 三种抽象模型协作。 M G P thread CPU core VM task 系统限制,允许调整。 runtime.GOMAXPROCS 调整 P 数量,会导致 G 任务队列重新分布。 M G P scheduler max = 10000 max = 256 runtime/debug.SetMaxThreads 超出限制,会导致进程崩溃。 newproc. 创建新并发任务。 go func() G newproc P queue M weakup move global queue fget malg stack newm. 创建系统线程执行任务。 M newm g0 stack newosproc(g0) system thread checkmcount sched.midle mget execute. 并发任务调度执行。 M P schedule local execute mstart netpoll0 码力 | 29 页 | 608.57 KB | 1 年前31.5 Go 语言构建高并发分布式系统实践
������/ � �� �������� ������� 长连接客户端 认证或注册的io调 用 加载离线消息 ����� 客户端关注的 阻塞io逻辑,放 心阻塞执行不 用担心阻塞线 程,调度器会 帮忙调度其他 可执行协程 ������� ��� 读 ���� �� ������ 内部接⼜⼝口发送数据 Golang开发 C语⾔言开发 按⽤用户来思考问题,按⽤用户数量开协程,对 thread原则,⼈人为控制线程数 量,使⽤用epoll+timefd+eventfd来做⽤用户io控 制,超时控制,对⽤用户的通知 io是阻塞执⾏行的,直接设置deadline,调度 器会对阻塞的协成进⾏行调度,deadline到了, 阻塞解除,超时出错 对于所有io操作建⽴立的fd映射到指定loop,同 时记录上下⽂文关系进⾏行回调设置,超时控制 使⽤用timefd 通过channel与其他⽤用户通信 go语⾔言在基础服务开发领域的优势? 我遭遇了哪些挑战? ⺫⽬目录 具有go特⾊色的运维 go语⾔言程序开发需要找到⼀一种平衡,既利⽤用协程带来的便利性⼜又做适当 集中化处理 套路:任务池集中数据合并请求、连接池+pipeline 利⽤用全双⼯工特性 经验⼀一 性能优化 性能优化:io集中处理 通信库 性能优化:io集中处理0 码力 | 39 页 | 5.23 MB | 1 年前3Go基础语法宝典
可能体现在底层就是五六个线程,Go语言内部实现了这些 goroutine 之间的内存共享。执 行 goroutine 只需极少的栈内存(大概是4~5KB),当然会根据相应的数据伸缩。也正因为如此,可同时 运行成千上万个并发任务。 goroutine 比 thread 更易用、更高效、更轻便。 goroutine 是通过Go的 runtime 管理的一个线程管理器。 goroutine 通过 go 关键字实现了,其实就 5将标识并发系统线程个数的 runtime.GOMAXPROCS 的初始值由1改为了 运行环境的 CPU核数 。 但在Go 1.5以前调度器仅使用单线程,也就是说只实现了并发。想要发挥多核处理器的并行,需要程序 中显式调用 runtime.GOMAXPROCS(n) 告诉调度器同时使用多个线程。 GOMAXPROCS 设置了同时运行逻 辑代码的系统线程的最大数量,并返回之前的设置。如果 n < 1 退出当前执行的goroutine,但是defer函数还会继续调用 Gosched : 让出当前goroutine的执行权限,调度器安排其他等待的任务运行,并在下次某个时候 从该位置恢复执行。 NumCPU : 返回 CPU 核数量 NumGoroutine : 返回正在执行和排队的任务总数 GOMAXPROCS : 用来设置可以并行计算的CPU核数的最大值,并返回之前的值。 错误处理 G0 码力 | 47 页 | 1020.34 KB | 1 年前3Hello 算法 1.1.0 Go版
能够完成简单算 法的复杂度分析。 2.2 迭代与递归 在算法中,重复执行某个任务是很常见的,它与复杂度分析息息相关。因此,在介绍时间复杂度和空间复杂 度之前,我们先来了解如何在程序中实现重复执行任务,即两种基本的程序控制结构:迭代、递归。 2.2.1 迭代 迭代(iteration)是一种重复执行某个任务的控制结构。在迭代中,程序会在满足一定的条件下重复执行某段 代码,直到这个条件不再满足。 求和函数的递归过程 虽然从计算角度看,迭代与递归可以得到相同的结果,但它们代表了两种完全不同的思考和解决问题的范 式。 ‧ 迭代:“自下而上”地解决问题。从最基础的步骤开始,然后不断重复或累加这些步骤,直到任务完成。 ‧ 递归:“自上而下”地解决问题。将原问题分解为更小的子问题,这些子问题和原问题具有相同的形式。 接下来将子问题继续分解为更小的子问题,直到基本情况时停止(基本情况的解是已知的)。 以上述求和函数为例,设问题 函数调用自身 时间效 率 效率通常较高,无函数调用开销 每次函数调用都会产生开销 内存使 用 通常使用固定大小的内存空间 累积函数调用可能使用大量的栈帧空间 适用问 题 适用于简单循环任务,代码直观、可读性 好 适用于子问题分解,如树、图、分治、回溯等,代码结构简洁、 清晰 Tip 如果感觉以下内容理解困难,可以在读完“栈”章节后再来复习。 那么,迭代和递归具有什么内在联0 码力 | 383 页 | 18.48 MB | 1 年前3
共 44 条
- 1
- 2
- 3
- 4
- 5