基础篇-服务器工作实现的浅析

前言

对于一个前端开发的人员来说,了解服务器的基础知识,个人觉得是非常必要的,于是就有一个这篇侧重于Java的服务器相关知识的文章,只是简单介绍对于我也是一个拓展。

首先我们来说一下服务器的架构,在很早以前 C/S架构的服务器大行其道,随着时间的推移,这种两层架构的服务器模式逐渐被 B/S 架构的WEB服务器所替代。

B/S架构 vs C/S 架构

关于这俩者的详细关系和比较,你可以百度百科下,不过在我看来,简述下俩者的不同大体有如下方面:

  • C/S结构软件(即客户机/服务器模式)分为客户机和服务器两层
  • B/S结构(Browser/Server,浏览器/服务器 模式),是WEB兴起后的一种网络结构模式,WEB浏览器是客户端最主要的应用软件。这种模式统一了客户端,将系统功能实现的核心部分集中到服务器上,简化了系统的开发、维护和使用。客户机上只要安装一个浏览器即可,服务器安装SQL Serve、Oracle、MYSQL等数据库。浏览器通过Web Server 同数据库进行数据交互。
  • 从本质上说,Browser/Server结构也是一种Client/Server结构,它可看作是一种由传统的二层模式Client/Server结构发展而来的三层模式Client/Server结构在Web上应用的特例。
  • C/S 一般面向相对固定的用户群,般建立在专用的网络上,小范围里的网络环境,局域网之间再通过专门服务器提供连接和数据交换服务。对信息安全的控制能力很强。 一般高度机密的信息系统采用C/S 结构适宜。可以通过B/S发布部分可公开信息。
  • B/S 建立在广域网之上, 对安全的控制能力相对弱, 可能面向不可知的用户

聊到这里有个词需要解释下,什么是三层架构

三层架构

通常意义上的三层架构就是将整个业务应用划分为:界面层(User Interface layer)、业务逻辑层(Business Logic Layer)、数据访问层(Data access layer)。区分层次的目的即为了“高内聚低耦合”的思想。在软件体系架构设计中,分层式结构是最常见,也是最重要的一种结构。微软推荐的分层式结构一般分为三层,从下至上分别为:数据访问层、业务逻辑层(又或称为领域层)、表示层。

B/S 三层架构,采用这种分层(数据层、逻辑层、界面层)设计编码实现的b/s模式的软件就是b/s三层架构的软件

因为所有的模块角色只会有三种:数据管理者、数据加工者、数据展示者,意思也就是,笼统说来,软件只会有三层,每一层扮演一个角色。其他的第四层第五层,一般都是这三层里面的其中之一分出来的,最后都能归纳进这三层的某一层中去,所以用三层架构来描述就比较普遍。

服务器

Web服务器的最底层实际上是一个socket。这个socket监听并接受到达的TCP连接。一旦一个连接被建立,就可以通过这个新建立的连接读取、解析信息,然后将这些信息包装成一个HTTP请求。这个HTTP请求还将被移交至web应用程序,来完成请求的动作。

目前主流的服务器方案是 **中小型服务器: Tomcat 大型服务器: Apache +Tomcat **

关于 Tomcat 与 Apache 的关系大体如下:

  • Apache是世界使用排名第一的Web服务器软件。它可以运行在几乎所有广泛使用的计算机平台上,由于其跨平台和安全性被广泛使用,是最流行的Web服务器端软件之一。它快速、可靠并且可通过简单的API扩充,将Perl/Python等解释器编译到服务器中。同时Apache音译为阿帕奇。
  • Tomcat 服务器是一个免费的开放源代码的Web 应用服务器,属于轻量级应用服务器,在中小型系统和并发访问用户不是很多的场合下被普遍使用,是开发和调试JSP 程序的首选。
  • Apache支持静态页,Tomcat支持动态的,比如servlet等, 一般使用apache+tomcat的话,apache只是作为一个转发,对jsp的处理是由tomcat来处理的。 apache可以支持php\cgi\perl,但是要使用java的话,你需要tomcat在apache后台支撑,将java请求由apache转发给tomcat处理。
  • apache是web服务器,Tomcat是应用(java)服务器,它只是一个servlet(jsp也翻译成servlet)容器,可以认为是apache的扩展,但是可以独立于apache运行。
  • 两者都是apache组织开发的 、两者都有HTTP服务的功能 、两者都是免费的。
  • APACHE是一个web服务器环境程序 启用他可以作为web服务器使用 不过只支持静态网页 如(asp,php,cgi,jsp)等动态网页的就不行 。如果要在APACHE环境下运行jsp 的话就需要一个解释器来执行jsp网页 而这个jsp解释器就是TOMCAT, 为什么还要JDK呢?**因为jsp需要连接数据库的话就要jdk来提供连接数据库的驱程,所以要运行jsp的web服务器平台就需要APACHE+TOMCAT+JDK **
  • ** Apache:侧重于http server Tomcat:侧重于servlet引擎,如果以standalone方式运行,功能上与apache等效 , 支持JSP,但对静态网页不太理想 **
关于Tomcat的工作原理

首先我们需要先了解下Servlet

Servlet(Server Applet),全称Java Servlet,暂无中文译文。是用Java编写的服务器端程序。其主要功能在于交互式地浏览和修改数据,生成动态Web内容。狭义的Servlet是指Java语言实现的一个接口,广义的Servlet是指任何实现了这个Servlet接口的类,一般情况下,人们将Servlet理解为后者。 Servlet运行于支持Java的应用服务器中。从原理上讲,Servlet可以响应任何类型的请求,但绝大多数情况下Servlet只用来扩展基于HTTP协议的Web服务器。

Tomcat是Servlet的容器,Servlet 是一种运行在支持Java语言的服务器上的组件,它与普通Java类的区别就是它运行在服务器上。由于Java的平台无关性,再加上Servlet 运行在服务器端,因此 Servlet 对于用户是完全透明的。

Servlet 容器的作用是负责处理客户请求。当客户请求来到时,Servlet容器获取请求,然后调用某个Servlet,并把Servlet的执行结果返回给客户,Tomcat就是起到这样作用的容器。

当客户请示某个资源时,Servlet容器使用 ServletRequest 对象把客户的请求信息封装起来,然后调用 Java Servlet API 中定义的一些Servlet 方法,完成Servlet的执行,接着把Servlet 执行的要返回给客户的结果封装到 ServletResponse对象中,最后Servlet 容器把客户的请求发给客户,完成为客户的一次服务过程。

Paste_Image.png

关于一个Web中使用到的技术之间的关系

我们常常听到 HTML、CSS、JavaScript在网页编程中都会使用到,那到底他们的作用是什么呢,这里打个比喻方便大家大致了解下其各自不同的功能作用。

如果把一个网页比作一个人的话,HTML就是这个人的躯干,CSS就是这个人的衣服,而JavaScript就是这个人的行为动作。


小结

这里罗列了一些关于服务器端乃至Web前端开发的知识,虽然很浅显,但是对于我们开发者来说,了解这些也是一种拓展。

本文参与腾讯云自媒体分享计划,欢迎正在阅读的你也加入,一起分享。

发表于

我来说两句

0 条评论
登录 后参与评论

相关文章

来自专栏恰童鞋骚年

《大型网站技术架构》读书笔记之五:万无一失之网站的高可用架构

此篇已收录至《大型网站技术架构》读书笔记系列目录贴,点击访问该目录可获取更多内容。

15030
来自专栏腾讯移动品质中心TMQ的专栏

常用流量测试方法及一些思考

App性能测试中流量测试是其中重要的一项,网络场景(wifi、非wifi)、用户使用场景(页面加载流量、场景使用流量、待机流量),这些都是需要考虑的测试点。

54850
来自专栏一名合格java开发的自我修养

kafka0.8--0.11各个版本特性预览介绍

kafka-0.8.2 新特性 producer不再区分同步(sync)和异步方式(async),所有的请求以异步方式发送,这样提升了客户端效率。produc...

8520
来自专栏老九学堂

进程与线程的区别?

进程是什么? 程序并不能单独运行,只有将程序装载到内存中,系统为它分配资源才能运行,而这种执行的程序就称之为进程。程序和进程的区别就在于:程序是指令的集合,它是...

377110
来自专栏双十二技术哥

组件化实践详解(二)

在上一篇文章《组件化实践详解(一)》中我们介绍了组件化实践的目标和实践步骤,本文继续说说关于组件化实践遇到的问题及思考。

13340
来自专栏Jackson0714

架构之旅1 - 扣减库存

生活中,我们总是用各种电商app抢购商品,但是库存数是很少的,特别是秒杀场景,商品可能就一件,那如何保证不会出现超卖的情况呢?

18450
来自专栏耕耘实录

Linux运维工程师成长路线及应实现的目标

作为一名运维工程师,需要学习的东西非常多,在学习的过程中也没有任何捷径可言,必须一步一个脚印地学习、积累才能把个人技能提升到相应的高度。根据目前流行的发行版及国...

13020
来自专栏JAVA高级架构

微服务架构组件分析

服务描述:服务调用首先解决的问题就是服务如何对外描述。 常用的服务描述方式包括 RESTful API、XML 配置以及 IDL 文件三种。

14240
来自专栏coding

django2.0入门教程第一节启动开发模式下的服务器

17220
来自专栏Debian社区

为什么 Django 能持续统治 Python 开发世界

对于 Python 开发者来说,web 开发框架真可谓玲琅满目。然而 Django , 毋庸置疑的成为最受青睐的 web 框架。通过本篇博客,我来为大家讲解下为...

11530

扫码关注云+社区

领取腾讯云代金券