容器技术

Kubernetes 是什么?

早过忘川 提交于 2019-12-12 03:15:41
Kubernetes 是什么 都9102年了,你再不了解 Kubernetes 就真的 out 了!!!(贩卖焦虑体 kubernetes 是什么?Kubernetes 这个词来源于希腊语,有主管、舵手、船长的意思,我们从中能听到一丝管理的意味,从图标中也能看出来。 在 kubernetes 的网站上,描述 kubernetes 是: 生产级别的容器编排系统 从这个定义我们可以提炼出三个关键字: 生产级别 容器 编排系统 那下面分别解释下 k8s 的几个关键字(k8s是kubernetes的缩写,中间的8代表k与s间省略的8个字母,类似的缩写方式还有 internationalization 缩写为 i18n)。 1 生产级别 说 k8s 是生产级别有如下几个原因: k8s 是 Google 开源的系统,基于 Google 的 Borg 和 Omega 系统设计,这套系统已经在 Google 内部运行了10年以上,并还在支持Google 每周数十亿容器的运行。 k8s 是 CNCF (Cloud Native Computing Foundation)的首个毕业项目。 k8s 在2015年6月发布首个生产级成熟版本1.0后,目前(19年8月)已经进展到1.15版本,已经被各大公司广泛使用。 2 容器 没有集装箱,就没有全球化 什么是容器?容器的英文为 container

编程思想之IOC与DI

被刻印的时光 ゝ 提交于 2019-12-12 00:48:12
什么是IoC IoC(Inversion of Control),即控制反转,不是什么技术,是面向对象编程中的一种编程思想,可以用来降低代码之间的耦合度。 在JAVA中,当我们需要使用一个对象的时候,传统的方式是 Lang lang = new Lang(); 而IoC意味着将你设计好的对象交给容器控制,而不是在你的对象内部直接控制。 举个通俗易懂的例子,网约车出现以前我们是如何叫车的?这能站在路边,招手,叫出租车。还要考虑是否在高峰期,你站的路段会不会有出租车经过,这个过程是麻烦的。传统的程序开发也是如此,在一个对象中,如果想要使用另外一个对象,就必须得到它,自己new一个,有些对象使用完还要将其销毁,比如Connection等。对象与其他接口或类耦合度高。 此时,滴滴这样的网约车平台出现了,所有想载客的私家车在滴滴登记服务类型,身份信息。此时你再想叫车,只需要坐在家里打开APP输入目的地,选择服务类型,滴滴自动安排一个符合要求的车到你面前,为你服务,方便,完美! IOC容器就好比是滴滴,所有的类都会在IoC容器中登记,告诉IoC容器你是个什么东西,你需要什么东西,然后IoC容器会在程序运行到适当的时候,把你需要的东西主动给你,同时也把你交给需要你的东西。 深入分析: 谁控制谁,控制什么: IoC容器控制了外部资源获取,外部资源不仅指对象,还包括文件等

并发容器的原理,七大并发容器详解、及使用场景

我是研究僧i 提交于 2019-12-11 23:47:05
并发容器的由来 在Java并发编程中,经常听到Java集合类,同步容器、并发容器,那么他们有哪些具体分类,以及各自之间的区别和优劣呢? 只有把这些梳理清楚了,你才能真正掌握在高并发的环境下,正确使用好并发容器,我们先从Java集合类,同步容器谈起。 1.什么是同步容器 Java的集合容器框架中,主要有四大类别:List、Set、Queue、Map,大家熟知的这些集合类ArrayList、LinkedList、HashMap这些容器都是非线程安全的。 如果有多个线程并发地访问这些容器时,就会出现问题。因此,在编写程序时,在多线程环境下必须要求程序员手动地在任何访问到这些容器的地方进行同步处理,这样导致在使用这些容器的时候非常地不方便。 所以,Java先提供了同步容器供用户使用。 同步容器可以简单地理解为通过synchronized来实现同步的容器 ,比如Vector、Hashtable以及SynchronizedList等容器。 2.同步容器,主要的分类: Vector Stack HashTable Collections.synchronized方法生成 同步容器面临的问题 可以通过查看Vector,Hashtable等这些同步容器的实现代码,可以看到这些容器实现线程安全的方式就是将它们的状态封装起来, 并在需要同步的方法上加上关键字synchronized。

并发容器的原理,七大并发容器详解、及使用场景

夙愿已清 提交于 2019-12-11 22:40:49
【推荐】2019 Java 开发者跳槽指南.pdf(吐血整理) >>> 并发容器的由来 在Java并发编程中,经常听到Java集合类,同步容器、并发容器,那么他们有哪些具体分类,以及各自之间的区别和优劣呢? 只有把这些梳理清楚了,你才能真正掌握在高并发的环境下,正确使用好并发容器,我们先从Java集合类,同步容器谈起。 1.什么是同步容器 Java的集合容器框架中,主要有四大类别:List、Set、Queue、Map,大家熟知的这些集合类ArrayList、LinkedList、HashMap这些容器都是非线程安全的。 如果有多个线程并发地访问这些容器时,就会出现问题。因此,在编写程序时,在多线程环境下必须要求程序员手动地在任何访问到这些容器的地方进行同步处理,这样导致在使用这些容器的时候非常地不方便。 所以,Java先提供了同步容器供用户使用。 同步容器可以简单地理解为通过synchronized来实现同步的容器 ,比如Vector、Hashtable以及SynchronizedList等容器。 2.同步容器,主要的分类: Vector Stack HashTable Collections.synchronized方法生成 同步容器面临的问题 可以通过查看Vector,Hashtable等这些同步容器的实现代码,可以看到这些容器实现线程安全的方式就是将它们的状态封装起来,

微服务盛行的时代还不会用Docker?别找了,Docker从入门到实战都在这里了!

筅森魡賤 提交于 2019-12-11 17:22:39
微服务最近几年在互联网行业是越来越火热,Docker也是程序员不得不掌握的技术点,今天我们就来了解关于微服务中的Docker技术。 如果你是一位技术爱好者,那么一定没少听说过Docker吧,这绝对是在技术圈线上线下都在谈论的一个热门话题。 Docker也可以被称为轻量级虚拟化技术。与传统的VM相比,它更轻量,启动速度更快,单台硬件上可以同时跑成成百上千个容器,所以非常适合在业务高峰期通过启动大量容器进行横向扩展。 第一本Docker书,带你走进神奇的Docker世界,感受它的奇妙之处。需要获取完整文档用以学习的朋友们可以关注一下小编,点击下方传送门免费获取。 史上最详细面试学习核心笔记免费获取:分布式+中间件+算法+JVM+数据库+SSM框架+Redis+消息队列+Spring全家桶等 第一本Docker书 第1 章 简介 1.1 Docker 简介 1.2 Docker 组件 1.3 我们能用Docker 做什么 1.4 Docker 与配置管理 1.5 Docker 的技术组件 1.6 本书的内容 1.7 Docker 资源 第2 章 安装Docker 2.1 安装Docker 的先决条件 2.2 在Ubuntu 中安装Docker 2.3 在Red Hat 和Red Hat 系发行版中安装Docker 2.4 在OS X 中安装Boot2Docker 2.5 在Windows

微服务

你。 提交于 2019-12-11 03:40:54
微服务 微服务是一个新兴的软件架构,就是把一个大型的单个应用程序和服务拆分为数十个的支持微服务。一个微服务的策略可以让工作变得更为简便,它可扩展单个组件而不是整个的应用程序堆栈,从而满足服务等级协议。 一、微服务应用设计原则 (一)AKF扩展立方体:是一个叫AKF的公司的技术专家抽象总结的应用扩展的三个维度。理论上按照这三个扩展模式,可以将一个单体系统,进行无限扩展。 X 轴 :指的是水平复制,很好理解,就是讲单体系统多运行几个实例,做个集群加负载均衡的模式。 Z 轴 :是基于类似的数据分区,比如一个互联网打车应用突然或了,用户量激增,集群模式撑不住了,那就按照用户请求的地区进行数据分区,北京、上海、四川等多建几个集群。 Y 轴 :就是我们所说的微服务的拆分模式,就是基于不同的业务拆分。 (二)无状态服务: 什么是状态:如果一个数据需要被多个服务共享,才能完成一笔交易,那么这个数据被称为状态。进而依赖这个“状态”数据的服务被称为有状态服务,反之称为无状态服务。 那么这个无状态服务原则并不是说在微服务架构里就不允许存在状态,表达的真实意思是要把有状态的业务服务改变为无状态的计算类服务,那么状态数据也就相应的迁移到对应的“有状态数据服务”中。 (三)无状态通信—Restfu API Restful 通信风格 : 无状态协议HTTP,具备先天优势,扩展能力很强。例如需要安全加密是

宜信容器云排错工具集

匆匆过客 提交于 2019-12-11 00:03:42
宜信容器云是一套基于kubernetes的容器管理平台。业务线用户在容器云上部署应用程序时,常常会遇到容器无法启动或者应用程序运行不正常的情况。为了方便用户排查在应用上云过程中的问题,我们在web端集成了一系列的排错方式,如下图: 一、终端信息 终端信息查看的是容器实例运行时的标准输出日志。 效果等同于: kubectl logs PODNAME [-c CONTAINER] 基本原理如下图: 应用部署时,所属节点的kubelet通过grpc调用容器运行时接口(container runtime interface),来请求docker守护进程创建容器运行时。 此时,docker守护进程会创建一个协程来接收容器运行时的标准输出日志,这个协程最终将STDOUT(标准输出)的日志写到容器运行时所在节点的对应目录下: /var/lib/docker/containers/container_id/{container_id-json.log} 如下图: 在web端查看对应实例的终端信息时,kubelet将接收的Api-server请求转化成docker client来请求docker守护进程。Docker守护进程到相应的目录下读取对应容器的日志文件数据,再由kubelet返回日志数据到Api-server,最终显示到web端,供用户查看。 容器日志的生命周期与容器的生命周期一致

微服务

无人久伴 提交于 2019-12-10 15:49:00
单体应用   早些年,各大互联网公司的应用技术栈大致可分为 LAMP(Linux + Apache + MySQL + PHP)和 MVC(Spring + iBatis/Hibernate + Tomcat)两大流派。无论是 LAMP 还是 MVC,都是为单体应用架构设计的,其优点是学习成本低,开发上手快,测试、部署、运维也比较方便,甚至一个人就可以完成一个网站的开发与部署。   以 MVC 架构为例,业务通常是通过部署一个 WAR 包到 Tomcat 中,然后启动 Tomcat,监听某个端口即可对外提供服务。早期在业务规模不大、开发团队人员规模较小的时候,采用单体应用架构,团队的开发和运维成本都可控。   然而随着业务规模的不断扩大,团队开发人员的不断扩张,单体应用架构就会开始出现问题。我估计经历过业务和团队快速增长的同学都会对此深有感触。从我的角度来看,大概会有以下几个方面的问题。   想要解决上面这些问题,服务化的思想也就应运而生。 什么是服务化   用通俗的话来讲,服务化就是把传统的单机应用中通过 JAR 包依赖产生的本地方法调用,改造成通过 RPC 接口产生的远程方法调用。一般在编写业务代码时,对于一些通用的业务逻辑,我会尽力把它抽象并独立成为专门的模块,因为这对于代码复用和业务理解都大有裨益。   以微博系统为例,微博既包含了内容模块,也包含了消息模块和用户模块等

kvm技术与容器的区别

江枫思渺然 提交于 2019-12-10 15:32:07
没有虚拟化技术的原始年代 我们仔细想想,在没有计算虚拟化技术的“远古”年代,如果我们要部署一个应用程序(Application),一般的步骤是怎么样的? 第一步肯定是先要准备一台物理服务器,然后在物理服务器上安装一个操作系统(Operating System),有了操作系统之后,便在操作系统上安装运行我们的应用程序,这个过程可以用下面的图来表示: 物理服务器部署应用示意图 那么,这种方式有什么问题呢?其实,在物理机上部署应用有以下几个缺点: 部署非常慢:因为我们得先准备硬件服务器,接着还要安装操作系统,然后再部署应用程序,而且应用程序还有很多的依赖软件,所以这个过程是比较慢的。 成本非常高:主要是物理器成本太高,即使是部署一个简单的应用,也需要一台服务器。 资源浪费:如果应用太简单,也容易浪费硬件资源,比如CPU和内存 迁移和扩展太慢:如果需要迁移应用,或者扩展应用,都要再准备其他的物理服务器,过程很麻烦,也很慢。 那么有什么办法可以解决这些问题呢?答案便是虚拟化技术。 使用虚拟机部署应用程序的年代 什么是虚拟化技术 谈到计算机的虚拟化技术,我们直接想到的便是虚拟机,虚拟机允许我们在一台物理计算机模拟出多台机器,简单地理解,虚拟化技术就是在一台物理计算机上,通过中间虚拟软件层Hypervisor隔离CPU、内存等硬件资源,虚拟出多台虚拟服务器,这样做的话

【杭研大咖说】王新勇:死磕云原生的“懒人”

僤鯓⒐⒋嵵緔 提交于 2019-12-10 14:53:20
在生活中,作为户外运动爱好者,王新勇常常于周末爬山,享受攀越高峰之后见到的无限风光 ;在工作上,作为网易杭州研究院(网易杭研)的系统开发专家,王新勇则钟情于征服云计算领域的一座座“山峰”。业务部门邀请他去排查问题,常常惊异于他找出异常的速度和解决故障的效率,心悦诚服地称他为“大神”。 然而,在王新勇看来,自己不过是一个“懒人”。因为“懒”于投简历、笔试、面试,研究生一毕业就早早锁定声名在外、环境独特的网易杭研的工作;因为“懒”于做重复的事情,尽量把重复的需求都写成代码,尽量采用自动化(或者说DevOps)工具;因为“懒”于查阅所需要的知识,把常用的技术细节、工具用法都装到自己大脑之中……正是这些懒人举动,让他的工作事半功倍,面对难题时举重若轻。 网易杭州研究院系统开发专家 王新勇 求职“懒”:做有趣的事 2013年,王新勇研究生毕业。相比一些同学不停地跑场,不停地投简历,不停地笔试、面试,王新勇显得比较懒,在拿到网易的offer(也是第一个offer)之后,便决定放弃其他所有的面试和笔试。一来网易是成熟的大公司,工作环境、福利业界有名;二来杭州离安徽老家不远;三来实习期为多拿几份offer奔波太累。 当然,“懒”也不是无条件的,前提是这份工作足够“有趣”。在王新勇的认知里,“有趣”的莫过于底层开发。 在学校,在实习期间,他鼓捣的都是与网络、分布式通信中间件相关的东西