声明式自愈系统——高可用分布式系统的设计之道-王昕声明式自愈系统——高可用分布式 系统的设计之道 王昕 高级技术专家 声明式自愈系统——高可用分布式 系统的设计之道 王昕 高级技术专家 自我介绍 王昕,阿里中间件技术团队高级技术专家,阿里云开放云平台布道师。具有10多年软件 系统开发和架构经验,在分布式系统领域经验丰富,长期参与高可用中间件系统、云平 台基础管理系统和云原生自动运维系统的构建。在国内外有10多项授权和在审软件技术 专题分享。 目录 Ø 分布式系统面临的高可用问题 Ø 设计和验证高可用分布式系统的工具与方法 Ø 设计和验证高可用分布式系统的案例分享 Ø 高可用系统的最佳实践总结 无状态分布式系统的高可用问题 处理消息的服务节点可以随机选择 不必处理数据复制和同步的问题 系统容量和高可用能力可以同步提升 服务节点可以随意迁移,不必固定 IP 和存储 有状态分布式系统的高可用问题 一致性 可用性 will eventually happen •e.g. is able to receive message 目录 Ø 分布式系统面临的高可用问题 Ø 设计和验证高可用分布式系统的工具与方法 Ø 设计和验证高可用分布式系统的案例分享 Ø 高可用系统的最佳实践总结 依据声明式自愈的理念设计系统 有一个统一的状 态持久化接口, 所有有状态模块 通过统一的接口 对应统一的对象 模型 配置模块对象只0 码力 | 44 页 | 2.47 MB | 1 年前3
MoonBit月兔编程语言 现代编程思想 第七课 命令式编程:命令,可变数据结构,循环现代编程思想 命令式编程 Hongbo Zhang 1 函数式编程 到此为⽌,我们介绍的可以归类于函数式编程的范畴 对每⼀个输⼊,有着固定的输出 对于标识符,我们可以直接⽤它所对应的值进⾏替代⸺引⽤透明性 开发实⽤的程序,我们需要⼀些计算之外的�副作⽤� 进⾏输⼊输出 修改内存中的数据等 这些副作⽤可能导致多次执⾏的结果不⼀致 2 引⽤透明性 我们可以定义如下数据绑定和函数 print(String) -> Unit fn println(String) -> Unit 命令的类型也是单值类型 1. fn do_nothing() { // 返回值为单值类型时可以省略返回类型声明 2. let _x = 0 // 结果为单值类型,符合函数定义 3. } 7 变量 在⽉兔中,我们可以在代码块中⽤ let mut 定义临时变量 1. let mut x = 1 2. println(i.to_string()) 8. } 9. } 20 ⽉兔的检查 ⽉兔会检查⼀个变量是否被修改,可以避免出现循环忘记加迭代条件 ⽉兔也会检查函数返回结果是否与类型声明相同,可以避免错误的返回类型声明 21 可变数据 使⽤场景⼴泛 直接操作程序外环境,如硬件等 ⼀些情况下性能更好,如随机访问数组等 可以构建部分复杂数据结构,如图 重复利⽤空间(原地修改) 可变数据并不总是与引⽤透明性冲突0 码力 | 23 页 | 780.46 KB | 1 年前3
Go Web编程《Go Web 编程》 《Go Web 编程》 因为自己对Web开发比较感兴趣,所以最近抽空在写一本开源的书籍《Go Web编程》《Build Web Application with Golang》。写这本书不表示我能力很强,而是我愿意分享,和大家一起分享Go写Web应用的一些东西。 对于从PHP/Python/Ruby转过来的同学了解Go怎么写Web应用开发的 对于从C/C++转过来的同学了解Web到底是怎么运行起来的 这样读者就可以把相应的Markdown文件编译成html文件,执行go build build.go,执行生成的文件,就会在底目 录下生成相应的html文件 交流 交流 欢迎大家加入QQ群:259316004 《Go Web编程》专用交流群 大家有问题还可以上德问上一起交流学习:http://www.dewen.org/topic/165 致谢 致谢 首先要感谢Golang-China的QQ群102319854 (编写go开发工具Vim和Emacs的设置) Oling Cat(review代码) Wenlei Wu(提供一些图片展示) polaris(review书) 雨痕(review第二章) 授权许可 授权许可 1 除特别声明外,本书中的内容使用CC BY-SA 3.0 License(创作共用 署名-相同方式共享3.0许可协议)授权,代码 遵循BSD 3-Clause License(3项条款的BSD许可协议)。 开始阅读0 码力 | 295 页 | 5.91 MB | 1 年前3
基于 Rust 语言编写的可编程的全球分布式 MQTT 服务器 王文庭王⽂庭 基于边缘架构的可编程MQTT服务 CONTENTS 背景说明 O1 O2 O4 HPMQ简介 HPMQ开发说明 HPMQ未来规划 O3 1. 背景说明 物联⽹时代带来的变化 海量 连⽹ 设备 海量数据处理? 设备安全性? 共性:边缘 原来以数据中 ⼼为核⼼的云 端架构是否还 满⾜需求? 01 02 03 边缘架构 ⼀种分布式计 算架构 构成边缘 计算架构 关的计算(处理/存储)并提 供相应的查询功能 边缘架构 物联⽹设备的纽带 2. HPMQ 简介 HPMQ是基于Rust语⾔开发的 下⼀代可编程边缘分布式 MQTT软件,主要有以下⼏个 核⼼特性: • Geo-Distributed • 可编程性 • 云边⼀体化 • 兼容异构设备 HPMQ (Hyperconverged Programmable MQTT) • 性能(C/C++/Rust) 只能做到在数据中⼼内相关的分布式扩展,⽆法直接进⾏ 全球节点的扩展 • 复杂的容灾⽅案 为什么需要geo-distributed 传统⽅案存在有问题 解决⽅案 geo-distributed架构 + 调度 如何管理分布式⽹络 我们主要基于eclipse-zenoh来做⼆次开 发,eclipse-zenoh是⼀款很优秀的rust 语⾔编写的,基于边缘架构的,开源分 布式消息服务基础架构,它帮我们解决0 码力 | 31 页 | 3.95 MB | 1 年前3
分布式任务系统cronsun@Copyright Sunteng Technology 分布式任务系统 cronsun 苏创绩 @Copyright Sunteng Technology 目录 01 任务系统 02 分布式任务系统 03 cronsun 04 心得体会 @Copyright Sunteng Technology Part One 01 任务系统 @Copyright Sunteng Technology Part Two 02 分布式任务系统 @Copyright Sunteng Technology 分布式系统的特点 1. 分布性 2. 对等性 3. 并发性 4. 缺乏全局时钟 5. 故障总是会发生 @Copyright Sunteng Technology 分布式 cron 分布式crond 分布式crontab cmd1 cmd2 cmd3 Chronos Chronos 是一个运行在 Mesos 之上的具有分布式容错特性的作业调度器 @Copyright Sunteng Technology Dkron 分布式高可用的任务调度系统 @Copyright Sunteng Technology 我眼里的“西施” 1. 可替代 cron 2. 分布式、高可用 3. 支持多种任务属性 4. 易用 5. 易部署 @Copyright0 码力 | 48 页 | 1.52 MB | 1 年前3
MoonBit月兔编程语言 现代编程思想 第九课 接口现代编程思想 接⼝ Hongbo Zhang 1 回顾 第六课:定义平衡⼆叉树 我们定义⼀个更⼀般的⼆叉搜索树,允许存放任意类型的数据 1. enum Tree[T] { 2. Empty 3. Node(T, Tree[T], Tree[T]) 4. } 5. 6. // 我们需要⼀个⽐较函数来⽐较值的⼤⼩以了解顺序 7. // 负数表示⼩于,0表示等于,正数表示⼤于 8 Self) -> Int // Self代表实现该接⼝的类型 3. } 4. trait Default { 5. default() -> Self 6. } ⽉兔中的接⼝是结构化的 ⽆需声明为特定的接⼝实现⽅法,类型本身实现⽅法即可 4 接⼝ Trait 我们可以在泛型的参数上添加接⼝的要求 限制参数的类型: <类型参数> : <接⼝> 在函数中使⽤接⼝定义的⽅法: <类型参数>::<⽅法名> ⽆需进⾏深层嵌套,⽅便理解 11. let _five = plus_two(plus_one(plus_one({value: 1}))) 12. } 8 派⽣定义 简单的接⼝可以⾃动⽣成,在定义最后声明 derive(<接⼝>) 即可 1. struct BoxedInt { value : Int } derive(Default, Eq, Compare, Debug) 需要数据结构内部的数据同样实现接⼝0 码力 | 16 页 | 346.04 KB | 1 年前3
Java 应用与开发 - Servlet 编程Servlet 概述 Servlet 编程 Servlet 生命周期 Servlet 配置 Servlet 部署 Servlet 示例 Java 应用与开发 Servlet 编程 王晓东 wangxiaodong@ouc.edu.cn 计算机科学与技术系 November 13, 2018 大纲 Web 基础 Servlet 概述 Servlet 编程 Servlet 生命周期 Servlet 的概念、体系结构及生命周期管理基本原理。 3. 掌握 Servlet 的编程及配置方法,了解 Servlet 的在 Tomcat 服务器上的部署方式(war)。 大纲 Web 基础 Servlet 概述 Servlet 编程 Servlet 生命周期 Servlet 配置 Servlet 部署 Servlet 示例 大纲 Web 基础 Servlet 概述 Servlet 编程 Servlet 生命周期 Servlet Servlet 编程 Servlet 生命周期 Servlet 配置 Servlet 部署 Servlet 示例 Servlet 是主流 Web 框架的基础 JSP 和 JSF 都是建立在 Servlet 基础之上的,其他 Web 框架如 Struts、WebWork 和 Spring MVC 都是基于 Servlet。 大纲 Web 基础 Servlet 概述 Servlet 编程 Servlet0 码力 | 50 页 | 725.36 KB | 1 年前3
Java 应用与开发 - 线程编程大纲 线程基础 线程控制 线程的同步 Java 应用与开发 线程编程 王晓东 wangxiaodong@ouc.edu.cn 中国海洋大学 November 6, 2018 大纲 线程基础 线程控制 线程的同步 学习目标 1. 线程基础:理解任务调度、进程和线程,掌握其联系和区别; 掌握 Java 的线程模型,以及如何创建线程;理解后台线程。 2. 线程控制:理解线程的生命周期,明白各阶段的含义;掌握 线程休眠 线程让步 线程挂起与恢复 线程等待与通知 线程的同步 大纲 线程基础 线程控制 线程的同步 相关知识回顾 概念回顾 O 任务调度 ▶ 大部分操作系统的任务调度是采用时间片轮转的抢占式调度 方式,一个任务执行一小段时间后强制暂停去执行下一个任 务,每个任务轮流执行。 ▶ CPU 的执行效率非常高,时间片非常短,在各个任务之间 快速地切换,让人感觉像是多个任务在“同时进行”,这也 就是我们所说的并发。 线程休眠 线程让步 线程挂起与恢复 线程等待与通知 线程的同步 大纲 线程基础 线程控制 线程的同步 后台线程 后台线程 O 相关概念 后台处理 是指在分时处理或多任务系统中,当实时、会话式、高 优先级或需迅速响应的计算机程序不再使用系统资源时,计算机 去执行较低优先级程序的过程。批量处理、文件打印通常采取后 台处理的形式。 后台线程 是指那些在后台运行的,为其他线程提供服务的功能, 如0 码力 | 82 页 | 1010.73 KB | 1 年前3
快速微服务化编程体验0 码力 | 12 页 | 2.67 MB | 1 年前3
C++高性能并行编程与优化 - 课件 - 08 CUDA 开启的 GPU 编程CUDA 开启的 GPU 编程 by 彭于斌( @archibate ) 往期录播: https://www.bilibili.com/video/BV1fa411r7zp 课程 PPT 和代码: https://github.com/parallel101/course 前置条件 • 学过 C/C++ 语言编程。 • 理解 malloc/free 之类的概念。 • 熟悉 STL 中的容器、函数模板等。 device ; device 可以调用 device 。 声明为内联函数 • 注意, inline 在现代 C++ 中的效果是声明一个函数为 weak 符号,和性能优化意义上的内联无关。 • 优化意义上的内联指把函数体直接放到调用者那里去。 • 因此 CUDA 编译器提供了一个“私货”关键字: __inline__ 来 声明一个函数为内联。不论是 CPU 函数还是 GPU 都可以使 用,只要你用的 CUDA 编译器。 GCC 编译器相应的私货则 是 __attribute__((“inline”)) 。 • 注意声明为 __inline__ 不一定就保证内联了,如果函数太大编 译器可能会放弃内联化。因此 CUDA 还提供 __forceinline__ 这个关键字来强制一个函数为内联。 GCC 也有相应的 __attribute__((“always_inline”))0 码力 | 142 页 | 13.52 MB | 1 年前3
共 595 条
- 1
- 2
- 3
- 4
- 5
- 6
- 60













