- 博客(92)
- 收藏
- 关注
原创 云原生公开课笔记-----Linux虚拟化网络,Docker网络模型与K8s网络模型介绍
约法三章:任意Pod之间可以直接通信,无需经过显式使用NAT来接收数据和地址的转换node和pod之间可以直接通信.无需使用明显地址转换pod的私有ip(自己看到自己的ip)和别人看到它所用的ip是一样的,中间不会经过转换四大目标:搞清楚外部世界和service之间如何通信?service如何与pod通讯?pod和pod之间调用怎么做到通信?pod内部容器之间的通信?容...
2019-11-04 22:54:05
264
原创 云原生公开课笔记——Pod和容器设计模式
解决问题:为什么需要PodPod的实现机制详解容器设计模式为什么需要Pod容器本质是一个进程,是一个资源视图被隔离,资源受限的进程其中使用Namespace来进行视图隔离,Cgroup进行资源的限制。容器中PID=1的进程等于应用本身管理容器即管理应用本身。管理虚拟机等于管理基础设施。容器实际上是一个单进程的模型,单进程指"容器的生命周期等同于PID=1的进程的生命周期"...
2019-10-28 23:23:57
321
原创 MapReduce实现大规模矩阵乘法
矩阵乘法
什么是docker?Docker是一个容器化平台,它将应用程序及其所有依赖项以容器的形式打包在一起,以确保应用程序在任何环境(无论是开发环境、测试环境还是生产环境)中无缝运行。Docker与虚拟机的对比?虚拟机:最底层是宿主机的操作系统内核然后是一层虚拟机管理系统,负责把硬件资源抽象化为虚拟的硬件资源然后是虚拟机的操作系统层容器:实现了宿主机的操作系统层复用,所有的容器都是调用...
2019-10-05 22:33:20
3113
原创 Zookeeper学习记录
Zookeeper 本质提供分布式系统协调服务,提供一些基本原语API来辅助上层分布式应用实现进程间的协调.从功能上来看,ZooKeeper提供了一个基于目录树结构的内存型KV存储.数据统一以ZNode的形式保存在各个ZooKeeper节点的内存中,数据的变更由Leader节点通过Zab协议同步给所有的follower节点.注:Zab协议是类似于Raft的分布式同步协议.工作流程:使...
2019-10-04 17:23:29
426
原创 MIT6.824 Primary-Backup Replication论文导读
论文原文背景主从备份是实现可容错服务器的一种常用解决方案,在开启主动备份的系统中,备份服务器的状态需要时刻与主服务器保持一致,这样当主服务器失效的时候,备份服务器就能够立刻接管.实现主备间的状态同步方法:状态转移(State transfer)主服务器把所有状态变化都传给备份服务器,但是同步IO/内存要传输的数据量会比较大备份状态机(Replicated State Machine...
2019-10-03 20:01:14
458
原创 动手自己写Docker之实现容器文件系统与镜像的隔离.
pivotRoot这是一个系统调用,主要功能是改变当前的root文件系统,是吧整个系统切换到一个新的root中,移除对之前root的依赖具体原理是把当前进程root文件系统移动到old文件夹中,使new_root成为新的root文件系统.func pivotRoot(root string) error { /** 为了使当前root的老 root 和新 root 不在同一个文件...
2019-10-01 23:48:00
586
原创 自己动手写Docker之增加管道功能与环境变量识别
通道通信在Linux上创建两个进程的时候,进程之间的通信一般会使用通道的机制.所谓管道,就是一个链接两个进程的通道.一般管道有两种无名通道存在于有亲缘关系的进程之间有名通道存在于文件系统的管道.(FIFO管道)本质上来说,管道也是文件的一种,不过与文件通信区别在于管道有一个缓冲区,管道写满之后,写进程会阻塞.当管道为空的时候,读进程也会阻塞.1.用户启动Runfunc...
2019-10-01 21:10:38
517
原创 Docker是怎么利用cgroup技术来实现资源限制的?
Cgroupcgroup和namespace类似,也是把进程进行分组,但是目的和namespace不一样,namespace是为了隔离进程组之间的资源.而cgroup是为了对一组进程进行统一的资源监控与限制.cgroup技术把系统中所有的进程组织成一棵棵独立的树,每一棵树都有系统所有的进程树的每个节点都是一个进程组.而每一棵树又于一个或者多个subsystem关联,树的作用是把进程分组,而s...
2019-09-28 18:56:52
382
原创 Docker run实际上发生了什么? 用Go模拟这个过程
Linux ProcLinux下的/proc文件系统是由内核提供的.它不是一个真正的文件系统,只包含了系统运行时候的消息.(如系统内存/mount设备信息/硬件配置)它只存在于内存中,不占用外存空间.本质是以文件系统的方式,为访问内核数据的操作提供接口main函数main.go启动的主函数现在定义了两个命令initCommand与runCommandpackage main...
2019-09-28 13:51:38
308
原创 Sliding Window算法题总结(持续更新)
438. Find All Anagrams in a String时间复杂度O(N)滑动窗口的基本模板:1.map存目标串的字符,设匹配长度为目标串长度2.设置左右指针,右指针遍历原字符串,如果碰到目标串的字符,匹配长度-13.如果左右指针夹着的串的长度等于目标串长度,检查两串是否满足要求4.判断完成,左指针开始扫,如果扫到目标串的字符,恢复匹配长度,匹配长度+1class Sol...
2019-09-25 18:46:49
289
原创 史诗级巨坑记录——怎样删除一直terminating的k8s的pod或者ns资源?
假设你要删掉两个ns资源,发现一直删不了处于terminating状态首先试一下先把这个ns的所有pod都删掉kubectl delete pod --all -n istio-system还是不行的话kubectl delete pod --grace-period=0 –force 如果还是不行就要来必杀技了首先生成一个tmp.json文件 kubectl get name...
2019-09-24 18:13:46
3286
1
原创 史诗级巨坑记录——使用log4j打日志但是第三方包默认的log4j.properties覆盖了resources下的lof4j.properties
假设某Spring项目,你要用log4j来打日志,确发现日志死活在本地文件生成不出来??这个时候你可以在运行java程序的时候,加上-Dlog4j.debug的虚拟机参数,看看默认的log4j.properties在哪里log4j: Trying to find [log4j.xml] using context classloader sun.misc.Launcher$AppClas...
2019-09-23 11:42:33
1797
原创 MIT6.824 Google File System论文学习
论文阅读场景引入为什么要设计这么一个系统?组件故障是常态不是异常.因为集群中包含成百上千廉价的机器,很容易导致各种问题导致数据丢失或机子不可用.因此持续监控,错误侦测,故障容忍和自动恢复必须全面覆盖整个系统.要处理的文件非常大,如果分成数十亿个小文件处理,会对文件索引带来非常大的挑战大部分文件都是在append新数据,不存在随机写数据,那么如何在append中保证原子性以及对其做性能优...
2019-09-22 15:38:24
337
原创 洛谷OJ1162 填涂颜色 DFS填色法
题目描述由数字000组成的方阵中,有一任意形状闭合圈,闭合圈由数字111构成,围圈时只走上下左右444个方向。现要求把闭合圈内的所有空间都填写成222.例如:6×66 \times 66×6的方阵(n=6n=6n=6),涂色前和涂色后的方阵如下:0 0 0 0 0 00 0 1 1 1 10 1 1 0 0 11 1 0 0 0 11 0 0 0 0 11 1 1 1 1 10 0...
2019-09-21 11:24:46
287
原创 洛谷OJ P1280尼克的任务 由后往前推的动态规划
题目描述尼克每天上班之前都连接上英特网,接收他的上司发来的邮件,这些邮件包含了尼克主管的部门当天要完成的全部任务,每个任务由一个开始时刻与一个持续时间构成。尼克的一个工作日为N分钟,从第一分钟开始到第N分钟结束。当尼克到达单位后他就开始干活。如果在同一时刻有多个任务需要完成,尼克可以任选其中的一个来做,而其余的则由他的同事完成,反之如果只有一个任务,则该任务必需由尼克去完成,假如某些任务开始时...
2019-09-20 23:09:41
267
原创 洛谷OJP1091合唱队列O(n^2) 求最长递增与递减子序列
题目描述NNN位同学站成一排,音乐老师要请其中的(N−KN-KN−K)位同学出列,使得剩下的KKK位同学排成合唱队形。合唱队形是指这样的一种队形:设K位同学从左到右依次编号为1,2,…,K1,2,…,K1,2,…,K,他们的身高分别为T1,T2,…,TKT_1,T_2,…,T_KT1,T2,…,TK, 则他们的身高满足T1<…Ti+1>…>TK(1≤i≤K)T_1<...
2019-09-19 23:14:51
294
原创 洛谷OJ1020 nlogn解决最长非递增子序列与最长递增子序列
题目描述某国为了防御敌国的导弹袭击,发展出一种导弹拦截系统。但是这种导弹拦截系统有一个缺陷:虽然它的第一发炮弹能够到达任意的高度,但是以后每一发炮弹都不能高于前一发的高度。某天,雷达捕捉到敌国的导弹来袭。由于该系统还在试用阶段,所以只有一套系统,因此有可能不能拦截所有的导弹。输入导弹依次飞来的高度(雷达给出的高度数据是≤50000 \le 50000≤50000的正整数),计算这套系统最多能拦...
2019-09-19 22:40:22
498
原创 Java并发编程实战 线程安全性
线程安全性定义多个线程访问某一个类的时候,不管运行环境采用的调度方式或者线程将如何交替进行,并且在代码中不需要进行任何额外的同步或者协同,这个类都能表现出正确的行为,那么这个类就是线程安全的.原子性 & 加锁机制Java提供了Synchronized Block这一内置锁机制来支持原子性.synchronized (lock) {}进入代码块后自动获得锁,退出代码块后自动...
2019-09-14 15:09:58
159
原创 技术文档系列之架构设计文档模板
本文是对专栏文章架构设计文档模板的学习记录,可以购买以支持原作者首先是备选方案模板需求介绍主要介绍需求的背景,目标与范围随着xxx业务不断发展,业务拆分的子系统越来越多(阐述现有系统的问题),由此带来几个明显的系统问题eg:性能问题:耦合问题:效率问题:基于以上背景,我们需要引入xxx,将目前的xxx功能改为xxx需求分析需要全方位描述相关的信息5WWho需求的利益关...
2019-09-12 23:59:57
4753
2
原创 Raft分布式一致性算法学习资料
Learning MaterialA website that contains the visualization, implementation and courses materialsa simple visualization of raft(friendly to newcomer)Raft PaperRaft Paper Chinese versionnotes on Ra...
2019-09-12 20:35:24
1029
1
原创 Kubernetes In Action 深入了解kubernetes机理
k8s采用主从式分布式架构master nodeAPI server 与所有组件进行通信Scheduler 调度应用,为应用的每个部署组件分配一个节点Controller Manager 执行集群级别的功能,如复制,跟踪工作节点,处理节点失败etcd 分布式数据存储,持久化存储集群配置worker nodekubelet 与API服务器通信,管理它所在节点的容器kube-p...
2019-09-08 17:37:09
424
原创 Go语言高级编程之面向内存的并发模型
Goroutine轻量级的线程与系统线程不等价区别:系统级线程都有一个固定的栈,用于函数递归调用时候保存局部变量以及参数固定的栈导致两个问题:1.对于需要很小的栈空间的线程来说很浪费2.对于需要很大的栈空间的线程来说面临栈溢出的风险Goroutine可以动态伸缩栈的大小,而且启动的时候栈的大小很小,因此启动的代价很小可以轻易地启动成千上万个GoroutineGo...
2019-09-08 17:36:25
221
原创 Go语言之RPC&crawler解析
RPC远程调用的简称分布式系统中不同节点的流行通信方式理想上把网络通信的实现同本地函数调用一样RPC的目的隐藏客户端与服务器之间网络通讯的细节使得客户端调用与服务端处理更像本地的过程调用考虑的细节问题:应该调用什么服务器函数?数据应该序列化然后由网络包传输,可能要处理如数组,指针,对象等线程: 服务端把每个请求放在独立的线程中处理,客户端则可能使用多线程,如果多于一个调用...
2019-09-08 16:41:50
289
原创 Kubernetes实战读书笔记(一) 容器,虚拟机与k8s
容器与虚拟机区别虚拟机从下到上:infrastructure 个人pc/服务器/云主机宿主机的操作系统虚拟机管理系统,用于把物理硬件资源分为较小的虚拟硬件资源,从而被每个虚拟机里面的操作系统使用.虚拟机的操作系统:每一台虚拟机会调用不同的操作系统的内核容器由下到上infrastructure主机操作系统docker daemon docker的守护进程 运行在操作系统...
2019-09-07 20:45:49
459
1
原创 JAVA 线程池的使用&源码解读
public ThreadPoolExecutor(int corePoolSize, int maximumPoolSize, long keepAliveTime, TimeUnit unit, BlockingQueue<Runnable> workQueue, ThreadFactory threadFactory, RejectedExecutionHandler hand...
2019-09-07 00:26:26
323
1
原创 Flink原理,实战与性能优化读书笔记(四) watermark+window
遇到以下问题:把那个灰色的import引入就好指定TimeStamp 与 生成 WatermarksSource Function 直接定义 Timestamps 与 watermarkscollectWithTimestamp() 生成时间戳 第一个参数指数据,第二个参数是时间戳emitWatermark 创建watermark在addSource中通过实现SourceFuncti...
2019-08-31 11:09:49
2773
原创 Flink源码解读(四) Flink1.9之新特性--数据结构二进制化&minibatch aggregation
数据结构二进制化源码解读org/apache/flink/table/dataformat/BinaryRow.java由Flink的最小内存管理单元 MemorySegment 支撑实现,能够大量减少序列化与反序列化的开销正如上图所示,一个binary row含有两个部分: 定长和变长部分Fixed-length part:一个字节长的headernull bit sets ...
2019-08-27 22:45:01
1365
原创 深入了解JAVA虚拟机读书笔记(一) JAVA内存区域与内存溢出异常
内存划分JAVA虚拟机会在执行java程序过程中把其管理的内存划分为若干个不同的数据区域。为什么方法区和堆是所有线程共享的?而为什么程序计数器,栈是线程隔离的?程序计数器实质:一块小的内存空间作用:当前线程执行的字节码的行号指示器,决定下一条执行的指令由于多线程是通过线程轮流切换并且分配处理器执行时间来实现的,任何时刻一个处理器只会执行一条线程的指令,因此为了线程切换后能够恢复到正确...
2019-08-25 17:05:16
118
原创 Flink SQL源码解读之Hybrid Hash join
SQL如何被处理?词法语法的解析,生成一颗带有token结点的语法树。* 语义分析这时候每个结点都携带了一些具体信息,这时候生成的是一串中缀表达式。然后进入改写过程,改写属于逻辑优化。优化器处理在这里确定连接的顺序以及连接方式。优化器处理完,生成一颗执行计划树,然后由下至上递归处理。Hash join算法复杂度为O(n),两张表分别只需要扫一次。但是只能用在等值连接。...
2019-08-25 14:19:46
1504
原创 k8s学习记录(三)API配置&使用&集群认证RBAC
API Server 认证授权过程API server授权过程:subject(主体)----->认证----->授权【action(可做什么)】------>准入控制【Object(能对那些资源对象做操作)】概念解析:认证方式token tls user/password账号UserAccount(人使用的账号),ServiceAccount(pod使用的账...
2019-08-21 16:36:20
630
原创 Flink源码学习(二) 维表JOIN&异步优化源码解读
ref:https://yq.aliyun.com/articles/457385?spm=a2c4e.11153959.blogcont457438.27.67c71e995MMbLXf 摘抄自上文好资料:flink sql各个sql语句功能介绍可以以此为着手点做优化。流计算中常见需求就是为数据流补齐字段。数据采集端收集的数据往往有限,因此在做数据分析之前,需要把所需的维度信息补全。比如采...
2019-08-20 23:51:19
898
原创 k8s学习记录(二) 容器化部署学习记录
基本流程 物理vm先打通该服务 打docker镜像 docker run先跑起来 写yaml改造成k8sref:通过shell执行kubectl exec并在对应pod容器内执行shell命令坑一像ubuntu这种系统级应用,必须要在yaml文件里添加command与args使其持续化运行 1 apiVersion: apps/v1 ...
2019-08-20 20:15:07
1295
原创 Flink-SQL源码解读(一)window算子的创建的源码分析
本文大体框架参考 https://blog.csdn.net/LS_ice/article/details/90711744flink版本:1.9Intro作为无限流的核心机制,流可以分割为大小有限的窗口,通过在窗口内进行聚合。把源源不断产生的数据根据不同的条件划分成一段一段有边界的数据区间,使用户能够利用窗口功能实现很多复杂的统计分析需求。windowOperator算子的创建架构w...
2019-08-18 23:10:52
1635
转载 Flink SQL入门学习&概念解析
Flink SQL核心功能解密https://www.jianshu.com/p/bf7ae01dc139为何要选择SQL api作为flink的核心API?流和批处理的统一:blink底层runtime本身就是一个流与批统一的引擎。SQL可以做到API层的流与批的统一。lSQL 的流与批统一总结起来就一句话:One Query, One Result。在很多场景,我们既需要批处理,又...
2019-08-18 00:27:35
1627
原创 Flink原理,实战与性能优化读书笔记(三) 三种时间&水位线机制
第四章时间概念与Watermarkflink根据时间产生的位置不同,把时间区分为三种时间概念事件生成时间(event Time)数据从终端产生,或者从系统中产生的时间事件接入时间(Ingestion Time)数据经过中间件传入到flink之后,在dataSource中接入的时候会生成时间接入时间。事件处理时间(Processing Time)数据在各个算子实例执行转换操作过程中...
2019-08-17 00:08:01
11586
原创 k8s学习记录(一)概述&设计架构
Introk8s是一个开源的,用于管理云平台中多个主机的容器化的应用。目标是让部署容器化的应用简单而且高效,k8s提供了应用部署,规划,更新以及维护的一种机制。核心特点:自主管理容器,以此来保证云平台中的容器按照用户的期望状态运行。k8s中,所有容器都运行在pod上。一个pod可以承载一个或者多个相关的容器。同一个pod上的容器会部署在同一个物理机器上,以此实现资源共享用户可以自己创建并...
2019-08-14 20:31:25
221
原创 docker搭建最小jdk环境并且运行jar包记录
write DockerfileFROM ubuntuMAINTAINER alexADD jdk-8u221-linux-x64.tar.gz /usr/localADD video.jar /video.jarENV JAVA_HOME /usr/local/jdk1.8.0_211ENV CLASSPATH $JAVA_HOME/lib/dt.jar:$JAVA_HOME/lib...
2019-08-14 15:43:41
940
原创 MIT-6.824 MapReduce 学习记录 + Lab1
Part1MapReduce论文学习Map操作:处理一个Key/Value对,生成许多个中间的key/value键值对结果Reduce操作:对map生成的所有键值对,相同的key的作合并MapReduce是一种编程范式,能够使得大规模的并行化计算成为可能。同时,这也使得“再次执行”功能作为初级的容错机制。这篇论文主要贡献是通过简单的接口来实现自动的并行化和大规模的分布式计算。编程模型...
2019-08-12 00:08:26
476
原创 Flink原理,实战与性能优化读书笔记(二)
第四章 DataStream API 介绍与使用DataSource def main(args:Array[String]): Unit ={ val env = StreamExecutionEnvironment.getExecutionEnvironment //1.内置数据源 val textStream = env.readTextFile("/home/...
2019-08-11 15:02:56
1607
1
空空如也
空空如也
TA创建的收藏夹 TA关注的收藏夹
TA关注的人
RSS订阅