java服务器(一)服务器介绍
- 1、下载文档前请自行甄别文档内容的完整性,平台不提供额外的编辑、内容补充、找答案等附加服务。
- 2、"仅部分预览"的文档,不可在线预览部分如存在完整性等问题,可反馈申请退款(可完整预览的文档不适用该条件!)。
- 3、如文档侵犯您的权益,请联系客服反馈,我们会尽快为您处理(人工客服工作时间:9:00-18:30)。
java服务器(⼀)服务器介绍
第⼀份⼯作在⼭西三友和公司,⽬前是第⼆天上班,还未被⼯作⽀配,问到公司的jdk是1.6,服务器使⽤的是jetty,所以来学习记录⼀下。
⼀、服务器
服务器,是提供计算服务的设备。
在⽹络环境下,根据服务器提供的服务类型不同,分为,,应⽤程序服务器,等。
1.1 web服务器
Web服务器是可以向发出请求的浏览器提供⽂档的程序。
1、服务器是⼀种被动程序:只有当Internet上运⾏在其他计算机中的浏览器发出请求时,服务器才会响应。
2、Internet上的服务器也称为Web服务器,是⼀台在Internet上具有独⽴IP地址的计算机,可以向Internet上的客户机提供WWW、Email和FTP等各种Internet服务。
Web服务器的内容:
1、应⽤层使⽤HTTP协议。
2、HTML⽂档格式。
3、浏览器统⼀资源定位器(URL)。
1.1.1 常⽤web服务器
最常⽤的Web服务器是Apache和Microsoft的Internet信息服务器(Internet Information Server,ⅡS)。
这⾥简单介绍⼀下Apache。
Apache是世界使⽤排名第⼀的web服务器软件。
他可以运⾏在⼏乎所有⼴泛使⽤的计算机平台上(跨平台性、安全性)。
它快速、可靠并且可通过简单地API扩充,将Perl/Python等解释器编译到服务器中。
Apache HTTP服务器是⼀个模块化的服务器,源于NCSAhttpd服务器,现在是世界使⽤排名第⼀的Web服务器软件。
Apache HTTP Server和Nginx都能够将某⼀个固定内容的⽂本⽂件的内容通过HTTP协议返回到客户端,我们将这样固定内容的资源(⽆论何时、任何⼈访问它得到的内容都是完全相同的资源)称之为静态资源。
优点:
1、相对于Tomcat来说,Apache处理静态⽂件速度快。
2、apache的 rewrite ⽐nginx 的强⼤。
3、Apache性能稳定。
缺点:
1、属于⽼牌重量级web服务器(重量级主要是在软件包的⼤⼩上⽐较⼤,软件的耦合度⼤)。
2、速度、性能不及其他轻量级web服务器,并且消费内存较⾼。
3、使⽤传统的select模型,⽐较稳定的Prefork模式为多进程模式,需要经常派⽣⼦进程。
所以消耗的cpu等服务器资源⽐较⼤。
4、配置相对复杂,⾃⾝不⽀持动态页⾯,不适合⾼并发场景。
轻量级和重量级服务器的理解:
重量级:对于每知个请求会⽤⼀个进程去进⾏服务,进程⾮常占资源,当并发量⼤的时候,就道需要等额的进程,导致的是⾼内存占⽤和CPU占⽤。
轻量级:原理是当链接的状态发⽣改变的时候,呼叫事件分发器来处理链接变化;由于http请求⼤部分时间都是在等待,所以只需要⼀个进程就可容以同时处理⼤量链接。
1.2 应⽤程序服务器
应⽤服务器是指通过各种协议把商业逻辑曝露给客户端的程序。
它提供了访问商业逻辑的途径供客户端应⽤程序使⽤。
应⽤服务器使⽤此商业逻辑就像调⽤对象的⼀个⽅法⼀样。
1.2.1 Tomcat服务器
Tomcat 服务器是⼀个免费、开源的Web 应⽤服务器,属于轻量级应⽤服务器,在中⼩型系统和并发访问⽤户不是很多的场合下被普遍使⽤,是开发和调试JSP 程序的⾸选。
对于初学者来说,可以这样认为,当在⼀台机器上配置好Apache服务器,可利⽤它响应HTML页⾯的访问请求。
实际上Tomcat是Apache 服务器的扩展,但运⾏时它是独⽴运⾏的,所以当你运⾏tomcat 时,它实际上作为⼀个与Apache 独⽴的进程单独运⾏的。
当配置正确时,Apache 为HTML页⾯服务,⽽Tomcat 实际上运⾏JSP 页⾯和Servlet。
独⽴的Servlet容器是Tomcat的默认模式,但是它也具有处理HTML的能⼒,但他对于HTML的处理不如Apache服务器。
Tomcat也可以认为是HTTP服务器,但通常它仍然会和Nginx配合在⼀起使⽤:
动静态资源分离——运⽤Nginx的反向代理功能分发请求:所有动态资源的请求交给Tomcat,⽽静态资源的请求(例如图⽚、视频、CSS、JavaScript⽂件等)则直接由Nginx返回到浏览器,这样能⼤⼤减轻Tomcat的压⼒。
负载均衡——当业务压⼒增⼤时,可能⼀个Tomcat的实例不⾜以处理,那么这时可以启动多个Tomcat实例进⾏⽔平扩展,⽽Nginx的负载均衡功能可以把请求通过算法分发到各个不同的实例进⾏处理。
优点:
1、Tomcat是开源的Web服务器,经过长时间的发展,性能、稳定性等⽅⾯都⾮常好。
2、Tomcat是开源免费、功能强⼤易⽤的
3、与Apache HTTP Server相⽐,Tomcat能够动态的⽣成资源并返回到客户端。
缺点:
1、在静态页⾯处理能⼒上,Tomcat不如Apache。
1.2.2 jetty
Jetty 是⼀个开源的servlet容器,基于Java的web容器,为JSP和servlet提供运⾏环境。
Jetty是使⽤Java语⾔编写的,它的API 以⼀组JAR包的形式发布。
开发⼈员可以将Jetty容器实例化成⼀个对象,可以迅速为⼀些独⽴运⾏(stand-alone)的Java应⽤提供⽹络和web连接。
优点:
1、Jetty可作为⼀个嵌⼊式服务器,即:如可以在应⽤中加⼊Jetty的JAR⽂件,应⽤便可以在代码中对外提供Web服务。
2、相对于Tomcat⽽⾔,Jetty更轻量级
3、Jetty 可以同时处理⼤量连接⽽且可以长时间保持这些连接。
例如像⼀些 web 聊天应⽤⾮常适合⽤ Jetty 做服务器,像淘宝的 web 旺旺就是⽤ Jetty 作为 Servlet 引擎。
缺点:
1、在处理少数⾮常繁忙的连接上没有Tomcat强,也就是说连接的⽣命周期如果短的话,Tomcat 的总体性能更⾼
1.2.3 Nginx
Nginx (engine x) 是⼀个⾼性能的HTTP和服务器,也是⼀个IMAP/POP3/SMTP服务器。
Nginx也是⼀款轻量级的Web 服务器/反向代理服务器及电⼦邮件(IMAP/POP3)代理服务器,并在⼀个BSD-like 协议下发⾏。
Nginx有动态分离机制,静态请求直接就可以通过Nginx处理,动态请求才转发请求到后台交由Tomcat进⾏处理。
优点:
1、轻量级,⾼性能http和反向代理服务器。
2、⾼并发连接达到2-4万个,内存、cpu等系统资源消耗低。
Rewrite重写规则(根据域名,URL的不同将HTTP请求分到不同的后端服务器群组),内置的健康检查功能(Nginx Proxy 后端的某台web服务器宕机也不会影响前端访问),节省带宽(⽀持GZIP压缩,可以添加浏览器本地缓存的Header头)。
3、⽐apache占⽤更少的内存及资源
4、 Nginx 静态处理性能⽐ Apache ⾼ 3倍以上
5、安装⾮常简单 , 配置⽂件⾮常简洁(还能够⽀持perl语法)
缺点:
1、nginx处理动态请求鸡肋般动态请求要apache去做nginx只适合静态和反向
2、rewrite频繁不如Apache
1.2.4 Nginx与Apache⽐较
nginx相对于apache的优点
1、轻量级,同样起web 服务,⽐apache占⽤更少的内存及资源
2、抗并发,nginx 处理请求是是异步的,多个连接(万级别)可以对应⼀个进程,⽽apache是同步多进程模型,⼀个连接对应⼀个进程,在⾼并发下nginx 能保持低资源低消耗⾼性能。
3、Nginx适合做前端服务器,负载性能很好,本⾝就是⼀个反向代理服务器
4、Nginx 静态处理性能⽐ Apache ⾼ 3倍以上,耗费内存少
5、安装简单 ,Nginx 配置简洁(还能够⽀持perl语法),Apache 复杂
6、⾼度模块化的设计,编写模块相对简单
7、社区活跃,各种⾼性能模块出品迅速
apache 相对于nginx 的优点:
1、apache的 rewrite ⽐nginx 的强⼤;
2、动态请求由apache去做,nginx只适合静态和反向;
3、Apache 对 PHP ⽀持⽐较简单,Nginx 需要配合其他后端⽤;
4、Apache 的组件⽐ Nginx 多,基本涵盖所有应⽤;
5、性能稳定,⽽nginx相对bug较多。
1.2.5 Apache与Tomcat的⽐较
相同点:
1、两者都是Apache组织开发的
2、两者都有HTTP服务的功能
3、两者都是免费的
不同点:
1、 Apache是专门⽤了提供HTTP服务的,以及相关配置的(例如虚拟主机、URL转发等等),Tomcat是Apache组织在符合Java EE的JSP、Servlet标准下开发的⼀个JSP服务器。
2、 Apache是⼀个Web服务器环境程序,启⽤他可以作为Web服务器使⽤,不过只⽀持静态⽹页如(ASP,PHP,CGI,JSP)等动态⽹页的就不⾏。
如果要在Apache环境下运⾏JSP的话就需要⼀个解释器来执⾏JSP⽹页,⽽这个JSP解释器就是Tomcat。
3、 Apache:侧重于HTTPServer ,Tomcat:侧重于Servlet引擎,如果以Standalone⽅式运⾏,功能上与Apache等效,⽀持JSP,但对静态⽹页不太理想;
4、 Apache是Web服务器,Tomcat是应⽤(Java)服务器,它只是⼀个Servlet(JSP也翻译成Servlet)容器,可以认为是Apache的扩展,但是可以独⽴于Apache运⾏。
实际使⽤中Apache与Tomcat常常是整合使⽤
5、如果客户端请求的是静态页⾯,则只需要Apache服务器响应请求。
如果客户端请求动态页⾯,则是Tomcat服务器响应请求。
因为JSP是服务器端解释代码的,这样整合就可以减少Tomcat的服务开销。
可以理解Tomcat为Apache的⼀种扩展
1.2.6 Tomcat与Jetty的⽐较
相同点:
1、两者都是⼀个轻量级的基于Java的web容器
2、两者都是免费、开源的
不同点:
1、Jetty可作为⼀个嵌⼊式服务器,即:如可以在应⽤中加⼊Jetty的JAR⽂件,应⽤便可以在代码中对外提供Web服务。
2、相对于Tomcat⽽⾔,Jetty更轻量级
3、Jetty 可以同时处理⼤量连接⽽且可以长时间保持这些连接。
例如像⼀些 web 聊天应⽤⾮常适合⽤ Jetty 做服务器,像淘宝的 web 旺旺就是⽤ Jetty 作为 Servlet 引擎。
4、在处理少数⾮常繁忙的连接上没有Tomcat强,也就是说连接的⽣命周期如果短的话,Tomcat 的总体性能更⾼。