容器技术

Docker 的步伐:DevOps 与 OS 化

こ雲淡風輕ζ 提交于 2019-11-29 06:19:29
过去十年云计算的发展,在 IT 领域为共享经济提供了新的机遇;而过去五年移动互联网的兴起,更是在诸多方面给 IT 架构提出了新的挑战。新的挑战,新的机遇,同时也意味着新的活力。一时间,Docker 、微服务、DevOps 以及精益研发等新词汇,在较短的时间内,即充斥着整个 IT 行业。基础设施领域,巨头的垄断,以及技术壁垒的存在,往往会限制入局者,也让后来者望而却步。面对业务需求的不断演进,软件提供商的应对能力如何,在机遇面前同样接受考验。 往往是时代的领航者,首先嗅探到历史变革前的酝酿。我们大致看到: 对的时机,新的思想总显得有些俏皮,同时还不失冒进。 思想背后,我们也总能发现:有些公司进行着那些惊为天人的尝试,他们激进,他们开拓,他们从 0 到 1 。Docker 这家公司在这其中不可谓是浓墨重彩的一笔。 目前为止,历史给了 Docker 三年多的时间。这三年中,Docker 自始至终将 " Build , Ship , Run " 当作公司的宗旨,也就是帮助用户完成任意应用的构建、发布与运行。 通过总结 Docker 的三年,我们不难发现 Docker 的步伐: 第一年,专注软件构建,对接构建下游,营造镜像生态 第二年,服务容器管理,发布调度平台,打造交付流程 第三年,整合企业资源,完善平台功能,着手应用编排 如今,在这第四年过半之际,再去解读 Docker,我们会发现

Struts,Hibernate,Spring经典面试题收藏

风格不统一 提交于 2019-11-29 05:58:16
Struts,Hibernate,Spring经典面试题收藏 以备不时只需。 关键字: struts, hibernate, spring 先简单的提一下, 要开发出好的,高质量的j2ee系统, 评价系统的高低水平 ,解耦性 至关重要! 而在开发中主要分成三个层次,表现层, 服务层, 持久层。从这三层次去解藕。 spring的作用就是把服务从表现层中,抽取出來, hibernate把持久层抽取出來。 剩下的表现层交给 struts控制 但是面对那么多的框架,为什么在持久层中我们选择hibernate ,在服务层我们用spring,下面都有说。 Hibernate工作原理? 原理: 1.读取并解析配置文件 2.读取并解析映射信息,创建SessionFactory 3.打开Sesssion 4.创建事务Transation 5.持久化操作 6.提交事务 7.关闭Session 8.关闭SesstionFactory 为什么要用 : 1. 对JDBC访问数据库的代码做了封装,大大简化了数据访问层繁琐的重复性代码。 2. Hibernate是一个基于JDBC的主流持久化框架,是一个优秀的ORM实现。他很大程度的简化DAO层的编码工作 3. hibernate使用Java反射机制,而不是字节码增强程序来实现透明性。 4. hibernate的性能非常好,因为它是个轻量级框架

Hibernate Spring 面试题

左心房为你撑大大i 提交于 2019-11-29 05:57:50
###1. 关于PreparedStatement和Statement具体区别 (1) PreparedStatement是 预先编译的语句 ,而Statement则 不是预先编译的 ,在DBMS中处理管理中 Statement是要进行语法、语义校验的 ,而PreparedStatement则不要。 (2) PrepareStatement中执行的SQL语句中是 可以带参数的 ,而 Statement则不可以 。 比如: PreparedStatement pstmt = con.prepareStatement("UPDATE EMPLOYEES SET SALARY = ? WHERE ID = ?"); pstmt.setBigDecimal(1, 153833.00); pstmt.setInt(2, 110592); pstmt. executeUpdate(); (3) 当处理批量SQL语句时,这个时候就可以体现PrepareStatement的优势, 由于采用Cache机制,则预先编译的语句,就会放在Cache中,下次执行相同SQL语句时,则可以直接从Cache中取出来 。 ###2. 说出数据连接池的工作机制是什么? J2EE 服务器启动时会 建立一定数量的池连接 ,并一直维持不少于此数目的池连接。客户端程序需要连接时,池驱动程序会

Docker和容器云落地一年后的反思

社会主义新天地 提交于 2019-11-29 05:22:53
我与容器的缘分起源于我在 Google 内部研发容器集群管理系: Cluster Management。谷歌内部一切皆容器,搜索、视频、大数据、内部工具等核心业务都以容器的方式运行在容器编排系统 Borg 上。2014年,随着公司内部的“Ursquake” (注:Urs 是负责基础设施的高级副总裁),我转投到了公有云 Google Cloud Platform 的建设当中。2014年3月份,在由各部门基础设计技术带头人参加的谷歌内部的云峰会中,我做为早期参与者之一加入到了 Kubernetes 的项目中。 从2015年回国创业至今,我亲身感受到了国内对于 Docker 的追捧热度。如今,Docker已经迅速在国内形成了“要是不知道 Docker 都不好意思和人打招呼”的火热势态;在互联网巨头和独角兽企业中,甚有从“谁在用 Docker”转变为“谁没用 Docker”之势。 Caicloud 基于 Kubernetes 开源技术,力争为企业提供 Gifee(Google’s Infrastructure for Everyone Else)的体验。目前已经成功落地于多家国内大型企业,其中不乏传统国有企业。在不少案例中,我们都发现一个明显的趋势:很多企业一开始受到 Docker 现象的鼓吹,认为 Docker 是万灵药,然而在自己尝试进行开发、生产使用时才发现 Docker

2019/07/29 Linux容器和lxc(01)

不羁的心 提交于 2019-11-29 04:57:28
容器是一种基础工具;泛指任何可以用于容纳其它物品的工具,可以部分或完全封闭,被用于容纳、储存、运输物品;物体 可以被放置在容器中,而容器则可以保护内容物; 人类使用容器的历史至少有十万年,甚至可能有数百万年的历史; v 容器的类型 ɝ 瓶 - 指口部比腹部窄小、颈长的容器。 ɝ 罐 - 指那些开口较大、一般为近圆筒形的器皿。 ɝ 箱 - 通常是立方体或圆柱体。形状固定。 ɝ 篮 - 以条状物编织而成。 ɝ 桶 - 一种圆柱形的容器。 ɝ 袋 - 柔性材料制成的容器,形状会受内容物而变化。 ɝ 瓮 - 通常是指陶制,口小肚大的容器。 ɝ 碗 - 用来盛载食物的容器。 ɝ 柜 - 指一个由盒组成的家俱。 ɝ 鞘 - 用于装载刀刃的容器。 要把信息系统称为容器,也需要容纳物品,物品是虚拟的,是我们的进程文件等等,放置在统一的封闭组件内部,这个组件称为容器 比较成熟的LXC 此前的主机虚拟化技术,每一个运行出来的实例,提供的是从底层的基础硬件开始,一直到高层的基础环境,让每一个对应的虚拟机实例自己拥有可视的而且隔离其他实例的基础硬件CPU,内存等等, 硬件划分后,提供给每个实例,从而让每个实例有了自己的操作系统内核空间和用户空间,作为对应的实例使用者,像使用正常操作系统一样。 隔离性非常好,因为每个主机都有内核,每一个虚拟机的进程是看不到底层Hypervisor

2019/07/31 docker容器和镜像(03)镜像部分

守給你的承諾、 提交于 2019-11-29 04:57:20
docker启动容器完全依靠镜像 分层构建和联合挂载,主要有两层 1.引导文件系统,bootfs,相当于内核,引导用户空间启动的,包括bootloader和kernel,容器启动完 成后会被卸载以节约内存资源; 2.rootfs真正意义上用户空间的根文件系统,位于bootfs之上,表现为docker容器的根文件系统; 传统模式中,系统启动之时,内核挂载rootfs时会首先将其挂载为“只读”模式,完整性自检完成后将其重新挂载为读写模式; docker中,镜像是分层构建,rootfs由内核挂载为“只读”模式,而且一直是只读的,而后通过“联合挂载 ”技术额外挂载一个“可写”层;底下的内容始终都不会改变。所以可以被多容器共享, 而且是分层构建 第一层称为引导文件系统,是一个基本的操作系统,base image,基础镜像 第二层可以添加一些功能,比如编辑器,又多了层镜像 第三次添加httpd,三层镜像 上面的都是只读的 最后额外的附加一层是可写层,这种挂载方式叫联合挂载,每一层的下一层都是它的父镜像,基础镜像 联合挂载用的是Aufs advanced multi-layered unification filesystem:高级多层联合文件系统/高级多层统一文件系统 用于为Linux文件系统实现“联合挂载” aufs是之前的UnionFS的重新实现,2006年由Junjiro

Java图形程序设计学习(1)Swing技术概况

ぐ巨炮叔叔 提交于 2019-11-29 04:42:34
1、GUI编程技术之Swing技术 (1)Swing技术简介 (1)Swing是基于AWT架构之上的,提供功能更强大的用户界面组件;AWT是基本GUI程序设计的类库 (2)Java中的GUI编程技术的发展:AWT,Swing,SWT,JavaFX (2)Swing技术需要用到的API体系结构图 将Swing中的组件划分成3类:容器,控件和主题 容器: JFrame是顶层窗口类,也叫框架。JFrame是特殊的容器,不能放到其它容器里面。 JPanel是面板。一般是将信息绘制到JPanel或者JComponent中,再将面板或容器组件添加到JFrame中显示出来。 布局管理器,作用是如何把组件排列到一个框架内。 控件: 与用户发生交互的功能性零件,比如按钮:JButton 主题: UIManager.setLookAndFeel( UIManager.getSystemLookAndFeelClassName() );采用当前系统的显示风格,最好是在第一句执行 接下来将逐一介绍这些组件的使用。 来源: CSDN 作者: Carl_Jone 链接: https://blog.csdn.net/Carl_changxin/article/details/82938884

Spring特点与工作原理

走远了吗. 提交于 2019-11-29 03:15:00
根据多个参考资料,总结如下: Spring的概念   Spring是一种多层的J2EE应用程序框架,其核心就是提供一种新的机制管理业务对象及其依赖关系。它是一种容器框架,用于创建bean,维护bean之间的关系,它可以管理web层,持久层,业务层等,可以配置各个层的组件并且维护各个层的关系 Spring特点   (1)轻量级:轻量级是针对重量级容器(EJB)来说的,Spring的核心包就不到1M大小,而使用Spring的核心包所需的资源也很小,所以可以在小型设备中使用。     (2)非入侵式:Spring目标是一个非入侵式的服务框架。原因是所有框架都是提供大量的功能供用户去使用,从而简化开发时间和成本,但由于大量的使用了框架的API,使应用程序和框架发生了大量的依赖性,无法从框架中独立出来,更加无法使程序组件在其他程序中使用。   (3)容器:Spring提供了容器功能,容器可以管理对象的生命周期、对象与对象间的关系、我们可以通过编写XML来设置对象关系和初始值,这样容器在启动之后,所有的对象都直接可以使用,不用编写任何编码来产生对象。Spring有两种不同的容器:Bean工厂以及应用上下文 Spring工作原理   Spring内部最核心的就是IOC了,动态注入,让一个对象的创建不用new了,可以自动的生产,这其实就是利用java里的反射,反射其实就是在运行时动态的去创建

k8s管理pod资源对象(上)

安稳与你 提交于 2019-11-29 03:06:37
一、容器于pod资源对象 现代的容器技术被设计用来运行单个进程时,该进程在容器中pid名称空间中的进程号为1,可直接接收并处理信号,于是,在此进程终止时,容器即终止退出。若要在一个容器中运行多个进程,则需要为这些进程提供一个类似于linux操作系统init进程的管控类进程,以树状结构完成多进程的生命周期管理。绝大多数场景中都应该于一个容器中仅运行一个进程,它将日志信息直接输出至容器的标准输出。不过,分别运行于各自容器的进程之间无法实现基于ipc的通信机制,此时,容器间的隔离机制对于依赖于此类通信方式的进程来说却又成了阻碍。pod资源抽象正是用来解决此类问题的组件。pod对象是一组容器的集合,这些容器共享network、uts及ipc名称空间,因此具有相同的域名、主机名和网络接口,并可通过ipc直接通信。为一个pod对象中的各容器提供网络名称空间等共享机制的是底层基础容器pause。 尽管可以将pod类比为物理机或vm,但一个pod内通常仅应该运行一个应用,除非多个进程间有密切关系。不过,有些场景要求必须于同一pod中同时运行多个容器,此时,这些分布式应用必须遵循某些最佳实践机制或基本准则。事实上,k8s并非期望成为一个管理系统,而是一个支持这些最佳实践的向开发人员或管理人员提供更高级别服务的系统。分布式系统设计通常包含以下几种模型: 1、sidecar pattern

Docker之NameSpace与Cgroup

江枫思渺然 提交于 2019-11-29 02:55:31
一、docker容器技术与传统虚拟化技术的比较 Docker容器技术是一个与传统的虚拟化技术有些本质上的差别,传统的虚拟化技术,是站硬件物理资源的基础上,虚拟出多个OS,然后在OS的基础上构建相对独立的程序运行环境,而Docker则是在OS的基础上进行虚拟,所以,Docker轻量很多,因此其资源占用、性能消耗相比传统虚拟化都有很大的优势。 docker容器很快,启动和停止可以在秒级实现,比传统的虚拟化技术要快很多,docker核心解决的问题是利用容器来实现类似VM的功能,从而节省更多的硬件资源,docker容器除了运行其中的应用之外,基本不消耗额外的系统资源,从而在保证性能的同时,减小系统开销,同时,它还可以达到“一次封装,到处运行”的目的。 Docker和传统虚拟化的区别如下: docker和传统虚拟化的架构上的区别如下: 二、NameSpace和Cgroup的概念与作用 Docker中有三个核心概念,分别是镜像、容器、仓库。而镜像的概念主要就是把运行环境和业务代码进行镜像打包,每个镜像都会存在多个“层”,镜像层都是只读的,不能往里写数据,如果想要写,就需要在其基础之上启动成一个容器, 在容器层,我们是可写的。 在镜像的多个“层”中,有一个busybox的概念,我将它理解为欺骗层。 虚拟化的技术就是来解决宿主机与虚拟机之间的耦合问题(简称“解耦”),传统虚拟化是属于完全解耦的