加入收藏 | 设为首页 | 会员中心 | 我要投稿 核心网 (https://www.hxwgxz.com/)- 科技、建站、经验、云计算、5G、大数据,站长网!
当前位置: 首页 > 电商 > 正文

程序员必知的六种隔离技术

发布时间:2021-03-13 13:34:41 所属栏目:电商 来源:网络整理
导读:节选自《Growth: 全栈增长工程师指南》 为了将我们的应用部署到服务器上,我们需要为其配置一个运行环境。从底层到顶层有这样的运行环境及容器: 隔离硬件:虚拟机 隔离操作系统:容器虚拟化 隔离底层:Servlet容器 隔离依赖版本:虚拟环境 隔离运行环境:语

在上面的例子里我们已经隔离开了操作系统的因素,接着我们还需要解决操作系统、开发环境引起的差异。早期开发Web应用时,人们使用CGI技术,它可以让一个客户端,从网页浏览器向执行在网络服务器上的程序请求数据。并且CGI程序可以用任何脚本语言或者是完全独立编程语言实现,只要这个语言可以在这个系统上运行。而这样的脚本语言在多数情况下是依赖于系统环境的,特别是针对于C++这一类的编译语言来说,在不同的操作系统中都需要重新编译。

而Java的Servlet则是另外一种有趣的存在,它是一种独立于平台和协议的服务器端的Java应用程序,可以生成动态的Web页面。

Tomcat

在开发Java Web应用的过程中,我们在开始环境使用Jetty来运行我们的服务,而在生产环境使用Tomcat来运行。他们都是Servlet容器,可以在其上面运行着同一个Servlet应用。Servlet是指由Java编写的服务器端程序,它们是为响应Web应用程序上下文中的HTTP请求而设计的。它是应用服务器中位于组件和平台之间的接口集合。

Tomcat服务器是一个免费的开放源代码的Web应用服务器。它运行时占用的系统资源小,扩展性好,支持负载平衡与邮件服务等开发应用系统常用的功能。除此,它还是一个Servlet和JSP容器,独立的Servlet容器是Tomcat的默认模式。其架构如下图所示:

程序员必知的六种隔离技术

Servlet被部署在应用服务器中,并由容器来控制其生命周期。在运行时由Web服务器软件处理一般请求,并把Servlet调用传递给“容器”来处理。并且Tomcat也会负责对一些静态资源的处理。

4、隔离依赖版本(虚拟环境)

对于Java这一类的编译语言来说,不存在太多语言运行带来的问题。而对于动态语言来说就存在这样的问题,如Ruby、Python、Node.js等等,这一个问题主要集中于开发环境。当然如果你在一个服务器上运行着几个不同的应用来说,也会存在这样的问题。这一类的工具在Python里有VirtualEnv,在Ruby里有RVM、Rbenv,在Node.js里有NVM。

下图是使用VirtualEnv时的不同几个应用的架构图:

程序员必知的六种隔离技术

如下所示,在不同的虚拟环境里,我们可以使用不同的依赖库。在这上面构建不同的应用,也可以使用不同的Python版本来构建系统。通常来说,这一类的工具主要用于本地的开发环境。

5、隔离运行环境(语言虚拟机)

最后一个要介绍的可能就是更加抽象的,但是也是更加实用的一个,JVM就是这方面的一个代表。在我们的编程生涯里,我们很容易就会遇到跨平台问题——即我们在我们的开发机器上开发的软件,在我们的产品环境的机器上就没有办法运行。特别是当我们使用Mac OS或者Windows机器上开发了我们的应用,然后我们需要在Linux系统上运行,就会遇到各种问题。并且当我们使用了一个需要重新编译的库时,这种问题就更加麻烦。

如下图所示的是JVM的架构示意图

程序员必知的六种隔离技术

JVM是一种用于计算设备的规范,它是一个虚构出来的计算机,是通过在实际的计算机上仿真模拟各种计算机功能来实现的。它可以实现“编写一次,到处运行”。

换句话来说,它在底层实现了环境隔离,它屏蔽了与具体操作系统平台相关的信息,使得Java程序只需生成在Java虚拟机上运行的目标代码(字节码),就可以在多种平台上不加修改地运行。

基于此,只要其他编程语言的编译器能生成正确Java bytecode文件,这个语言也能实现在JVM上运行。如下图所示的是基于JVM的Jython语言的架构图:

程序员必知的六种隔离技术

其底层是基于JVM,而编写时则是用Python语言,并且他可以使用Java的模块来编程。

常见拥有同样架构的工具,还有MySQL,如下图是所示的是MySQL的架构图:

程序员必知的六种隔离技术

MySQL在最顶层提供了一个名为SQL的查询语言,这个查询语言只能用于查询数据库,然而它却是一种更高级的用法 。它不像通用目的语言那样目标范围涵盖一切软件问题,而是专门针对某一特定问题的计算机语言,即领域特定语言。

6、隔离语言(DSL)

这是一门特别有意思也特别值得期待的技术,但是实现它并不是一件容易的事。

(编辑:核心网)

【声明】本站内容均来自网络,其相关言论仅代表作者个人观点,不代表本站立场。若无意侵犯到您的权利,请及时与联系站长删除相关内容!

热点阅读