docker run/exec/attach的区别(转)

转载 2019-11-24 01:12 阅读(12)次
docker run官方命令解释:Run a command in a new container,翻译过来是在一个新的容器中中运行命令,所以主要作用有两点:一是创建和启动一个新的容器,二是启动时通过加选项和参数在容器运行命令;docker run成功执行一次,必然产生一个新的容器实例docker run [OPTIONS] IMAGE [COMMAND] [ARG...] IMAGE: 镜像名称,run操作的是镜像images COMMAND:命令,可选 # docker run -p 80:80 -d --name=nginx-1 nginx // 在后台创建...

spark on k8s 第二篇:client模式和依赖管理(自翻译)

原创 2019-11-22 20:44 阅读(11)次
继上篇 http://www.kaonao.net/detail/147.html说完集群模式 还有客户端模式何为spark on k8s 的客户端模式? 从spark 2.4开始,提供了client mode。区别在于driver可以运行在pod或者物理机上。就是driver可以不在k8s集群里的pod里。但必须考虑网络通信,即executor需要能通过host+port去访问driver。因此根据不同选择,配置也不同1、 如果driver运行在pod上,可以通过 headless service,使用固定的hostname由executor路由到driver。...

spark on k8s 第一篇:注意事项和集群模式 (自翻译)

原创 2019-11-21 22:17 阅读(14)次
目前spark是可以运行在k8s上的,使用的是加入到spark中的原生的k8s(kubernates)的调度器。但目前还是试验阶段,配置,镜像和entrypoints都有可能会修改。spark on k8s 特别要注意安全:1、默认的镜像是没有用户指令的,所以只能用root用户在容器中运行spark,这存在被人攻击,提权的风险。所以要应该在构建自定义镜像,并提供user指令,来指定无特权的UID,GID。(用root风险太高,也违背了运维原则)2.也可以使用pod template特性,给spark提交的pods加上一个security的上下文runAsUser,但这是需要用户配合的,需要由集...

(转)Redis的两种持久化RDB和AOF

转载 2019-08-28 01:43 阅读(83)次
Redis持久化备份数据的方式有两种:RDB(Redis DataBase) 、 AOF(Append Only  File).RDB什么是RDB 在指定时间间隔内,将内存中的数据集快照写入磁盘,也就是Snapshot快照,它恢复时是将快照文件直接读到内存中,来达到恢复数据的。 如何持久化 Redis会单独创建(fork)一个子进程来进行持久化,会先将数据写进一个临时文件中,等到持久化过程结束了,再用这个临时文件替换上次持久化好的文件。在这个过程中,只有子进程来负责IO操作,主进程仍然处理客户端的请求,这就确保了极高的性能。Snapshot 在默认情况下, Redis 将数...

flink 官网翻译系列 (二) Applications

原创 2019-06-16 23:06 阅读(132)次
原文地址:https://flink.apache.org/flink-applications.htmlApache Flink是一个用于对无界和有界数据流进行有状态计算的框架。 Flink在不同的抽象级别提供多个API,并为常见用例提供专用lib。 流应用程序的构建要素 Building Blocks for Streaming Applications基于流处理框架来构建与运行的应用,取决于该应用所选择的框架如何更好的处理 stream,state以及time。下面我们将会描述流处理应用中这三个基础元素,并解释Flink是如何处理这三者的。     stre...

flink 官网翻译系列 (一) 什么是flink

原创 2019-06-16 02:34 阅读(119)次
先声明,这系列文章我除了自己翻译也会借鉴前人的翻译结果。主要是为了自己的学习和一些跟我一样不擅长英语的朋友学习。我很看好flink这个框架,因为他同时能做流计算和批处理,性能上优于其他对手。而且我判断整个行业正在从老数据(离线)的T+N的BI工作中走向对实时性要求更高的流计算倾斜。3-4年前就听说了flink,一直因为各种原因没有好好学习。这是本系列的第一篇。https://flink.apache.org/flink-architecture.html  官网原文地址。 Apache Flink是一个能在有界和无界数据流上进行有状态计算的框架和分布式处理引擎。Flink被设计为在所...

MEC介绍

原创 2019-06-09 18:16 阅读(114)次
MEC发展到目前为止,有两个解释:移动边缘计算(MobileEdgeComputing,MEC)多接入边缘计算(Multi-AccessEdgeComputing)移动边缘计算:它是一种网络架构,利用无线接入网络就近提供电信用户IT所需服务和云端计算功能,而创造出一个具备高性能、低延迟与高带宽的电信级服务环境,加速网络中各项内容、服务及应用的快速下载,让消费者享有不间断的高质量网络体验。2016年,ETSI把MEC的概念扩展为多接入边缘计算(Multi-AccessEdgeComputing),将边缘计算从电信蜂窝网络进一步延伸至其他无线接入网络(如WiFi)。至此,MEC可以看作是一个运行在...

(转)深度解析 PouchContainer 的富容器技术

转载 2019-05-04 02:33 阅读(166)次
最近阅读了阿里的pouchcontainer,容器方面还不敢说精通,但我觉得在原有(旧)服务迁移容器过程中,考虑运维工具和一些系统服务还是很常见且需要考虑的。本文转载:作者:阿里开发者链接:https://www.jianshu.com/p/efb6dba9fa6a来源:简书PouchContainer 是阿里巴巴集团开源的高效、轻量级企业级富容器引擎技术,拥有隔离性强、可移植性高、资源占用少等特性。可以帮助企业快速实现存量业务容器化,同时提高超大规模下数据中心的物理资源利用率PouchContainer 源自阿里巴巴内部场景,诞生初期,在如何为互联网应用保驾护航方面,倾尽了阿里巴巴工程师们的...

云原生架构概述

转载 2019-03-18 01:01 阅读(193)次
云原生架构概述 1. 什么是云原生 1.1 CNCF组织 在讲云原生之前,我们先了解一下CNCF,即云原生计算基金会,2015年由谷歌牵头成立,基金会成员目前已有一百多企业与机构,包括亚马逊、微软。思科等巨头。 目前CNCF所托管的应用已达14个,下图为其公布的Cloud Native Landscape,给出了云原生生态的参考体系。Cloud Native Landscape 1.2 云原生 CNCF给出了云原生应用的三大特征: 容器化封装:以容器为基础,提高整体开发水平,形成代码和组件重用,简化云原生应用程序的维护。在容器中运行应用程序和进程,并作为应用程序部署的独立单元,实现高水平资源...

云原生是什么?软件开发的现代方法

转载 2019-03-17 23:55 阅读(167)次
“云原生”这个词被大量引用,尤其是云服务商。不仅如此,云原生甚至还有自己的基金会:由Linux基金会于2015年推出的云原生应用基金会(CNCF)。 “云原生”定义 在一般用法中,“云原生”是一种构建和运行应用程序的方法,它利用了云计算交付模型的优势。“云原生”是关于如何创建和部署应用程序,和位置无关。 这意味着应用程序位于云中,而不是传统数据中心。 CNCF将“云原生”定义的更为狭窄,意味着使用开源软件堆栈进行容器化,其中应用程序的每个部分都打包在自己的容器中,动态编排,以便每个部分都被主动调度和管理,以优化资源利用率和面向微服务的应用程序,以提高应用程序的整体灵活性和可维护性。 咨询公司D...

MTU和MSS的原理

原创 2019-01-31 01:15 阅读(196)次
以太网是当今现有局域网采用的最通用的通信协议标准。而以太网规定了MTU。什么是MTU? 我们先看看网络的原理图  不过这张图不是很准确。因为如果上层传输的数据包很大,就会被拆分。 举个例子, 网络层的数据如果过长, 是没法直接加载链路层上的, 需要将网络层的数据分片, 然后在数据链路层组装成多个帧(而不是一个)。 这点在图上没体现出来。但想想也挺难画出来的。看到网上有朋友碰这张图误人子弟。其实有点难为这张图了。 拆分后有什么坏处呢? 网络通信,尽一切可能避免IP的分片!为什么?因为负责IP分片的那台主机、路由器会花费很多CPU资源来处理分片,同时负责重组IP分片的主机、路由器则需要...

(转)终于等到你!阿里正式向 Apache Flink 贡献 Blink 源码

转载 2019-01-28 11:41 阅读(210)次
Blink简介Apache Flink是德国柏林工业大学的几个博士生和研究生从学校开始做起来的项目,早期叫做Stratosphere。2014年,StratoSphere项目中的核心成员从学校出来开发了Flink,同时将Flink计算的主流方向定位为流计算,并在同年将Flink捐赠Apache,后来快速孵化成为Apache的顶级项目。现在Flink是业界公认的最好的大数据流计算引擎。 阿里巴巴在2015年开始尝试使用Flink。但是阿里的业务体量非常庞大,挑战也很多。彼时的Flink不管是规模还是稳定性尚未经历实践,成熟度有待商榷。为了把这么大的业务体量支持好,我们不得不在Flink...

(转)SD-WAN技术分析

转载 2019-01-12 11:28 阅读(172)次
原文地址应该是这里 https://www.sdnlab.com/17810.html,但是他的图片似乎是无法显示了。找了很久组合出来。1.概述 宽带接入以及Internet骨干网容量的持续提升,促使企业WAN技术变革。在已有专线的基础上,SD-WAN提供了一种低成本的快捷方案,正受到业界的追捧。本文介绍企业WAN技术演进、SD-WAN应用场景及解决方案、SD-WAN现状及挑战等。2.企业WAN技术演进 传统企业应用,包括E-mail、文件共享、Web应用等,采用集中部署的方式,通常企业会在总部部署数据中心,并通过租用运营商专线(包括SDH、OTN、Ethernet、MPLS等),将分支机构连...

NTP FLOOD的原理

原创 2019-01-08 01:52 阅读(178)次
NTP FLOOD是DDOS(分布式拒绝服务攻击)攻击的一种,是一种网络层(三层)攻击分有两种1. Ntp Reply Flood2. Ntp Request Flood这里来分析一下这两种攻击的原理。这种攻击是一种利用网络中NTP服务器的脆弱性。NTP服务器【Network Time Protocol(NTP)】是用来使计算机时间同步化的一种协议,它可以使计算机对其服务器或时钟源(如石英钟,GPS等等)做同步化,它可以提供高精准度的时间校正(LAN上与标准间差小于1毫秒,WAN上几十毫秒),且可介由加密确认的方式来防止恶毒的协议攻击。Ntp Reply Flood有两个指...

(转)为什么说要搞定微服务架构,先搞定RPC框架?

转载 2019-01-04 02:40 阅读(159)次
原地址:https://mp.weixin.qq.com/s/jUgmW3oflsTwyX-6kNZCfw? 增加了一段说明一、需求缘起服务化的一个好处就是,不限定服务的提供方使用什么技术选型,能够实现大公司跨团队的技术解耦,如下图:服务A是欧洲团队提供服务,欧洲团队的技术背景是Java,可以用Java实现服务;服务B是美洲团队提供服务,可以用C++实现服务;服务C是中国团队提供服务,可以用Go实现服务;服务的上游调用方,按照接口、协议即可完成对远端服务的调用。但实际上,99.9%的公司的团队规模有限,技术团队人数也有限,基本是使用同一套技术体系来调用和提供服务的: 这样的话,如果没...

HTTP1.0,HTTP1.1,HTTP2.0升级的变化和区别

原创 2019-01-03 21:09 阅读(343)次
HTTP协议 HTTP,文本传输协议,它是在应用层(第七层)上的协议,与它对接的传输层(第四层)的协议是TCP。 HTTP是基于TCP/IP协议的,创建一个TCP连接是需要经过三次握手的,有一定的开销,如果每次通讯都要重新建立连接的话,对性能有影响。因此最好能维持一个长连接,可以用个长连接来发多个请求。HTTP 1.0: HTTP1.0 是浏览器的每次请求都需要与服务器建立一个TCP连接,服务器处理完成后立即断开TCP连接(无连接),服务器不跟踪每个客户端也不记录过去的请求(无状态)。因为HTTP/1.0中默认使用Connection: close。HTTP 1.1: 但其实HTTP 1.0也...

(转)spring cloud 版本说明

转载 2019-01-02 02:12 阅读(140)次
我在学习spring cloud 的时候,对于中文网站上有不同版本做了简单了解。跟eclipse的版本一样spring cloud也用了一些特殊的英文词来表示版本号。本文转自 https://blog.csdn.net/ljj_9/article/details/78645267Spring Cloud是什么?Spring Cloud为开发者提供了一套可以用来快速搭建分布式系统中常见模式的工具。提取主干即是Spring Cloud提供了一套工具。这些工具为开发人员提供了分布式系统下常见问题的通用解决方案。这些方案涵盖了配置管理,服务发现,断路器,智能路由,微代理,控制总线,一次性TO...

DNS的原理

原创 2018-12-31 00:27 阅读(145)次
域名(Domain Name),是由一串用点分隔的名字组成的互联网上某台计算机或某组计算机的标识,它的目的是为了方便人们更简单便捷地访问互联网上的服务。在实际的系统实现中,域名通过DNS(Domain Name System)系统转化为服务器的IP地址,以方便机器通过IP进行寻址和通信。上述行为,我们称之为域名解析。DNS( Domain Name System)是一种组织成域层次结构的计算机和网络服务命名系统,使用的是UDP协议的53号端口,它用于TCP/IP网络,它所提供的服务是用来将主机名和域名转换为IP地址的工作。DNS就是这样的一位“翻译官”一、基本概念 在介绍DNS服务器...
DNS

邮件的发展历史和重要协议的作用

原创 2018-12-30 16:13 阅读(987)次
Email已经盛行了很多年。但里面的一些原理并不是很多人都懂的。本文深入浅出来介绍这个概念一、Emali的起源: 这段没兴趣可以跳过 1965 年,麻省理工学院(MIT)开发了名为「MAILBOX」的电子邮件系统,但它只能在同一台电脑上使用。在 1960 年代,电脑不像今天这么廉价易得,每一台大型计算机都有超过 100 位的使用者。每一个使用者都要从「哑终端 (dumb terminals)」上通过自己的办公桌面连接到大型计算机上,这些哑终端没有存储空间,他们必须连接到大型机上工作(这个原理可以跟现在无盘工作站类比一下)。 也就是刚开始邮件只能发到同一个计算机上的其他用户手上。 1971 年,...

CI/CD的意义

原创 2018-11-25 02:28 阅读(208)次
近几年软件业已经经常能看到CI/CD这个词。 软件开发上线过程就好比工厂生产产品一样,以快速、自动化和可重复的方式从源代码生成发布版本。 如何完成这项工作的总体设计称为“持续交付”(CD)。启动装配线的过程称为“持续集成”(CI)。确保质量的过程称为“持续测试”,将最终产品提供给用户的过程称为“持续部署”。一些专家让这一切简单、顺畅、高效地运行,这些人被称为运维开发DevOps践行者。 将源代码转换为可发布产品的多个不同的任务task和作业job通常串联成一个软件“管道”,一个自动流程成功完成后会启动管道中的下一个流程,通常称之为持续交付管道。CI:   持续集成。是在源代...

(转)redis缓存穿透和缓存失效的预防和解决

转载 2018-09-14 00:28 阅读(214)次
虽然本文是说redis,但其实是缓存普遍存在的问题,所以也适用于memcache等缓存技术 原文地址 https://blog.csdn.net/qq_36858183/article/details/78424690 作者:OuYangZhiPeng_ 如果不能转载请联系我删除。 缓存穿透: 缓存穿透是指查询一个一定不存在的数据,由于缓存是不命中时需要从数据库查询,查不到数据则不写入缓存,这将导致这个不存在的数据每次请求都要到数据库去查询,造成缓存穿透。 解决办法: 1. 对所有可能查询的参数以hash形式存储,在控制层先进行校验,不符合则丢弃。还有最常见的则是采用布隆过滤...

BGP多线机房

转载 2018-08-29 00:34 阅读(201)次
我们在购买虚拟主机、云主机和VPS主机等主机产品时,都会涉及到线路选择,而在线路选择中,我们经常会看到其中有BGP机房。那么,BGP机房是什么意思呢?在它的优势又是什么呢? 首先说一说国内存在的南北线路互通的问题。这个问题从国内电信和网通分开之后开始出现的,由于北方大部分使用的是网通线路,而南方使用的是电信的线路,如果网站服务器是电信线路,那么北方网民访问会非常慢,同理,南方的网站北方网民访问也很慢。为了解决这个问题,IDC服务商采用很多技术手段来解决这一问题,其中就包括BGP技术。 那什么是BGP技术? BGP(BGP(边界网关协议)主要用于互联网AS(自治系统)之间的互联,BGP的最主要功...
BGP

Java程序员月薪达到三万,需要技术水平达到什么程度?(转)

转载 2018-08-21 16:26 阅读(212)次
最近看到一篇文章,是谈论JAVA的收入水平。几张图还是包含了主要的知识点的。其实这些知识全部看了要花好多时间的,但确实对刚工作不久的小伙伴是一个正确方向的指引。 原文地址:https://blog.csdn.net/bntx2jsqfehy7/article/details/80269618 ,但他也是转载的,并且没有注明出处,恕我无法找到源头。 后面一些宣传的广告我就去掉了。 最近跟朋友在一起聚会的时候,提了一个问题,说Java程序员如何能月薪达到三万,技术水平需要达到什么程度?人回答说这只能是大企业或者互联网企业工程师才能拿到。也许是的,小公司或者非互联网企业拿二万的不太可能是码农了,应该...

B树

原创 2018-07-23 17:40 阅读(212)次
大规模数据存储中,实现索引查询是在这样一个实际背景下,树单个节点存储的元素数量是有限的(如果元素数量非常多的话,查找就退化成节点内部的线性查找了),这样导致二叉查找树结构由于树的深度过大而造成磁盘I/O读写过于频繁,进而导致查询效率低下(为什么会出现这种情况,因为磁盘的操作费时费资源,如果过于频繁的多次查找势必效率低下,详见磁盘读取数据的原理)。 根据磁盘查找存取的次数往往由树的高度所决定,所以,只要我们通过某种较好的树结构减少树的结构尽量减少树的高度,那么是不是便能有效减少磁盘查找存取的次数呢?那这种有效的树结构是一种怎样的树呢? 在无法减少查询需求(数据量)的情况下,那么如何减少树的深度,...

(转)为什么 Go 语言允许百万级别的 goroutines,而 Java 只允许数千级别的

转载 2018-07-22 23:10 阅读(247)次
原文:https://rcoh.me/posts/why-you-can-have-a-million-go-routines-but-only-1000-java-threads/ 译文:https://studygolang.com/articles/13612 作者:Russell Cohen  译者:skyismine2010  校对:polaris1119 很多有过 JVM 相关语言工作经验的程序员或许都遇到过如下问题:[error] (run-main-0) java.lang.OutOfMemoryError: unable to create native ...

磁盘读取数据的原理

原创 2018-07-22 12:58 阅读(224)次
数据库的数据一般都是存储在磁盘上,明白磁盘读取数据的原理,才能设计出提高数据库检索速度的设计。 我们知道信息存储在硬盘里,把它拆开也看不见里面有任何东西,只有些盘片。假设,你用显微镜把盘片放大,会看见盘片表面凹凸不平,凸起的地方被磁化,凹的地方是没有被磁化;凸起的地方代表数字1(磁化为1),凹的地方代表数字0。因此硬盘可以以二进制来存储表示文字、图片等信息。 磁盘是一个扁平的圆盘(与电唱机的唱片类似)。磁盘的基本组件可分为以下几部分:磁头,盘片,盘面,磁道,柱面,扇区等。 盘面上有许多称为磁道的圆圈,数据就记录在这些磁道上。磁盘可以是单片的,也可以是由若干盘片组成的盘组。一块硬盘一般有多块盘片...

InfluxDB架构设计和数据布局

原创 2018-07-20 11:44 阅读(417)次
InfluxDB架构设计和数据布局 作为专门针对时间序列数据的存储,InfluxDB在使用的时候也需要针对本身的特性结合需求来设计schema。 1. 针对tags和field的特性进行设计schema tag 被索引,查询速度快。field没有做索引,查询需要scan,速度慢。 根据以上特性 ⑴ 常用来查询的数据存放在tags中 ⑵ 计划用来group by() 的数据,放在tags中 ⑶ 数据计划用InfluxQL function来处理的,放在fields中 ⑷ 数据需要表示为string以外的值,放在fields中。(tags始终表示为字符串) 2. 避免用InfluxQL的关键字...

InfluxDB的设计见解和权衡

原创 2018-07-19 18:21 阅读(297)次
作为时序数据库,InfluxDB在设计的时候,对一些具体问题做了优化,提高性能的同时也需要作出权衡,削减一些功能。 如下  方案一:趋向赞成问题,方案二:趋向反对问题 1. 当DB收到多次相同的数据,认为他是client多次发送了相同的数据。 方案一:赞成,为此提高性能,照单全收。InfluxDB是进行field set的整合。 方案二:反对,不支持存储重复数据,可能发生覆盖。 2. 时序数据库很少发生删除。如果发横几乎是删除大范围的旧数据,而不是删除刚刚插入的新数据。 方案一:限制删除权限,增加读写性能。 方案二:删除功能强烈限制。(我理解甚至不提供删除功能) 3. 更新数据很少发...

初识InfluxDB

原创 2018-07-18 16:05 阅读(266)次
如果对时序数据库概念还不是很了解,建议先看我的上一篇文章 What is a Time Series Database? InfluxDB主要用来对大量带时间戳数据的存储,包括DevOps监控,应用程序metrics,物联网传感器数据和实时分析。 通过配置InfluxDB以保持数据达到规定的时间长度,自动删除过期数据,从而节省机器空间。 InfluxDB还提供类似SQL的查询语言,用于与数据交互。 它用GO编写,所以编译后是没有对外部依赖的二进制文件。 它具有高性能,对相同的数据有高吞吐量的插入,压缩和实施查询。TSM引擎允许高吞吐量的数据插入和数据压缩。 它提供了高性能的API和H...

python入门操作笔记

原创 2018-07-17 14:41 阅读(286)次
本文纯粹是个人python入门的一个笔记,比较早,是从笔记程序中搬过来。主要记录一下入门使用。 官网下载python 版本,注意2和3差别很大,我用的是python3。 启动自带的shell   - IDLE  出现python shell, 输入命令就可以执行,ALT+N是上一条执行的命令。ALT+P是下一条命令。CTRL+N可以新建一个窗口。新窗口中用输入+tab键可以做到提示和自动补全。F5自动执行,执行前会先保存。 python3语法   print后必须带括号, 字符串 + 数字会报错,类型不匹配。 python是用缩进来代替java...