新一代分布式高性能图数据库的构建 - 沈游人
日,海致科技与清华大学计算机科学与技术系共同建设高性能图计算院士专家工作站 。 高性能图计算是高性能计算、图计算两项技术融合产生的新的技术方向,满足人们对更大规模、更复 杂数据的实时处理和存储需求,是计算机领域竞争新战略制高点。 产学结合、协同创新,打造全球领先的国产自研图数据库 AtlasGraph ,培育世界级的图计算软硬件 生态体系,保持对全球科技竞争的战略均衡。 海致高性能图计算院士专家工作站 了大规模复杂异质图数 据的表示学习模型、语义推荐和风险管理关键技术,构建了完整的兼具理论指导与应用检 验的大规模图数据智能分析系统与平台,满足了大数据时代从复杂异质图数据中进行知识 发现的重要需求。最终获得国内外授权发明专利 43 项, CCF -A 类论文 51 篇,获得 2 次国际竞赛冠军,参与了 2 项图计算相关标准制定。 AtlasGraph 架构及实现 图技术简介 Takeway Source: KDnuggets 图技术全景图—— Graph Technology Landscape 2020 • 图数据库 • 图数据建模 • 图计算引擎 • 图数据集成 • 可视化分析 • 知识图谱解决方案 • 图查询语言 • 欺诈检测 • 网络安全分析 • 社交网络分析 • BI 工具 • 图分析工具集 • 图咨询服务 Source : Graph Aware0 码力 | 38 页 | 24.68 MB | 1 年前3基于 Rust Arrow Flight 的物联网和时序数据传输及转换工具 霍琳贺
• mdsn - A Multi-address DSN(Data Source Name) parser. TDengine 应用开发组 • Python/Rust/Go 连接器 • 数据可视化 • 数据库运维工具 • 第三方数据源接入 • BI 系统接入 https://taosdata.com/ https://github.com/zitsen CONTENTS 自 我 介 多种不同协议数据对接,开发复杂度高 • 模块之间关联性不高但模块组成复杂,可维护性差 • 大量设备大量数据归集存储,存储压力大 • 数据总线 / 消息队列消息接入,定制化程度要求高 • 数据业务逻辑自定义需求强 • 一定的实时数据分析能力 taosX - 功能路线图 集群运维 数据接入 流式处理 流式处理 数据分享 开放平台 • Backup/Restore • Replication •0 码力 | 29 页 | 2.26 MB | 1 年前3C++高性能并行编程与优化 - 课件 - 11 现代 CMake 进阶指南
cmake -B build -Dmyvar=world 命令行 -D 参数太硬核了,有没有图形化的缓存编辑器? • 在 Linux 中,可以运行 ccmake -B build 来启 动基于终端的可视化缓存编辑菜单。 • 在 Windows 则可以 cmake-gui -B build 来启动 图形界面编辑各个缓存选项。 • 当然,直接用编辑器打开 build/CMakeCache.txt --target run 来启动 main.exe 运行了。 • 而不必根据不同的平台,手动写出 build/main 或是 build\main.exe 。 再加一个 configure 伪目标,用于可视化地修改缓存变量 • 这样就可以用 cmake --build build --target configure 来启动 ccmake 修改缓存了。 • 这在 Linux 上相当于 ccmake -B0 码力 | 166 页 | 6.54 MB | 1 年前3Zadig 产品使用手册
无法支持敏捷交付模式 支持从需求到发布全流程敏捷交付。尤其面向 多服务并行部署发布,云原生构建环境和运行 环境,基础设施对接及企业级 SSO/ 权限管理 等 运维管理类平台 蓝鲸 Rainbond KubeSphere KubeVela 面向资源管理的运维工具集 面向开发者,需结合 CI/CD 工具额外 搭建全流程能力 专门面向开发者的生产力平台,涵盖需求到开 发,测试,运维的云原生一体化技术底座支撑 值交付为理念,完成需求到发布的全路径。 测试 发布 洞察 一堆复杂脚本、维护成本极高 员工手工操作费时费力易出错 手动更新服务、手动打包、交付 付效率低下、占据大量研发时间 、研发利用率极低 环境不透明、测试效率低下、测 试有效性低、大量手工、价值难 以体现 上下游烟囱式、协作效率低、团 队花大量时间在碎片化沟通和流 程制定上、各方能力受限、无法 快速响应市场需求 层级越高、对产研状态越模糊 源、随时决策响应客户需求 碎片化 研 发模 式 产研全流程拉通需求到上线所需的代码、服务、配置和数据的一致性交付 Jira 飞书 项管 其他 自测 环境 Argo K8s JFrog YAML 产品 开 发 测 试 运维 产研运一体化 解决方案 免运维模板库 效能洞察 云原生 IDE 插 件 交付中心 发布中心 测试中心 高并发工作流 云原生环境 对接需求管理 测试管理0 码力 | 52 页 | 22.95 MB | 1 年前3Zadig 面向开发者的云原生 DevOps 平台
面向开发者的云原生 DevOps 平台 角色: 产品 / 架构 开发 测试 运维 运维 / 开发 技术支持 事件 需求设计 架构设计 拆任务、写代码 代码集成 xN 单元测试验证 xN 代码扫描 xN 自测、联调 xN 集成验证 xN 写测试用例 系统验证 xN 自动化测试 xN 性能测试 xN 安全测试 xN 数据变更 xN xN 部署 / 灰度上线 xN 监控 / 告警 xN 版本归档 xN 交付追踪 xN 数据度量 xN 服务、工单管理 事件、缺陷管理 想 法 用 户 运行阶段 需求阶段 研发阶段 现代软件交付挑战:开发 5 分钟,上线 2 小时 服务一:设计 | 代码编写 | 构建 | 测试 | 部署 | 发布 调试自测免打扰:本地 / 子环境免打扰,独立完成验证工作 自助验证更高效:自动化工作流 + 云上环境,高效验证调试 安全发布有信心: 一个平台完成日常 90% 工作,开发自助发布 需求研发总耗时降低 30% 需求迭代周期缩短 1-5 倍 解放开发,专注编码 更多的架构和技术提升 测试 效率和质量难以平衡: • 自动化测试难以开展 • 环境不稳定并行验证效率低 • 测试多苦劳,价值难以体现0 码力 | 59 页 | 81.43 MB | 1 年前3C++高性能并行编程与优化 - 课件 - 性能优化之无分支编程 Branchless Programming
Branchless Programming by 彭于斌( @archibate ) 两种代码写法:分支 vs 三目运算符 两种使用方式:排序 vs 不排序 测试结果(均为 gcc -O3 ) 测试结果可视化 图表比较:分支 vs 无分支 分支 无分支 0 0.01 0.02 0.03 耗时(越低越好) 乱序 有序 • 传统的分支方法实现的 uppercase ,对于 排序过的数据明显比乱序时高效。0 码力 | 47 页 | 8.45 MB | 1 年前3应用 waPC (rust) 做软件测试工具
modified request • 模拟数据规则 • 自动化测试 • https://github.com/wasmmock/ wasm_mock_server • 用 rust 打包所有测试需求 Wasm mock server Why use rust ? Software testing tool • 模拟数据规则 • 自动化测试 • Company's own protocol Microservices • Multiple backend product line with complex upstream • Common testing platform 大公司抓包工具的需求 软件测试工具 • 模拟数据规则 • 自动化测试 • Supports http/https/tcp/websocket(MITM) • Can use rust to construct panics, crashes all the other AT jobs • High maintenance due to programming language 大公司 API 测试的需求 软件测试工具 • 模拟数据规则 • 自动化测试 • Use rust to compile wasm and send to wasm mock server • Let Wasm Mock0 码力 | 30 页 | 2.50 MB | 1 年前3C++高性能并行编程与优化 - 课件 - 02 现代 C++ 入门:RAII 内存管理
管对象生命周期的大权。 • 请根据你的具体情况,决定要选用哪一种 解决方案。 移交控制权后仍希望访问到 p 指向的对象 • 解决方案 2 中,有时候我们会遇到移交控 制权后,仍希望访问到对象的需求。 • 如果还是用 p 去访问的话,因为被移动构 造函数转移了, p 已经变成空指针,从而 出错。 解决方案:提前获取原始指针 • 最简单的办法是,在移交控制权给 func 前,提前通过 为什么很多面向对象语言,比如 Java ,都没有构造函数全家桶这些概念? • 因为他们的业务需求大多是:打开数据库,增删改查学生数据,打开一个窗口,写入一个 文件,正则匹配是不是电邮地址,应答 HTTP 请求等。 • 这些业务往往都是在和资源打交道,从而基本都是刚刚说的要删除拷贝函数的那一类,解 决这种需求,几乎总是在用 shared_ptr的模式,于是 Java 和 Python 0 码力 | 96 页 | 16.28 MB | 1 年前3C++高性能并行编程与优化 - 课件 - Zeno 中的现代 C++ 最佳实践
也让函数的作者不必去关注点从猫和狗的其他具体细节,只需把握住他们统一具有的“吃”这个接口。 小知识: shared_ptr 如何深拷贝? 浅拷贝: 深拷贝: 思考:能不能把拷贝构造函数也作为虚函数? • 现在我们的需求有变,不是去对同一个对象调用两次 eatTwice ,而是先把对象复制一份 拷贝,然后对对象本身和他的拷贝都调用一次 eatFood 虚函数。 • 代码如下,这要怎么个封装法呢?你可能会想,是不是可以把拷贝构造函数也声明为虚函 的那个参数应包含派生类的模板参数,例 如: • template• struct Derived : Base > {}; CRTP 的改进:如果基类还想基于另一个类 • 现在我们的需求有变,需要新增一个“超狗 (superdog)” 类,他继承自普通狗 (dog) 。 • 这时我们可以给 IObjectClone 新增一个模板参数 Base ,其默认值为 IObject 。 • 0 码力 | 54 页 | 3.94 MB | 1 年前3C++高性能并行编程与优化 - 课件 - 05 C++11 开始的多线程编程
没有人读取,也没有人写入。 读写锁: shared_mutex • 为此,标准库提供了 std::shared_mutex 。 • 上锁时,要指定你的需求是拉还是喝,负 责调度的读写锁会帮你判断要不要等待。 • 这里 push_back() 需要修改数据,因需求 此为拉,使用 lock() 和 unlock() 的组合 。 • 而 size() 则只要读取数据,不修改数据, 因此可以和别人共享一起喝,使用0 码力 | 79 页 | 14.11 MB | 1 年前3
共 17 条
- 1
- 2