KubeCon2020/大型Kubernetes集群的资源编排优化0 码力 | 27 页 | 3.91 MB | 1 年前3
Zadig 面向开发者的云原生 DevOps 平台YAML/Chart 模板管理数百微服务 • 每个技术栈抽象一套构建模板 • 运维统一工作流规范,开发自主使用 • 跨多项目复用模板 扫码查看易快报案例 强大免运维的模板库 • 系统纬度:集群、项目、服务、环境、工作流 • 项目纬度:构建、测试、部署, DevOps 指标 • 迭代纬度:需求到发布效率、质量分析 • 效能度量:耗时分析、通过率统计、趋势分析 客观精准的效能洞察 • 师管理发布流程和基础设施,导 致资源浪费和效率低下 Zadig 平台工程模式 工程规模数据: • 1500+ 产研工程师 Vs. 2 人运维 • 50 + 个 Kubernetes 全球集群 • 300+ 个数字产品(资产沉淀) • 1600+ 条自动化工作流(全域) • 900+ 个服务化运行环境 通过整合业务、产品、研发、运维等角色端到端的协作过程,打造出提升研发效能的一站式研发协作平台。 在 Rancher 上手动替换版本 3. 不透明的测试环境导致大量问题 4. 为每一次部署维护一个 Chart 版本 现状 效能提升场景: 2K+ 微服务、多语言、 Helm 、 K8s 多集群 1. 开发流程 提交代码到 Feature 分支 -> GitLab-CI 自动构建打包 Chart (写一堆复杂 的脚本 ) -> -> Rancher 上手动替换0 码力 | 59 页 | 81.43 MB | 1 年前3
基于 Rust Arrow Flight 的物联网和时序数据传输及转换工具 霍琳贺Visualization Tool Grafana Web Based Management Tool 21,400+ 4,600+ 18,500+ 社区版开源 2019.07.12 集群版开源 2020.08.03 云原生版开源 2022.08.13 注 : GitHub 为截止 2023 年 5 月数据 TDengine 的 核 心 代 码 全 部 开 源 www.github `location` VARCHAR(24)) TDengine - 业务模式 开源版 企业版 云服务版 核心功能开源 • SQL 支持 • 无模式写入 • 缓存 • 流计算 • 数据订阅 • 集群、高可用 高可靠、线性扩展 + 专业技术服务 • 边云数据复制 • 跨云 / 异地数据复制 • 增量备份 • 多级存储 • 工业数据接入 全托管时序数据 管理云服务平台 • 全托管服务 差 • 大量设备大量数据归集存储,存储压力大 • 数据总线 / 消息队列消息接入,定制化程度要求高 • 数据业务逻辑自定义需求强 • 一定的实时数据分析能力 taosX - 功能路线图 集群运维 数据接入 流式处理 流式处理 数据分享 开放平台 • Backup/Restore • Replication • Migration • Data Sources • IoT Protocols0 码力 | 29 页 | 2.26 MB | 1 年前3
C++高性能并行编程与优化 - 课件 - 14 C++ 标准库系列课 - 你所不知道的 set 容器size_t count(int const &val) const; 从 set 中删除指定元素 • set.erase(x) 可以删除集合中值为 x 的元素。 • erase 返回一个整数,表示被他删除元素的个 数。 • 个数为 0 就说明集合中没有该元素,删除失败 。 • 个数为 1 就说明集合中存在该元素,删除成功 。 • 这里的“个数”和 count 的情况很像,因为 set 中不会有重复的元素,所以 中不会有重复的元素,所以 erase 只可能返回 0 或 1 ,表示是否删除成功。 • size_t erase(int const &val); 从 set 中删除指定元素 • erase 还支持迭代器作为参数。 • set.erase(it) 可以删除集合位于 it 处的 元素。用法举例: • set.erase(set.find(x)) 会删除集合中值 为 x 的元素,和 set.erase(x) erase(x) 等价。 • set.erase(set.begin()) 会删除集合中最 小的元素(因为 set 具有自动排序的特 性,排在最前面的元素一定是最小的那 个) • set.erase(std::prev(set.end())) 会删除 集合中最大的元素(因为自动排序的特性 ,排在最后面的元素一定是最大的那个) • iterator erase(iterator pos); 1 2 3 40 码力 | 83 页 | 10.23 MB | 1 年前3
C++高性能并行编程与优化 - 课件 - 02 现代 C++ 入门:RAII 内存管理有需要,用户也可以自定义拷贝构造函数 。 • 比如: 不想要编译器自动生成拷贝构造函数怎么办: = delete • 如果想要让编译器不要自动生成拷贝构造函数,可以用 = delete 语法删除: • 注: = delete 和 = default 是一对。如果你不确定某个函数有没有被编译器默认生成,可以都用 这两个显式地声明一下。 编译器默认生成的特殊函数:拷贝赋值函数 • 除了 三五法则:规则类怪谈 1. 如果一个类定义了解构函数,那么您必须同时定义 或删除拷贝构造函数和拷贝赋值函数,否则出错。 2. 如果一个类定义了拷贝构造函数,那么您必须同时 定义或删除拷贝赋值函数,否则出错,删除可导致 低效。 3. 如果一个类定义了移动构造函数,那么您必须同时 定义或删除移动赋值函数,否则出错,删除可导致 低效。 4. 如果一个类定义了拷贝构造函数或拷贝赋值函数, 那 被解构而 v2 仍在被使用的情况。 • 这就是为什么“如果一个类定义了解构函数,那么 您必须同时定义或删除拷贝构造函数和拷贝赋值函 数,否则出错。” 解决方案:要么删除 • 最简单的办法是,直接禁止用户拷贝这个 类的对象,在 C++11 中可以用 = delete 表示这个函数被删除,让编译器不要自动 生成一个默认的(会导致指针浅拷贝的) 拷贝构造函数了。 • 这样就可以在编译期提前发现错误:0 码力 | 96 页 | 16.28 MB | 1 年前3
C++高性能并行编程与优化 - 课件 - 13 C++ STL 容器全解之 vector0, 0}; • void resize(size_t n); vector 容器: resize • 调用 resize(n) 的时候,如果数组已有超过 n 个元素,假设是 m 个,则他会删除多出来的 m - n 个元素,前 n 个元素会保持不变。 • vectora = {1, 2, 3, 4, 5, 6}; • a.resize(4); • 等价于: • vector const &val); vector 容器: resize • 调用第二个重载 resize(n, val) 的时候,如果数组 已有超过 n 个元素,假设是 m 个,则第二参数 val 会被无视,删除多出来的 m - n 个元素,前 n 个元素会保持不变。 • vector a = {1, 2, 3, 4, 5, 6}; • a.resize(4, 233); • 等价于: 反调,他是在数组的末尾删除一个数。例 如: • vector a = {1, 2, 3}; • a.pop_back(); • 等价于: • vector a = {1, 2}; • void pop_back() noexcept; vector 容器: back • 要注意的是 pop_back 函数的返回类型是 void ,也就是没有返回值,如果需要获取删除的 值,可以在 0 码力 | 90 页 | 4.93 MB | 1 年前3
新一代分布式高性能图数据库的构建 - 沈游人Processing ,高性能图计算引 擎,预置 20 余种图计算算法 ,可扩展的分析引擎支持更复 杂的数据挖掘和机器学习场景 MPP Massively Parallel Processing 架构,大规模集群 分布式存储及并行计 算, Shared Nothing 模式支 持存储计算分离 高性能 基于 Rust 开发的分布式存储引 擎及图计算引擎,精细的内存 管理设计,内置索引系统,支 持毫秒级的并发查询响应速度 Cypher AST 优化器 图计算 内存加速引 擎 服务接口 HTTP/RPC Spark 连接器 Python UDF 执行器 索引管理 一致性存储 RAFT 分片管理 元数据 集群管理 用户权限 GNN 应用层 Atlas 图平台 Atlas Studio Atlas Client 基础 设施 Docker/K8S/VM X86/ARM0 码力 | 38 页 | 24.68 MB | 1 年前3
C++高性能并行编程与优化 - 课件 - 17 由浅入深学习 map 容器由浅入深学习 map 容器 by 彭于斌( @archibate ) 我负责监督你鞋习 ! 我负责监督你鞋习 ! 本期看点: 用方括号 [ ] 取出 map 元素居然是错误的! 能不能在遍历的同时删除元素?安全吗? emplace , emplace_hint , try_emplace 的区别? 课程安排 1. vector 容器初体验 & 迭代器入门 (BV1qF411T7sd) 2. 你所不知道的 categories[key].push_back(str); } • 则 categories 最后为: • {‘h’: {“happy”, “hello”}, ‘w’: {“world”}}; 第二章:判断与删除 不鞋习的小彭友 就会进到这儿 ! 不鞋习的小彭友 就会进到这儿 ! 找不到时,自动采用默认值 • 要求:当 m 中有 “ key” 时返回 key 对应的值,否则返回指定的默认值 “ default” = val 覆盖旧值 抛出 out_of_range 异常 判断 if (m.count(key)) 返回 1 返回 0 删除 m.erase(key) 删除这个值 默默放弃 小彭老师四定律: 读取,要用 at 。 写入,要用 [] 。 判断存在,用 count 。 删除,用 erase 。 这四个已经够用了。 map 常用函数不同情况下的行为分析 类型 C++ 代码 key 已存在 key0 码力 | 90 页 | 8.76 MB | 1 年前3
C++高性能并行编程与优化 - 课件 - 15 C++ 系列课:字符与字符串的字符处写入 0 ,来提前结束字符串。例如在第 n 个字符写入 0 ,就会只保留前 n 个字符作为一个子字 符串,删除后半部分。 “0 结尾字符串”知识点应用举例 • C 语言所谓的字符串类型 char * 实际上就是个首地址指 针,如果让首地址指针向前移动 n 位,那就实现删除前 n 个字符的效果,而不用实际修改数组本身(更高效)。 C 语言转义符 • 常见的转义符: • ‘\n’ ‘\n’ 换行符:另起一行(光标移到下一行行首) • ‘\r’ 回车符:光标移到行首(覆盖原来的字符) • ‘\t’ 缩进符:光标横坐标对齐到 8 的整数倍 • ‘\b’ 退格符:光标左移,删除上个字符 • ‘\\’ 反斜杠:表示这个是真的 \ ,不是转义符 • ‘\”’ 双引号:在字符串常量中使用,防止歧义 • ‘\’’ 单引号:在字符常量中使用,防止歧义 • ‘\0’ 空字符:标记字符串结尾,等价于 • ‘\n’ 换行符:另起一行(光标移到下一行行首) • ‘\r’ 回车符:光标移到行首(覆盖原来的字符) • ‘\t’ 缩进符:光标横坐标对齐到 8 的整数倍 • ‘\b’ 退格符:光标左移,删除上个字符 • ‘\\’ 反斜杠:表示这个是真的 \ ,不是转义符 • ‘\”’ 双引号:在字符串常量中使用,防止歧义 • ‘\’’ 单引号:在字符常量中使用,防止歧义 • ‘\0’ 空字符:标记字符串结尾,等价于0 码力 | 162 页 | 40.20 MB | 1 年前3
C++高性能并行编程与优化 - 课件 - 11 现代 CMake 进阶指南里缓存的却是旧的值,会导致一系列问题。 这时我们需要清除缓存,最简单的办法就是删除 build 文件夹,然后重新运行 cmake -B build 。缓存是很多 CMake 出错的根源,因此如果出现诡异的错误,可以试试看删 build 全部 重新构建。 经典 CMake 笑话:“ 99% 的 cmake 错误可以用删 build 解决”“删 build 大法好”。 清除缓存,其实只需删除 build/CMakeCache.txt txt 就可以了 删 build 虽然彻底,也会导致编译的中间结果( .o 文件)都没了,重新编译要花费很长时间。 如果只想清除缓存,不想从头重新编译,可以只删除 build/CMakeCache.txt 这个文件。 这文件里面装的就是缓存的变量,删了他就可以让 CMake 强制重新检测一遍所有库和编译器。 build/CMakeCache.txt 的内容 find_package 就用到了缓存机制0 码力 | 166 页 | 6.54 MB | 1 年前3
共 16 条
- 1
- 2













