tomcat是一种servlet-jsp容器服务器,其实在jsp被编译为servlet之后,就是一个servlet服务器,tomcat架构很复杂,从tomcat5到现在的tomcat8,其中的组件有变化,connector组件的start和stop实现逻辑也有变化,因为刚刚毕业开始做运维开发,所以接触的更多的是如何保证项目的性能更优,以及代码层面更加合理的实现功能,代码首先要实现功能再去重构,当然你是老司机,那么当然会考虑最优的代码,前段时间公司要引入docker来实现敏捷开发。
docker做的事情就是提供一个平台,这个平台上有硬件资源,cpu,内存,也有软件支撑,nginx,zk,redis,然后你把你的应用打成demo.tar.gz并上传到平台上成为一个demo.tar,可以称之为业务image,每个应用都是一个业务image,所有的基础image是基础image,业务image在基础image的基础上才能运行,比如jdk是基础image,tomcat是基础image,你跑一个应用必须要有这些环境吧,然后一些基础image和一些业务image组装成为一个新的镜像,这个镜像是用来发布的,也就是存储在registry中,registry中的镜像都是静态的你不能再去修改其中的内容,只能通过与其他业务镜像打镜像成为更新的镜像。
你也许不需要布置一整套docker的生态,你只要下载一个docker.io,自己跑着玩就可以了,但是在企业中,为了通过云计算解决发布项目的复杂度,实现敏捷开发,有一整套的软件,最好用的是mesos+marathon,当然还有google公司的可以看考infoq的docker深入浅出,网址自己查,mesos是一个调度器,其中还要配zk作为分布式协调组件,在mesos的master和slave之间有协调作用,具体怎么协调,就要知道zk的分布式锁,注册中心是怎么运行的,这些都需要查资料。
当然docker开始需要学会的是docker的命令,docker ps -查询容器id命令,docker exec -it CONTAINERID /bin/bash 进入容器命令需要指定容器id,当然还有其他命令,docker -D info 查看docker硬件配置信息,每个命令后面加--help就是查看用法。
然后熟悉docker的隔离性,docker是基于lxc的,所以它的隔离性实现有几种方法,ns(namespaces,)、cgroup和。。。忘了,请自己查资料,或者留言我会更正,不想一边查一边写,我终于想起来了,这些是很蛋疼的东西,看了都忘了东西,貌似是linux内核的东西,所以如果你懂就请不吝啬赐教咯。底层实现总是很难理解的。
就像我之前看tomcat的源码的时候很难理解,不过现在也看懂的大概,ibm上一篇许令波写的很好的文章。关于tomcat的结构就不吹了。