Zadig 面向开发者的云原生 DevOps 平台部署 / 灰度上线 xN 监控 / 告警 xN 版本归档 xN 交付追踪 xN 数据度量 xN 服务、工单管理 事件、缺陷管理 想 法 用 户 运行阶段 需求阶段 研发阶段 现代软件交付挑战:开发 5 分钟,上线 2 小时 服务一:设计 | 代码编写 | 构建 | 测试 | 部署 | 发布 代码编写 | 构建 | 部署 | 测试 | 发布 特点: ● 重复流程自动化 ● 边开发、边验证 ● 服务全生命周期而非只关注代码 ● 每天多次提交提早验证 Zadig 采用「云原生产品级交付」设计理念 数字化产研协同 • 环境 - 统一开发者协作平面 • 工作流 - 统一交付变更通道 • 异构支持 - 统一产研运管理平面 重视开发者体验,工程师不再做脏活累活 3. 不透明的测试环境导致大量问题 4. 为每一次部署维护一个 Chart 版本 现状 效能提升场景: 2K+ 微服务、多语言、 Helm 、 K8s 多集群 1. 开发流程 提交代码到 Feature 分支 -> GitLab-CI 自动构建打包 Chart (写一堆复杂 的脚本 ) -> -> Rancher 上手动替换 Helm Chart0 码力 | 59 页 | 81.43 MB | 1 年前3
新一代分布式高性能图数据库的构建 - 沈游人的学科带头人,我国高性能计算和存储系统等方面的 泰斗和先行者。 2021 年 3 月 25 日,海致科技与清华大学计算机科学与技术系共同建设高性能图计算院士专家工作站 。 高性能图计算是高性能计算、图计算两项技术融合产生的新的技术方向,满足人们对更大规模、更复 杂数据的实时处理和存储需求,是计算机领域竞争新战略制高点。 产学结合、协同创新,打造全球领先的国产自研图数据库 AtlasGraph ,培育世界级的图计算软硬件 Projection Filter Stage Stage 物理执行计划 01 02 03 将不同的执行阶段推送到对应的存储 引擎,减少网络传输和内存压力 实际执行时,执行器等待流数据,处 理后将数据推送到下一个执行器 切分执行计划,将执行计划划分成不 同的执行阶段 内存缓存结构:加速图数据查询 • 由于图数据的查询通常是 IO 密集型,且访问的数据随机又分散,拥有内存缓存能起到很 Meta , TS 服务采用主备架 构,基于 Raft 算法实现租约,进行 服务多活,保证图库不会出现单点 故障。 Raft 服务高可用方案 偏向分析型的分布式事务 【 MVOCC 事务提交】 基于多版本乐观并发控制技术的分布式事 务实现,在保障一致性的前提下,提供优 秀的分析性能 分布式事务技术方案 MVOCC 处理流程 全面的算法支持 覆盖全部常用算法 • 路径计算、社区检测、相似度计算0 码力 | 38 页 | 24.68 MB | 1 年前3
C++高性能并行编程与优化 - 课件 - 08 CUDA 开启的 GPU 编程修 饰符,即可让他在 GPU 上执行。 • 不过调用 kernel 时,不能直接 kernel() ,而 是要用 kernel<<<1, 1>>>() 这样的三重尖括 号语法。为什么?这里面的两个 1 有什么用 ?稍后会说明。 • 运行以后,就会在 GPU 上执行 printf 了。 • 这里的 kernel 函数在 GPU 上执行,称为核 函数,用 __global__ 修饰的就是核函数。 都可以调 用。 让 constexpr 函数自动变成 CPU 和 GPU 都可以调用 • 这样相当于把 constexpr 函数自动变成修饰 __host__ __device__ ,从而两边都可以调用。 • 因为 constexpr 通常都是一些可以内联的函数,数学计 算表达式之类的,一个个加上太累了,所以产生了这个 需求。 • 不过必须指定 --expt-relaxed-constexpr 他在 GPU 编译模式下会定义 __CUDA_ARCH__ 这个宏,利用 #ifdef 判断该宏是否定义,就可以判断当前是否处于 GPU 模式 ,从而实现一个函数针对 GPU 和 CPU 生成两份源码级不同的 代码。 __CUDA_ARCH__ 是个版本号 • 其实 __CUDA_ARCH__ 是一个整数,表 示当前编译所针对的 GPU 的架构版本号 是多少。这里是 520 表示版本号是0 码力 | 142 页 | 13.52 MB | 1 年前3
C++高性能并行编程与优化 - 课件 - 11 现代 CMake 进阶指南CMake 项目的构建分为两步: • 第一步是 cmake -B build ,称为配置阶段( configure ),这时只检测环境并生成构建规则 • 会在 build 目录下生成本地构建系统能识别的项目文件( Makefile 或是 .sln ) • 第二步是 cmake --build build ,称为构建阶段( build ),这时才实际调用编译器来编译代码 • 在配置阶段可以通过 -D 设置缓存变量。第二次配置时,之前的 CMake 自己设置好的冲突,导致出 错。 请始终用 CXX_STANDARD 或是全局变量 CMAKE_CXX_STANDARD 来 设置 -std=c++17 这个 flag , CMake 会在配置阶段检测编译器是否支持 C++17 。 CUDA 的 -arch=sm_75 也是同理,请使用 CUDA_ARCHITECTURES 属 性。 再说了 -std=c++17 只是 GCC 编译器的选项,无法跨平台用于 C:/vcpkg/scripts/buildsystems/vcpkg.cmake” • PATH 目录路径,例如 “ C:/Qt/Qt5.14.2/msvc2019_64/lib/cmake/” • BOOL 布尔值,只有两个取值: ON 或 OFF 。 • 注意: TRUE 和 ON 等价, FALSE 和 OFF 等价; YES 和 ON 等价, NO 和 OFF 等价。 https://www.cnblogs0 码力 | 166 页 | 6.54 MB | 1 年前3
C++高性能并行编程与优化 - 课件 - 16 现代 CMake 模块化项目管理指南00 一、划分子项目 • 大型的项目,往往会划分为几个子项目。 • 即使你只有一个子项目,也建议你先创建 一个子目录,方便以后追加新的子项目。 • 左图的案例中,我们在根目录下,创建了 两个子项目 biology 和 pybmain ,他们 分别在各自的目录下有自己的 CMakeLists.txt 。 二、根项目的 CMakeLists.txt 配置 • 在根项目的 CMakeLists CMakeLists.txt 中,设置了默 认的构建模式,设置了统一的 C++ 版本 等各种选项。然后通过 project 命令初始 化了根项目。 • 随后通过 add_subdirectory 把两个子项 目 pybmain 和 biology 添加进来(顺序 无关紧要),这会调用 pybmain/CMakeLists.txt 和 biology/CMakeLists.txt 。 三、子项目的 时自动检测目录是否更新,如果目录有新文件了, CMake 会自动帮你重新运行 cmake -B build 更新 myvar 变量。 六、头文件和源文件的一一对应关系 • 通常每个头文件都有一个对应的源文件,两个文件名字应当相同 (方便我们理解,也方便 IDE 跳转),只有后缀名不一样。 • 如果是一个类,则文件名应和类名相同,方便查找 ( Animal.cpp )。 • 头文件中包含函数和类的声明,源文件则包含他们的实现。0 码力 | 56 页 | 6.87 MB | 1 年前3
基于 Rust Arrow Flight 的物联网和时序数据传输及转换工具 霍琳贺AWS/Azure/ GCP) CONTENTS 自 我 介 绍 T D e n g i n e t a o s X R u s t 使 用 taosX - 物联网数据接入问题 • 多种不同协议数据对接,开发复杂度高 • 模块之间关联性不高但模块组成复杂,可维护性差 • 大量设备大量数据归集存储,存储压力大 • 数据总线 / 消息队列消息接入,定制化程度要求高 • 数据业务逻辑自定义需求强 cancel with blocking code Tokio - Notes • 使用非阻塞或并发 / 异步数据结构 • 使用异步锁和异步 Channel 。 • 使用 spawn_blocking 提交耗时任务 • C FFI 调用时,要关注上下文的线程安全性。 • 多个运行时之间使用 Channel 通信,降低锁使用范围。 Tokio - Graceful Stop • futures::future::Abortable0 码力 | 29 页 | 2.26 MB | 1 年前3
谈谈MYSQL那点事机房的 M2 只做 standby 容灾方 式的用途。 当然这里会用到 3 台数据库服务器,也许会增加采 购压力,但是我们可以提供更好的对外数据服务的能力和 途径,实际中尽可能两者兼顾。 MySQL 架构设计—高可用架构 系统优化:硬件、架构 系统优化:硬件、架构 服务优化 服务优化 应用优化 应用优化 MySQL MySQL 优化方式 优化方式 影响性能的因素 innodb_flush_log_at_trx _commit 1 0 0 代表日志只大约每秒写入日志文件并且日志文件 刷新到磁盘 ; 1 为执行完没执行一条 SQL 马上 commit; 2 代表日志写入日志文件在每次提交 后 , 但是日志文件只有大约每秒才会刷新到磁盘上 . 对速度影响比较大,同时也关系数据完整性 innodb_log_file_size 8M 512M 在日志组中每个日志文件的大小 , 一般是 尽可能的使用 NOT NULL NOT NULL 填充数据库 填充数据库 拆分大的 拆分大的 DELETE DELETE 或 或 INSERT INSERT 语句 语句 批量提交 批量提交 SQL SQL 语句 语句 MySQL MySQL 技巧分 技巧分 享 享 MySQL MySQL 技巧分享 技巧分享 常用技巧 常用技巧 使用 使用 Explain/ DESC0 码力 | 38 页 | 2.04 MB | 1 年前3
C++高性能并行编程与优化 - 课件 - 02 现代 C++ 入门:RAII 内存管理如果想要让编译器不要自动生成拷贝构造函数,可以用 = delete 语法删除: • 注: = delete 和 = default 是一对。如果你不确定某个函数有没有被编译器默认生成,可以都用 这两个显式地声明一下。 编译器默认生成的特殊函数:拷贝赋值函数 • 除了拷贝构造函数外,编译器默认还会生成这样一个重载’ =’ 这个运算符的函数: • Pig &operator=(Pig const Vector 的实现造成一个很大 的问题。其 m_data 指针是按地址值浅拷贝的, 而不深拷贝其指向的数组! • 这就是说,在退出 main 函数作用域的时 候, v1.m_data 会被释放两次!更危险的则是 v1 被解构而 v2 仍在被使用的情况。 • 这就是为什么“如果一个类定义了解构函数,那么 您必须同时定义或删除拷贝构造函数和拷贝赋值函 数,否则出错。” 解决方案:要么删除 三五法则:拷贝赋值函数 • 区分两种拷贝可以提高性能。 • int x = 1; // 拷贝构造函数 • x = 2; // 拷贝赋值函数 • 拷贝赋值函数≈解构函数 + 拷贝构造函数 • 拷贝构造:直接未初始化的内存上构造 2 • 拷贝赋值:先销毁现有的 1 ,再重新构造 2 • 因此若对提高性能不感兴趣,可以这样写: 拷贝赋值函数:提高性能 • 区分两种拷贝可以提高性能。0 码力 | 96 页 | 16.28 MB | 1 年前3
C++高性能并行编程与优化 - 课件 - 01 学 C++ 从 CMake 学起。然后用一个小程序,自动在编译前把引号 内的文件名 hello.h 的内容插入到记号所在的位置,这样不就只用编辑 hello.h 一次了嘛 ~ • 后来,这个编译前替换的步骤逐渐变成编译器的了一部分,称为预处理阶段, #define 定 义的宏也是这个阶段处理的。 • 此外,在实现的文件 hello.cpp 中导入声明的文件 hello.h 是个好习惯,可以保证当 hello.cpp 被修改时,比如改成 hello(int) #include 即可: 预处理后变成: 头文件进阶 - 递归地使用头文件(续) • 但是这样造成一个问题,就是如果多个头文件都引用了 MyClass.h ,那么 MyClass 会被 重复定义两遍: • 解决方案:在头文件前面加上一行: #pragma once • 这样当预处理器第二次读到同一个文件时,就会自动跳过 • 通常头文件都不想被重复导入,因此建议在每个头文件前加上这句话 头文件进阶0 码力 | 32 页 | 11.40 MB | 1 年前3
C++高性能并行编程与优化 - 课件 - 06 TBB 开启的并行编程之旅的处理能力,是吗? • 显然不是。甚至在两个处理器上同时运行两个线程也不见得可以获得两倍的性能。相似的 ,大多数多线程的应用不会比双核处理器的两倍快。他们应该比单核处理器运行的快,但 是性能毕竟不是线性增长。 • 为什么无法做到呢?首先,为了保证缓存一致性以及其他握手协议需要运行时间开销。在 今天,双核或者四核机器在多线程应用方面,其性能不见得的是单核机器的两倍或者四倍。 这一问题一直伴随 CPU CPU 发展至今。 并发和并行的区别 • 运用多线程的方式和动机,一般分为两种。 • 并发:单核处理器,操作系统通过时间片调 度算法,轮换着执行着不同的线程,看起来 就好像是同时运行一样,其实每一时刻只有 一个线程在运行。目的:异步地处理多个不 同的任务,避免同步造成的阻塞。 • 并行:多核处理器,每个处理器执行一个线 程,真正的同时运行。目的:将一个任务分 派到多个核上,从而更快完成任务。 是算法执行所花费的时间取决于数据量 的大小 n ,比如 O(n²) 表示花费时间和数据量的平方成正比。 • 对于并行算法,复杂度的评估则要分为两种: • 时间复杂度:程序所用的总时间(重点) • 工作复杂度:程序所用的计算量(次要) • 这两个指标都是越低越好。时间复杂度决定了快慢,工作复杂度决定了耗电量。 • 通常来说,工作复杂度 = 时间复杂度 * 核心数量 • 1 个核心工作一小时,0 码力 | 116 页 | 15.85 MB | 1 年前3
共 27 条
- 1
- 2
- 3













