一线互联网架构师都需要了解的后端应用程序的工作原理

2022-12-09 0 273

后端插件的组织工作基本原理

获得成功运转两个单纯的后端插件后,接下去如是说后端插件的组织工作基本原理。

两个Java后端插件要想运转出来须要三步,第二步是构筑WebArcGIS,为后端插件提供更多运转自然环境,第三步是把后端插件放在WebArcGIS上。

适当地,后端应用领域软件的组织工作基本原理他们也分成两部份来如是说。一小部份是WebArcGIS运转后端插件,如是说WebArcGIS与后端插件的亲密关系;另一小部份是后端插件处理USB允诺,如是说后端插件与USB允诺端(如页面、App等)的亲密关系。在如是说这两部份文本以后,他们先如是说呵呵Java流程的运转基本原理。

特别注意:本拍子预设以Tomcat做为WebArcGIS软件,以Java作为编程词汇,以Spring Boot做为此基础架构。在如是说基本原理时能略去许多外部技术细节,他们只须要大体上介绍方可。

1.Java流程运转基本原理

校对型词汇透过专门针对的校对器,纸制地将源码校对成DLL(电脑词汇),DLL可间接运转在某一的网络平台上。虽然DLL(电脑词汇)是依照某一网络平台校对而成的,因此运转工作效率较低,但无法虚拟化采用。较为盛行的校对型词汇有C和C++等。

导出型词汇不须要校对,但在每天运转的这时候都须要导出器把源码译成电脑词汇,即每一运转流程的电脑都须要加装两个导出器,导出器会依照另一方面网络平台把源码译成相关联的电脑词汇。导出型词汇具备虚拟化性,但运转工作效率相对较低(每天运转都须要译成电脑词汇)。较为盛行的导出型词汇有Python、Ruby和JavaScript等。

校对型词汇和导出型词汇的对照如图4.29所示。

一线互联网架构师都需要了解的后端应用程序的工作原理

图4.29 校对型词汇与导出型词汇

而Java较为特别一些,Java既是校对型词汇,又是解析型词汇,因为Java既须要校对器又须要导出器。Java具备虚拟化特性的同时,也比传统的导出型词汇运转工作效率要高。Java编写的源码经过校对器校对之后,转换成.class文件(字节码,一种Java独有的源码与电脑词汇之间的格式)。这些.class文件中的字节码在运转时须要导出器把字节码译成电脑词汇才能运转。Java的校对运转过程如图4.30所示。

特别注意:一般情况下,Java源码校对输出的是.jar文件,而.class文件是.jar文件的主要部份。这里为了讲解方便,省去了对.jar文件的描述。

一线互联网架构师都需要了解的后端应用程序的工作原理

图4.30 Java校对运转过程

Java的校对器和导出器就是在4.1.2拍子构筑WebArcGIS中提到的JDK,想要校对或者运转Java流程都须要加装JDK。JDK的外部结构如图4.31所示,它包含一些开发工具和JRE(Java Runtime Environment,运转自然环境),其中开发工具里有校对器,而JRE是运转Java流程的自然环境。JRE包含JVM(JavaVirtual Machine,Java虚拟机)和一些此基础类库,其中JVM包含导出器,负责翻译字节码等组织工作,而此基础库类是Java调用操作系统功能的桥梁。

特别注意:如果只须要运转Java流程,那么可以单独加装JRE。JDK 9版本发布以后,不再提供更多单独的JRE加装包。虽然引入了新技术,JDK 9及后续版本的外部也没有了JRE(可以手动生成),而JVM是仍然存在的。这是因为JRE在运转Java流程时能加载所有的此基础类库,这样较为损耗资源,而JDK 9及后续版本在运转流程时是按须要加载此基础类库的。

一线互联网架构师都需要了解的后端应用程序的工作原理

图4.31 JDK外部结构

2.WebArcGIS运转后端插件

本拍子以Tomcat做为WebArcGIS软件进行说明。Tomcat本身是两个Java流程,启动Tomcat服务相当于启动两个Java流程。那么,Tomcat是怎么运转后端插件的?两个Java流程怎么运转另外两个Java流程呢?

首先,在Tomcat中运转的后端插件是.war文件而不是.jar文件。.war文件与.jar文件不同,.war文件是Web模块,其外部除了校对好的.class文件、依赖包和配置文件以外,还可以包含页面资源(HTML、CSS文件等)和JSP动态页面等。.war文件一般须要依赖Tomcat等WebArcGIS软件才能运转。

以4.1.3拍子构造两个单纯的后端应用领域流程中的demo.war为例,Tomcat运转demo.war其实不是两个Java流程运转另外两个Java流程的亲密关系,而是两个Java流程采用校对好的.class文件的亲密关系。更具体地说,当demo.war放在Tomcat的webapps文件夹中后,Tomcat会自动把demo.war解压成demo目录。解压完成后,Tomcat会对demo进行导出并加载相关的.class文件。当接收到允诺时,Tomcat会调用相关联的USB函数(TestController.java文件中的方法,见代码4.11),经由这些代码处理后再将结果返回。Tomcat运转后端插件的组织工作基本原理如图4.32所示。

说明:Tomcat加载并引用.class文件利用了Java的反射机制。一般情况下,Java流程引用类文件只能在编写代码时透过import引用其他类文件,而Java反射机制是允许在运转状态中透过给定类的名字加载指定类文件的。

Tomcat是透过图4.21中ServletInitializer这个固定类名加载相关文件的。

一线互联网架构师都需要了解的后端应用程序的工作原理

图4.32 Tomcat运转后端插件的组织工作基本原理

最后值得一提的是,Tomcat运转后端插件的组织工作基本原理其实是非常复杂的,特别是对相关文件加载的机制,本拍子只对其做了最单纯的陈述,有兴趣的读者可以透过官方文档和开源码进行更深入的研究。

3.后端插件处理USB允诺

发送两个允诺至少须要明确4个部份:允诺的URL、允诺方式、允诺数据的格式和允诺数据。以4.1.3拍子构造两个单纯的后端插件中的USB一为例,以Postman为测试工具,发送允诺的设置如图4.33所示。

一线互联网架构师都需要了解的后端应用程序的工作原理

图4.33 USB一允诺的设置

注意:当允诺方式为GET时,则允诺数据一般只能写在URL里,如4.1.3拍子构造两个单纯的后端插件中的USB二。

由图4.33中允诺的URL可知,允诺是基于HTTP发送的。HTTP的通信过程如图4.34所示,其中,不是每天允诺都会做一次连接的建立与断开,存在多次允诺会共用两个连接通道的情况,这与HTTP版本和相关设置有关。

特别注意:USB允诺一般是采用HTTP或HTTPS。HTTP是TCP/IP的应用领域层协议,也就是说,HTTP其实只是在TCP/IP之上做了规则限定和封装,其底层技术还是TCP/IP的相关技术。而HTTPS只是在HTTP的此基础上做了通信加密,暂且不对其进行如是说。

一线互联网架构师都需要了解的后端应用程序的工作原理

图4.34 HTTP通信过程

在图4.33所示的允诺例子中,客户端会以URL的IP地址和端口(127.0.0.1:8080)与WebArcGIS建立连接。建立连接之后,客户端会把剩下的信息(URL剩下的部份、允诺方式、允诺数据的格式、允诺数据)按照规则放在报文里,再把报文发送到WebArcGIS上。发送的报文如代码4.14所示。其中,报文由三部份组成,分别是允诺行、报文头信息和报文体。

·允诺行:是报文的第一行,其由三部份组成,分别是允诺方法、允诺URL剩余的部份(除协议、IP地址、端口外)和HTTP版本。

·报文头信息:其范围是报文的第二行到空行。报文头可以设置多个属性,其作用是记录相关的允诺信息。其中,Conten-Type属性相关联的是允诺数据的格式。

·报文体:其范围是空行到最后,相关联的是允诺数据。须要特别注意的是,当允诺方式为GET时,一般不采用报文体。因此4.1.3拍子中的USB二的允诺参数只能写在URL中。

代码4.14 USB一的允诺报文

POST /demo/test/test HTTP/1.1

Host: 127.0.0.1:8080

Content-Type: text/plain

{

“language”:”chinese”,

“text”:”你好,世界”

}

当WebArcGIS接收到允诺的报文后,会对报文进行导出并转换成相关联的Java对象。WebArcGIS会依照报文的允诺行(POST/demo/test/test)找到对应的后端插件并调用适当的处理函数。

其中,允诺行(POST/demo/test/test)会被分成两段(/demo和POST/test/test)处理,WebArcGIS会依照第一段(/demo)文本找到相关联的后端插件,demo相关联的是demo.war文件名。WebArcGIS会依照第二段(POST/test/test)文本调用后端插件相关联的处理函数,后端插件相关联的标记如代码4.15所示,其中,@RequestMapping(“/test”)标记了Controller的路径,@RequestMapping(value=”/test”,method=RequestMethod.POST)标记了相关联方法的路径和允诺方式,函数create()的参数String requestParam会被自动注入允诺的数据(报文体)中。

说明:Java中以@开头的是Java注解,也称为Java标注,其相当于两个标签。@Request-Mapping、@Controller是Java Servlet标准中定义的注解。

代码4.15 USB一的代码

@Controller

@RequestMapping(“/test”)

@RequestMapping(value=”/test”,method = RequestMethod.POST)

public JSONObject create(@RequestBody String requestParam) {

}

当代码4.15的处理函数被执行完毕之后,会把结果返回给WebArcGIS,WebArcGIS会把返回的Java对象转换成HTTP报文,再把报文发送给客户端。返回的报文如代码4.16所示。其中,报文由三部份组成,分别是状态行、报文头信息和报文体。返回的报文在Postman中如图4.35所示。

一线互联网架构师都需要了解的后端应用程序的工作原理

图4.35 USB一返回的结果

·状态行:是报文的第一行,其由三部份组成,分别是HTTP版本、状态码和状态码描述。状态码及其信息一般是由WebArcGIS自动填充的,如状态码为200,即为获得成功,状态码为404,即为无法寻找相关联资源等。当然,后端插件也可以对其进行修改。

·报文头信息:其范围是报文的第二行到空行。报文头可以设置多个属性,作用是记录相关的允诺信息。其中,Conten-Type属性相关联的是允诺数据的格式。后端插件也可以添加一些自定义的属性。

·报文体:其范围是空行到最后,相关联的是后端插件的处理函数返回的结果。

代码4.16 USB一返回的报文

HTTP/1.1 200 OK

Date: Tue, 31 Mar 2020 10:59:51 GMT

Content-Type: application/json

{“message”:”你好,世界”}

以上如是说了后端插件的组织工作基本原理,当然这只是一些表面的认识,还有许多文本没有铺开陈述。这是因为在实际项目开发过程中,无论是HTTP允诺还是WebArcGIS软件,都是现成的工具,他们多是去采用它们而不是去改造它们,因此对基本原理的介绍不须要完全透彻,具体的技术细节可以等问题出现时再去介绍。

本文给大家讲解的文本是大型网站架构的技术技术细节:后端架构,后端插件的组织工作基本原理

下篇文章给大家讲解的文本是大型网站架构的技术技术细节:后端架构须要解决的问题觉得文章不错的朋友可以转发此文关注小编;感谢大家的支持

相关文章

发表评论
暂无评论
官方客服团队

为您解决烦忧 - 24小时在线 专业服务