25讲微服务为什么要容器化_第1页
25讲微服务为什么要容器化_第2页
25讲微服务为什么要容器化_第3页
25讲微服务为什么要容器化_第4页
25讲微服务为什么要容器化_第5页
全文预览已结束

下载本文档

版权说明:本文档由用户提供并上传,收益归属内容提供方,若内容存在侵权,请进行举报或认领

文档简介

1、25讲微服务为什么要容器化?专栏前的章,我主要给你讲解了微服务架构的基础组成以及在具体实践过程中的会遇到和解决案,这些是掌握微服务架构最基础的知识。从今天开始,进步深微服务架构进阶的内容,也就是微服务与容器、DevOps之间的关系。它们三个虽然分属于不同领域,但却有着千丝万缕的关系,可以说没有容器的普及,就没有微服务架构的蓬勃发展,也就没有DevOps今天的盛其道。之后我还会具体分析它们三者之间是如何紧密联系的,今天先来看微服务为什么要容器化。微服务带来单体应拆分成多个微服务后,能够实现快速开发迭代,但随之带来是测试和运维部署的成本的。相信拆分微服务的利弊你早已熟能详,我讲个具体的例。业务早期

2、就是个的单体Web应,在测试和运维的时候,只需要把Web应打成个的WAR包,部署到Tomcat中去就了。后来拆分成多个微服务之后,有的业务需求需要同时修改多个微服务的代码,这时候就有多个微服务都需要打包、测试和上线发布,个业务需求就需要同时测试多个微服务接的功能,上线发布多个系统,给测试和运维的作量增加了很多。这个时候就需要有办法能够减轻测试和运维的负担 我在上讲给出的解决案是DevOps。DevOps可以简单理解为开发和运维的结合,服务的开发者不再只负责服务的代码开发,还要负责服务的测试、上线发布甚故障处理等全命周期过程,这样的话就把测试和运维从微服务拆分后所带来的复杂作中解放出来 D vO

3、p 要求开发 测试和发布的流程必须动化,这就需要保证开发员将本地部署测试通过的代码和运环境,能够到测试环境中去,测试通过后再到线上环境进发布。虽然这个过程看上去好像代码样简单,但在现实时,本地环境、测试环境以及线上环境往往是的,配置环境的差异也很,这也导致了开发、测试和发布流程的割裂。且还有个问题是,拆分后的微服务相原来的单体应更加灵活,经常要根据实际的量情况做扩缩容,且通常会采在公有云上创建的ECS来扩缩容。这给微服务的运维带来另外个,因为公有云上创建的ECS通常只包含了基本的操作系统环境,微服务运依赖的配置等需要运维再单独进初始化作,因为不同的微服务的配置依赖不同,如Java服务依赖了JD

4、K,就需要在ECS上安装JDK,且可能不同的微服务依赖的JDK版本也不相同,般情况下新的业务可能依赖的版本较新如JDK 8,有些旧的业务可能依赖的版本还是JDK 6,为此服务部署的初始化作分繁琐。容器技术的诞恰恰解决了上这两个问题,为什么容器技术可以解决本地、测试、线上环境的,解决部署服务初始化繁琐呢?下我就以业界公认的容器标准Docker为例,来看看Docker是如何解决这两个问题的。DockerDocker是容器技术的种,事实上已经成为业界公认的容器标准,要理解Docker的作原理先得知道容器。容器翻译英的Conta ner词,Conta ner可以翻译成集装箱。都知道,集装箱的作就是,在

5、港把货物集装箱封装起来,然后经过货轮从海上到另个港,再在港卸载后通过货运送到的地。这样的话,货物在世界的任何地流转时,都是在集装箱封装好的,不需要根据是在货轮上还是货上对货物进重新装配。同样,在的世界,容器也起到了相同的作,只不过它封装的是的运环境。容器的本质就是L nux操作系统的进程,但与操作系统中运的般进程不同的是,容器通过Namespace和Cgroups这两种机制,可以拥有的root件系统、的络配置、的进程空间,甚是的户ID空间,这样的话容器的进程就像是运在宿主机上的另外个单独的操作系统内,从实现与宿主机操作系统运的其他进程。Docker也是基于L nux内核的Cgroups、Nam

6、espace机制来实现进程的封装和的,那么Docker为何能把容器技术推向个新的度呢?这就要从Docker在容器技术上的项创新Docker镜像说起。虽然容器解决了应程序运时,但是要想实现应能够从台机器迁移到另外台机器上还能正常运,就必须保证另外台机器上的操作系统是致的,且应程序依赖的各种环境也必须是致的。Docker镜像恰恰就解决了这个痛点,具体来讲,就是Docker镜像不光可以打包应程序本身,且还可以打包应程序的所有依赖,甚可以包含整个操作系统。这样的话,你在你本机上运通过的应程序,就可以使Docker镜像把应程序件、所有依赖的以及操作系统本身都打包成个镜像,可以在任何个安装了Docker的

7、地运。Docker镜像解决了DevOps中微服务运的环境难以在本地环境、测试环境以及线上环境保持致的难题。如此来,开发就可以把在本地环境中运测试通过的代码,以及依赖的操作系统本身打包成个镜像,然后动部署在测试环境中进测试,测试通过后再动发布到线上环境上去,整个开发、测试和发布的流程就打通了。同时,论是使物理机还是公有云的机器部署服务,都可以利Docker镜像把微服务运环境封装起来,从机器物理机和公有云机器运环境的差异,实现同等对待,降低了运维的复杂度。微服务容器化实践Docker能帮助解决服务运环境可迁移问题的关键,就在于Docker镜像的使上,实际在使Docker镜像的时候往往并不是把业务代

8、码、依赖的环境以及操作系统本身直接都打包成个镜像,是利Docker镜像的分层机制,在每层通过编写Docker e件来逐层打包镜像。这是因为虽然不同的微服务依赖的环境不同,但是还是存在的相同之处,因此在打包Docker镜像的时候,可以分层设计、逐层复,这样的话可以减少每层镜像件的。下我就以的业务Docker镜像为例,来实际讲解下产环境中如何使Docker镜像。正如下这所描述的那样,微博的Docker镜像致分为四层。基础环境层。这层定义操作系统运的版本、时区、语、yum源、TERM等。运时环境层。这层定义了业务代码的运时环境,如Java代码的运时环境JDK的版本。Web容器层。这层定义了业务代码运

9、的容器的配置,如Tomcat容器的JVM参数。业务代码层。这层定义了实际的业务代码的版本,如是V4业务还是som业务。这样的话,每层的镜像都是在上层镜像的基础上添加新的内容组成的,以如下:V4镜像为例,V4业务的Docker e件内容FROM代表了上层镜像件是“tomcatfeed:jdk8.0.40 tomcat7.0.81 g1 dns”,从名字可以看出上层镜像包含了Java运时环境JDK和Web容器Tomcat,以及Tomcat的版本和JVM参数等;ADD就是要在这层镜像添加的件, 这主要包含了业务的代码和配置等;RUN代表这层镜像启动时需要执令;WORKDIR代表了这层镜像启动后的作录

10、。这样的话就可以通过Docker e件在上层镜像的基础上完成这层镜像的制作。总结今天我给你讲解了微服务拆分后相于传统的单体应所带来的两个问题,个是测试和发布作量的,另个是在弹性扩缩容时不同微服务所要求的运环境差异带来的机器初始化复杂度的,Docker利Docker镜像对运环境的完美封装正好解决了这两个问题。正是因为Docker可以做到处通过、到处运,所以对业务的价值极,解决了以前应程序在开发环境、测试环境以及产环境之间的移植难,极提了运维动化的平,也为DevOps理念的流和业务上云提供了基础。可容器化改造对微服务是分必要的,但Docker也不是“银弹”,同样会产新的复杂度问题,如引Docker

11、后旧的针对物理机的运维模式就法适应了,需要种新的针对容器的运维模式。所以接下来,我将分三期,给你详细讲解微服务容器化后FROM regist/weibo rd content/tomcat feed:jdk8.0.40 tomcat7.0.81 g1 dns ADD confs /data1/confs/ADD node pool /data1/node pool/ ADD authconfs /data1/authconfs/ ADD perties /data1/ ADD watperties /data1/ADD 200.sh /data1/weibo/bin/200.sh ADD 50

12、3.sh /data1/weibo/bin/503.shADD catalina.sh /data1/weibo/bin/catalina.sh ADD server.xml /data1/weibo/conf/server.xmlADD perties /data1/weibo/conf/perties ADD ROOT /data1/weibo/webapps/ROOT/RUNod +x /data1/weibo/bin/200.sh /data1/weibo/bin/503.sh /data1/weibo/bin/catalina.sh WORKDIR /data1/weibo/bin该

13、如何运维。思考题Docker的概念乍看与虚拟机有些类似,你认为它们不同之处吗?分别适合什么应场景?欢迎你在留区写的思考,与我起。精选留xw11235师,分布式事务还没讲2018-10-18 20 47作者回复这部分内容考虑了下专栏篇幅和内容的重要性,挑选了最核的讲,更深度的内容后可以考虑再写些,看家反馈2018-10-19 21 37郁前遇到最头疼2018-10-19 14 15作者回复就是docker宿主机的防墙如何优雅处理!你的是docker什么络模式?2018-10-19 21 33虚机是个操作系统,docker是操作系统内的进程,虚机占有资源多,启动慢,但最多只能有个,但是docker

14、可以有成千上万。2018-10-18 08 27效果更好,台物理机启动的虚机数量波波安产和测试的配置件不样。镜像怎么解决应配置2018-11-16 13 11。步亮师你好,请教个问题。在服务器移植问题呢?2018-11-15 13 37驱动下,docker是否能较容易地解决不同(x86,arm,m ps)下的web应的波波安服务器虚拟化解决的核问题是资源调配,容器解决的核问题是应开发 测试和部署2018-11-15 13 36L amdocker本质上还是依赖于L nux的内核,所以迁移的时候还是要求系统内核致2018-10-25 08 49Sa ydocker的动化运维和之前说的微服务治理是要相互结合的吧?2018-10-21 09 23郁br dge模式,在开了防墙时,同台宿主

温馨提示

  • 1. 本站所有资源如无特殊说明,都需要本地电脑安装OFFICE2007和PDF阅读器。图纸软件为CAD,CAXA,PROE,UG,SolidWorks等.压缩文件请下载最新的WinRAR软件解压。
  • 2. 本站的文档不包含任何第三方提供的附件图纸等,如果需要附件,请联系上传者。文件的所有权益归上传用户所有。
  • 3. 本站RAR压缩包中若带图纸,网页内容里面会有图纸预览,若没有图纸预览就没有图纸。
  • 4. 未经权益所有人同意不得将文件中的内容挪作商业或盈利用途。
  • 5. 人人文库网仅提供信息存储空间,仅对用户上传内容的表现方式做保护处理,对用户上传分享的文档内容本身不做任何修改或编辑,并不能对任何下载内容负责。
  • 6. 下载文件中如有侵权或不适当内容,请与我们联系,我们立即纠正。
  • 7. 本站不保证下载资源的准确性、安全性和完整性, 同时也不承担用户因使用这些下载资源对自己和他人造成任何形式的伤害或损失。

评论

0/150

提交评论