Ngnix及Tomcat等概念解释

一、什么是nginx?

nginx is a free,open-source,high-performance http server and reverse proxy,as well as an IMAP/POP3 proxy.通俗的说Nginx提供web服务,反向代理,以及IMAP/POP3代理,那么什么是web服务?反向代理?IMAP/POP3代理?

web服务:服务端通过网络可以提供给客户端所请求的资源,

反向代理:代表资源服务器来回应客户端的请求(或者正向代理的请求),至于资源服务器为什么不自己回应,想想被告与被告律师的关系(被告的律师看做反向代理,被告是什么?自己猜吧(ˇˍˇ) 想~),正向代理是什么?原告的代理律师就是正向代理)

IMAP/POP3:是一种stream传输协议,常常被用来做一些邮件传输

IMAP:Internet Mail Access Protocol 是一种交互式的邮件邮件传输协议,交互式说的就是客户端可以和服务端针对邮件的各种操作同步,一份邮件,客户端有,服务端也有,客户端有什么操作会同步到服务端,反之亦然。

POP3:Post Office Protocol 3邮件传输协议相比IMAP协议只是服务器不保留邮件,一旦给了客户端,自行删除对应的邮件,客户端对邮件的各种操作与服务器无关

好烦:都是文字一点可读性都没有,找个图片吧

Porxy&reverseProxy

(注意代理的概念只要把握准正向和反向都是以客户端为参考的,从客户端出的是正向,客户端接受的是反向)

扯了半天其他的东西,现在是nginx的时间:

学习一个东西吾以为了解其框架架构,最初是出于什么目的设计,为解决什么问题,以及怎样设计是最重要的,所以下面的重点就是这些:

为什么会出现nginx或者其他相似功能的web服务,一方面是因为http的历史局限型,而最重要的还是C10K问题,高并发访问,好吧什么历史局限型,说的通俗点就是httpd(apache)老了不太能适应现在的网络环境了,毕竟人家Apache是95年的东西了,现代的计算机网络已经和当时远远不同了,倒不如说现在还大量使用httpd已经是一个小奇迹了(之所以不说奇迹,就担心较真的人太过在意,毕竟做it较真的人还是很多大的,毕竟我就是一个较真的人),还有一个问题C10K,什么意思?The C10k problem is the problem of optimising network sockets to handle a large number of clients at the same time.The name C10k is a numeronym for concurrently handling ten thousand connections.Apache的致命缺陷就是同时不可以处理一万个请求(建立套接字处理),对电商站点的影响,自己(╯▽╰)

Nginx战斗民族设计的一款轻量级的web服务,免费开源,高性能:

 

nginxArchitecture

一个master进程负责生产各种子进程,为什么要说是各种?缘由在于其每个子进程所具有的功能可以是nginx所有功能的一部分,也可以是全部。这个在于我们背锅侠的设置了,当然nginx的一些基本功能,每个子进程是必须要有的。看到连接后端的HTTP,FastCGI以及memcache了么,这些都是连接后端服务器(也叫Backend)的协议,HTTP协议,FastCGI协议以及memcached分布式缓存系统。

二、什么是Tomcat?

是由Apache软件基金会下属的Jakarta项目开发的一个Servlet容器,实现了对Servlet和JavaServer Page(JSP)的支持,并提供了作为Web服务器的一些特有功能,如Tomcat管理和控制平台、安全域管理和Tomcat阀等。由于Tomcat本身也内含了一个HTTP服务器,它也可以被视作一个单独的Web服务器。但是,不能将Tomcat和Apache HTTP服务器混淆,Apache HTTP服务器是一个用C语言实现的HTTPWeb服务器;这两个HTTP web server不是捆绑在一起的。Apache Tomcat包含了一个配置管理工具,也可以通过编辑XML格式的配置文件来进行配置。

Servlet(Server Applet),全称Java Servlet。是用Java编写的服务器端程序。其主要功能在于交互式地浏览和修改数据,生成动态Web内容。狭义的Servlet是指Java语言实现的一个接口,广义的Servlet是指任何实现了这个Servlet接口的类,一般情况下,人们将Servlet理解为后者。

Servlet运行于支持Java的应用服务器中。从实现上讲,Servlet可以响应任何类型的请求,但绝大多数情况下Servlet只用来扩展基于HTTP协议的Web服务器。最早支持Servlet标准的是JavaSoft的Java Web Server。

通用Servlet

一般来说,通用Servlet由javax.servlet.GenericServlet实作Servlet界面。程序设计人员可以通过使用或继承这个类来实现通用Servlet应用。

HttpServlet

javax.servlet.http.HttpServlet实现了专门用于响应HTTP请求的Servlet,提供了响应对应HTTP标准请求的doGet()、doPost()等方法。

生命周期

当servlet被部署在应用服务器中(应用服务器中用于管理Java组件的部分被抽象成为容器)以后,由容器控制servlet的生命周期。除非特殊指定,否则在容器启动的时候,servlet是不会被加载的,servlet只会在第一次请求的时候被加载和实例化。servlet一旦被加载,一般不会从容器中删除,直至应用服务器关闭或重新启动。但当容器做内存回收动作时,servlet有可能被删除。也正是因为这个原因,第一次访问servlet所用的时间要大大多于以后访问所用的时间。

servlet在服务器的运行生命周期为,在第一次请求(或其实体被内存垃圾回收后再被访问)时被加载并执行一次初始化方法,跟着执行正式运行方法,之后会被常驻并每次被请求时直接执行正式运行方法,直到服务器关闭或被清理时执行一次销毁方法后实体销毁。

与JSP的关系

Java服务器页面(JSP)是HttpServlet的扩展。由于HttpServlet大多是用来响应HTTP请求,并返回Web页面(例如HTML、XML),所以不可避免地,在编写servlet时会涉及大量的HTML内容,这给servlet的书写效率和可读性带来很大障碍,JSP便是在这个基础上产生的。其功能是使用HTML的书写格式,在适当的地方加入Java代码片段,将程序员从复杂的HTML中解放出来,更专注于servlet本身的内容。

JSP在首次被访问的时候被应用服务器转换为servlet,在以后的运行中,容器直接调用这个servlet,而不再访问JSP页面。JSP的实质仍然是servlet。

JSP(全称JavaServer Pages)是由Sun Microsystems公司倡导和许多公司参与共同创建的一种使软件开发者可以响应客户端请求,而动态生成HTML、XML或其他格式文档的Web网页的技术标准。JSP技术是以Java语言作为脚本语言的,JSP网页为整个服务器端的Java库单元提供了一个接口来服务于HTTP的应用程序。

JSP使Java代码和特定的预定义动作可以嵌入到静态页面中。JSP句法增加了被称为JSP动作的XML标签,它们用来调用内建功能。另外,可以创建JSP标签库,然后像使用标准HTML或XML标签一样使用它们。标签库提供了一种和平台无关的扩展服务器性能的方法。

JSP被JSP编译器编译成Java Servlets。一个JSP编译器可以把JSP编译成JAVA代码写的servlet然后再由JAVA编译器来编译成机器码,也可以直接编译成二进制码。

SP和Servlets

从架构上说,JSP可以被看作是从Servlets高级提炼而作为JAVA Servlet 2.1 API的扩展而应用。Servlets和JSP最早都是由Sun Microsystems(太阳公司)开发的。从JSP1.2版本以来,JSP处于Java Community Process开发模式下。

静态数据在输入文件中的内容和输出给HTTP响应的内容完全一致。此时,该JSP输入文件会是一个没有内嵌JAVA或动作的HTML页面。而且,客户端每次请求都会得到相同的响应内容。

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值