容器技术

下载达 10 万次的 IDEA 插件,K8s 一键部署了解一下?

自作多情 提交于 2019-12-02 22:55:56
作者 | 铃儿响叮当 导读 :涉及开发的技术人员,永远绕不开的就是将应用部署到相应服务器上,本文将给大家讲解:对于容器服务 ACK,怎么实现真正“一键部署”,提高开发部署效率,在 K8s 的运用上做到快人一步。 随着互联网时代的不断发展,开发者可能会面临这样的困境:为了解决问题、提升开发效率而竭力研发出来的“创新”,似乎削弱了他们在公司的重要程度,甚至取代了他们原先的地位。 比如,在云原生时代,部分企业更愿意选择 K8s 来解决运维、弹性的问题,而不是组建一支需要耗费大量雇佣资金、管理资金的研发团队。 对于 K8s,它的价值在于不仅能帮助公司降低运维成本,同时还可以带来弹性、敏捷、可移植能力。 但是对于开发者而言,我们的价值不应该仅仅停留在能与 K8s 解决同样的问题,而是从困境跳脱出来,思考如何更灵活、更高效地运用 K8s 这些 “能为你所用” 的东西,来提升自己的综合技能。 什么是容器服务 ACK 容器服务 ACK 是基于原生 K8s 进行适配和增强,简化集群的搭建和扩容等工作,提供高性能可伸缩的容器应用管理能力,支持企业级容器化应用的全生命周期管理,整合阿里云虚拟化、存储、网络和安全能力,打造云端最佳容器化应用运行环境。 其中的核心功能为: 集群管理 :灵活的地域和网络环境选择,可以根据自己的需求,选择不同的地域创建和删除集群; 多种服务器托管方式

Docker 网络简单说明

蓝咒 提交于 2019-12-02 22:28:30
docker0 网络模型小结 Docker Daemon 会创建出一个名为 docker0 的虚拟网桥 ,用来连接宿主机与容器,或者连接不同的容器。 veth pair 是用于不同network namespace间进行通信的方式,veth pair 将一个 network namespace 数据发往另一个 network namespace 的 veth。 Docker 利用 veth pair 技术,在宿主机上创建了两个虚拟网络接口 veth0 和 veth1(veth pair 技术的特性可以保证无论哪一个 veth 接收到网络报文,都会无条件地传输给另一方)。如下图所示 具体可以参考: http://blog.daocloud.io/docker-bridge/ docker_gwbridge docker_gwbridge 网络在初始化或加入 Swarm 时自动创建。大多数情况下,用户不需要自定义配置,但是 Docker 允许自定义。 docker_gwbridge是一种桥接网络,将 overlay 网络(包括 ingress 网络)连接到一个单独的 Docker 守护进程的物理网络。默认情况下,服务正在运行的每个容器都连接到本地 Docker 守护进程主机的 docker_gwbridge 网络。 来源: https://www.cnblogs.com/klvchen

Spring容器启动源码分析

孤者浪人 提交于 2019-12-02 22:13:53
1. 前言   最近搭建的工程都是基于SpringBoot,简化配置的感觉真爽。但有个以前的项目还是用SpringMvc写的,看到满满的配置xml文件,却有一种想去深入了解的冲动。折腾了好几天,决心去写这篇关于Spring启动的博客,自己是个刚入职的小白,技术水平有限,也是硬着头皮看源码去Debug,很多不懂的地方还请谅解! 2. 概述   先给出几个让我头皮发麻的概念: web容器,Spring容器,SpringMvc容器   容器就是管理对象的地方,例如web容器就是管理servlet的地方,Spring容器就是管理Service,dao等Bean的地方,SpringMvc就是管理Controller等bean的地方(下文会做解释)。一个SpringMvc项目的启动离不开上述三个容器。所以这就是这篇文章的讲点,各个容器的启动过程解析。 3. Web容器初始化过程    官方文档是对于Web容器初始化时是这样描述的(英文不懂,已翻译成中文)   1. 部署描述文件(web.xml)中的<listener>标记的监听器会被创建和初始化   2. 对于实现了ServletContextListener的监听器,会执行它的初始化方法 contextInitialized()   3. 部署描述文件中的<filter>标记的过滤器会被创建和初始化,调用其init()方法   4.

PHP IOC容器

匿名 (未验证) 提交于 2019-12-02 22:11:45
简单得容器: class SomeComponent { protected $_connection ; public function setConnection ( $connection ) { $this ->_connection = $connection ; } public function getConnection ( $connection ) { return $this ->_connection; } } 这个案例可以实现我们在外部注入到SomeComponent类中,不过这样不好得就是只能写一个实例, class SomeComponent { protected $_connection ; public function setConnection ( $key , $connection ) { $this ->_connection[ $key ] = $connection ; } public function getConnection ( $key ) { if ( isset ( $this ->_connection[ $key ] ) ){ return $this ->_connection[ $key ] } else { throw new Exception ( "class not exist" , 1 ); } }

阿里中间件技术:应用服务器篇

一世执手 提交于 2019-12-02 21:56:02
2016-04-20 架构说 19 阅读 应用服务器——系统运行的托管员 综述 阿里巴巴集团有国内最大规模的Java系统,几万台的应用服务器规模也空前庞大,目前主要使用的应用服务器有Tomcat,JBoss和Jetty三种。阿里巴巴自从2004年开始转向Java技术平台后,先后经历了从WebLogic到Jboss和Tomcat迁移。到了2008年,随着更为轻量级的Tomcat和Jetty容器的迅速发展,越来越多的应用系统开始尝试使用Tomcat或Jetty作为底层应用服务器。2013年上半年,阿里巴巴集团中间件成立了独立的应用服务器团队,主要面向整个集团进行应用服务器相关的工作,目前在公司内部主推Tomcat服务器。 本文将从中间件团队在2013年双十一大促前针对应用服务器上进行的工作展开,重点讲解Tomcat监控诊断工具,以及Pandora隔离技术两方面内容。 6.1、Tomcat监控管理工具 Tomcat Monitor模块是一个Tomcat的监控和诊断模块,提供了一些基本的工具,可以对Tomcat的连接池、线程、内存、类加载以及JVM相关等进行监控和诊断。Tomcat Monitor的出现,解决了广大开发人员无法快速定位线上问题的尴尬问题,同时也帮助开发人员能够通过简单且统一的命令行工具来排查问题、查看程序运行时状态,而不需要使用各种包括jmap

为什么说 Java 程序员到了必须掌握 Spring Boot 的时候?

匿名 (未验证) 提交于 2019-12-02 21:53:52
Spring Boot 2.0 的推出又激起了一阵学习 Spring Boot 热,就单从我个人的博客的访问量大幅增加就可以感受到大家对学习 Spring Boot 的热情,那么在这么多人热衷于学习 Spring Boot 之时,我们自己也在思考: Spring Boot 为什么带来了这么大的变革。它诞生的背景是什么?Spring 企业又是基于什么样的考虑创建的 Spring Boot? 传统企业使用 Spring Boot 会给我们带来什么样变化。 Spring 框架可以说是 Java 开发人员使用的最流行的应用程序开发框架之一。它目前由大量提供一系列服务的模块组成。包括模块容器,为构建横切关注点提供支持的面向切面编程(AOP),安全框架,数据存取框架,Web 应用框架和用于模块测试提供支持的类。Spring 框架的所有组件都通过依赖注入粘在一起。依赖注入(也称为控制反转)使设计和测试松散耦合的软件模块变得更容易。 多年来 Spring 框架已变得足够成熟。几乎所有 Java 企业应用需要用到的基础组件都可以在 Spring 框架中找到。但在一个新应用中将所有需要的 Spring 组件整合并配置好并不容易。这包括在 gradle/maven 中设置依赖库,使用 xml、注解或 java 代码配置需要的 Spring Bean。Spring

Service Mesh体验

天涯浪子 提交于 2019-12-02 21:50:44
前言 # 计算机软件技术发展到现在,软件架构的演进无不朝着让开发者能够更加轻松快捷地构建大型复杂应用的方向发展。容器技术最初是为了解决运行环境的不一致问题而产生的,随着不断地发展,围绕容器技术衍生出来越来越多的新方向。 最近几年,云计算领域不断地出现很多新的软件架构模式,其中有一些很热门的概念名词如:云原生、函数计算、Serverless、Service Mesh 等等,而本文将初窥一下 Service Mesh 的面纱。下面结合自己的理解尽量以通俗的话进行叙述。 背景和定义 # 微服务及服务治理 # 在微服务之前的软件开发中,往往通过一个应用的方式将所有的模块都包括进去,并一起编译、打包、部署、运维。这种方式存在很多问题,由于单个应用包含的东西太多,其中某个模块出现问题或者需要更新那么整个应用就需要重新部署。这种方式给开发和运维带来了很大的麻烦。随着应用的逐渐复杂,单个应用涉及的东西就会越来越多,慢慢地大家发现了其中很多的缺点,开始对服务进行划分,将一个大的应用按照不同的维度进行划分从而产生很多个小的应用,各应用之间会形成一个调用关系,每个小的应用由不同的开发负责,大家各自部署和运维,这样微服务就出现了。 由于微服务中各应用部署在不同的机器上,服务之间需要进行通信和协调,相比单个应用来说会麻烦很多。在同一个应用内不同方法之间的调用由于在相同的内存中,在代码编译打包时已经进行了链接

Docker

耗尽温柔 提交于 2019-12-02 21:44:09
1. 什么是容器 容器就是在隔离的环境运行的一个进程,如果进程停止,容器就会退出。隔离的环境拥有自己的系统文件,ip地址,主机名等 2. 容器和虚拟化的区别 linux容器技术,容器虚拟化和kvm虚拟化的区别 kvm虚拟化: 需要硬件的支持,需要模拟硬件,可以运行不同的操作系统,启动时间分钟级(开机启动流程) linux开机启动流程: bios开机硬件自检 basic input output system 根据bios设置的优先启动项boot 网卡 硬盘 u盘 光驱 读取mbr引导 2T UEFI(gpt分区) mbr硬盘分区信息,内核加载路径, 加载内核 启动第一个进程/sbin/init systemd 系统初始化完成 运行服务(nginx,httpd,mysql) 容器启动流程: 共用宿主机内核: 第一个进程直接启动服务(nginx,httpd,mysql) 容器:共用宿主机内核,轻量级,损耗少,启动快,性能高,只能运行在linux系统上 虚拟机:需要硬件的支持,需要模拟硬件,需要走开机启动流程,可以运行不同的操作系统 3. 容器技术的发展过程 1) chroot技术, 新建一个子系统(拥有自己完整的文件系统) 参考资料: https://www.ibm.com/developerworks/cn/linux/l-cn-chroot/ 2) linux容器(lxc)

Java Web 学习(2) —— JSP

狂风中的少年 提交于 2019-12-02 19:54:20
JSP 一、 什么是 JSP JSP 和 Servlet Servlet 有两个缺点是无法克服的:首先,写在 Servlet 中的所有 HTML 标签必须包含 Java 字符串,这使得处理HTTP响应报文的工作十分繁琐;第二,所有的文本和 HTML 标记是硬编码,导致即使是表现层的微小变化,如改变背景颜色,也需要重新编译。 JavaServer Pages(JSP)解决了上述两个问题。同时,JSP 不会取代 Servlet,相反,它们具有互补性。 JSP 页面本质上是一个 Servlet。然而,用 JSP 页面开发比使用 Servlet 更容易。首先,不必编译 JSP 页面;其次,JSP 页面是一个以 jsp 为扩展名的文本文件,可以使用任何文本编辑器来编写它们。 JSP 不需要添加注解或在部署描述符配置映射 URL。应用程序目录中的每一个JSP页面可以直接在浏览器中输入路径页面来访问。添加新的 JSP 界面后,无需重启 Tomcat。 二、 运行 JSP JSP页面在JSP容器中运行,一个Servlet容器通常也是JSP容器。例如,Tomcat 就是一个 Servlet/JSP 容器。 当一个 JSP 页面第一次被请求时,Servlet/JSP 容器主要做以下两件事情: 1. 把 JSP 页面转换到 JSP 页面实现类,该实现类是一个实现 javax.servlet.jsp

docker--安装

我们两清 提交于 2019-12-02 19:39:58
什么是docker Docker 最初是 dotCloud 公司创始人 Solomon Hykes 在法国期间发起的一个公司内部项目,于 2013 年 3 月以 Apache 2.0 授权协议开源,主要项目代码在 GitHub 上进行维护。 Docker 使用 Google 公司推出的 Go 语言 进行开发实现。 docker是linux容器的一种封装,提供简单易用的容器使用接口。它是最流行的Linux容器解决方案。 docker的接口相当简单,用户可以方便的创建、销毁容器。 docker将应用程序与程序的依赖,打包在一个文件里面。运行这个文件就会生成一个虚拟容器。 程序运行在虚拟容器里,如同在真实物理机上运行一样,有了docker,就不用担心环境问题了。 docker可以用在web应用的发布和打包,自动化测试和持续集成,发布,在服务器环境中部署和调整数据库或其他应用 为什么要使用docker 下图是docker和虚拟机的对比 而且能解决环境配置的问题, 用上docker容器后,可以实现开发、测试和生产环境的统一化和标准化。 镜像作为标准的交付件,可在开发、测试和生产环境上以容器来运行,最终实现三套环境上的应用以及运行所依赖内容的完全一致。 Linux容器不是模拟一个完整的操作系统,而是对进程进行隔离。在正常进程的外面套了一个保护层,对于容器里面进程来说,它接触的资源都是虚拟的