作者:vivo 互联网服务器团队- Zhang Peng SPI 是一种用于动态加载服务的机制.它的核心思想就是解耦,属于典型的微内核架构模式.SPI 在 Java 世界应用非常广泛,如:Dubbo.Spring Boot 等框架.本文从源码入手分析,深入探讨 Java SPI 的特性.原理,以及在一些比较经典领域的应用. 一.SPI 简介 SPI 全称 Service Provider Interface,是 Java 提供的,旨在由第三方实现或扩展的 API,它是一种用于动态加载服务的机制.…
StringBuilder StringBuffer 源码 这里只是我个人笔记, 并没有在这篇文章里做任何技术分享, 请同学们绕道- -.如果需要我会后期补上的..... 本来是想分析源码来着, 但是发现这部分源码相对简单.....比较容易看懂... 最近看了StringBuilder StringBuffer的源码, 自己新建为了MyStringBuilder MyStringBuffer. 代码贴了出来, 留个记录, 当做笔记了. (或者github:https://github.com/G…
前言 如今,许多用于分析大型数据集的开源系统都是用 Java 或者是基于 JVM 的编程语言实现的.最着名的例子是 Apache Hadoop,还有较新的框架,如 Apache Spark.Apache Drill.Apache Flink.基于 JVM 的数据分析引擎面临的一个常见挑战就是如何在内存中存储大量的数据(包括缓存和高效处理).合理的管理好 JVM 内存可以将 难以配置且不可预测的系统 与 少量配置且稳定运行的系统区分开来. 在这篇文章中,我们将讨论 Apache Flink 如何管…
Flink 序列化机制 https://t.zsxq.com/JaQfeMf 博客 1.Flink 从0到1学习 -- Apache Flink 介绍 2.Flink 从0到1学习 -- Mac 上搭建 Flink 1.6.0 环境并构建运行简单程序入门 3.Flink 从0到1学习 -- Flink 配置文件详解 4.Flink 从0到1学习 -- Data Source 介绍 5.Flink 从0到1学习 -- 如何自定义 Data Source ? 6.Flink 从0到1学习 -- Da…
[源码解析] 深度学习分布式训练框架 Horovod --- (1) 基础知识 目录 [源码解析] 深度学习分布式训练框架 Horovod --- (1) 基础知识 0x00 摘要 0x01 分布式并行训练 1.1 分布式并行训练的必要 1.2 分布式训练 1.3 训练并行机制 1.3.1 三种机制 1.3.2 如何使用 1.4 数据并行训练 0x02 通信 & 架构 2.1 方法和架构 2.2 异步 vs 同步 0x03 具体架构 3.1 MapReduce 3.2 参数服务器 (PS) 3.…
[源码解析] 深度学习分布式训练框架 horovod (2) --- 从使用者角度切入 目录 [源码解析] 深度学习分布式训练框架 horovod (2) --- 从使用者角度切入 0x00 摘要 0x01 Horovod 简介 0x02 Hovorod 机制概述 2.1 Horovod 机制 0x03 示例代码 3.1 摘要代码 3.2 horovodrun 0x04 运行逻辑 4.1 引入python文件 4.2 初始化 in python 4.2.1 引入SO库 4.2.1.1 SO库 4…
[源码解析] 深度学习分布式训练框架 horovod (4) --- 网络基础 & Driver 目录 [源码解析] 深度学习分布式训练框架 horovod (4) --- 网络基础 & Driver 0x00 摘要 0x01 引子 0x02 总体架构 2.1 get_local_interfaces 2.2 _driver_fn 2.3 获取路由接口 2.3.1 probe逻辑 2.3.2 等待函数 0x03 基础网络服务 3.1 继承关系 3.2 network.BasicServic…
[源码解析] 深度学习分布式训练框架 horovod (3) --- Horovodrun背后做了什么 目录 [源码解析] 深度学习分布式训练框架 horovod (3) --- Horovodrun背后做了什么 0x00 摘要 0x01 背景知识 1.1 分布式体系 1.2 并行任务通信 1.3 MPI 1.4 Open-MPI 1.5 MPI 使用问题 0x02 入口点 2.1 如何运行 2.2 horovodrun 2.3 run_commandline 2.4 非弹性训练 _run_st…
[源码解析] 深度学习分布式训练框架 horovod (5) --- 融合框架 目录 [源码解析] 深度学习分布式训练框架 horovod (5) --- 融合框架 0x00 摘要 0x01 架构图 0x02 统一层 0x03 Horovod OP 类体系 3.1 基类 HorovodOp 3.2 派生类 AllreduceOp 3.3 适配类 MPIAllreduce 3.4 后台线程如何使用 3.4.1 具体collective 操作 3.4.2 调用不同类型的OP 3.4.3 取一个适配层…
[源码解析] 深度学习分布式训练框架 horovod (6) --- 后台线程架构 目录 [源码解析] 深度学习分布式训练框架 horovod (6) --- 后台线程架构 0x00 摘要 0x01 引子 0x02 设计要点 2.1 问题 2.2 方案 2.3 协调 2.3.1 设计 2.3.2 实现 2.4 Background Thread 2.4.1 设计 2.4.2 实现 0x03 辅助功能 3.1 如何判断是 coordinator 3.2 协调缓存&信息 3.2.1 计算共有 ten…