|
能够自生成唯一性的内在属性,使得UUID成为分布式环境中最常用的ID生成技术之一。但UUID需要额外的存储空间,这可能会对查询性能产生负面影响。
持久层生成的ID
如果不想在应用程序级别生成唯一ID时,另一种常见的方法是用永续性储存体来处理。
最近所有的RDBMS都提供了某种列数据类型,开发人员能够委托它们生成唯一标识符。MongoDB提供ObjectID,MySQL和MariaDB提供AUTO_INCREMENT,MS-SQL-Server提供IDENTITY,等等。执行不同的数据库,ID的实际表现会有所不同,但唯一性的含义保持不变。
持久层生成的ID缓解了必须在应用程序代码中生成唯一ID的问题。但如果操作一个大型数据库集群,且有非常繁忙的应用程序在前,这种方法可能就无法满足需要了。
还有另一个问题:如果不往返数据库,则生成的ID对于代码来说是未知的:
唯一的ID使开发人员能够正确识别、保存和检索数据对象,并使数据对象参与到复杂的关系模式中。在应用程序开发周期中,程序员总会遇到要处理生成唯一的标识符这项任务。
这些独特的ID是如何生成的呢?哪种方法在不同的负载规模下最有效?ID如何在多个计算节点竞争下一个可用ID的分布式环境中保持唯一性?从小型单节点,到Twitter级别,本文笔者就将介绍三种最常见的技术。
通用唯一标识符——UUID
通用唯一标识符(UUID)这个概念大家不会陌生,它在软件中已经使用多年了。它是一个128位的数字,以受控和标准化的方式生成时,能够提供非常大的键空间,几乎消除了冲突的可能性。
UUID是由几个不同部分组成的合成ID,例如时间、节点的MAC地址或MD5散列的命名空间。为了适应所有这些组合,多年来,UUID规格已经发展出多个版本,特别是版本1和版本4。
根据数据和业务域的不同,一些开发人员可能会对其他版本感兴趣。处理128位数字并不是最适合开发人员描述信息的方式,因此UUID通常以规范文本形式表示,其中16个八位字节转换为32个十六进制字符,用连字符分隔,总共36个字符:
在Tomcat中部署应用程序
Tomcat的webapps目录是您部署应用程序的位置。您可以将.war文件放在那里,然后Tomcat将运行它。WAR文件是Web应用程序资源的标准包装:一个JAR文件,其中包含一些其他文件,这些文件告诉容器(在本例中为Tomcat)如何运行它。
除了标准包装之外,还有三种其他方法可以在Tomcat中部署内容。
爆炸式部署
“爆炸式” Web应用程序是未压缩为WAR文件的应用程序,这意味着它仍包含目录和文件中列出的所有元素。您解压缩的Tomcat归档文件附带了以这种方式部署的几个示例,您可以在/webapps/examples目录中找到这些示例。展开式部署的优点是您可以查看那里的文件而不必担心压缩。
下载并安装Tomcat
作为软件世界的古老者,有许多Tomcat版本可用。有关版本差异的信息可在Tomcat主页上找到。通常,您可以选择最新的稳定版本。
为了我们的目的,下载最新版本的Tomcat,当前版本为Tomcat 9。您可以选择将Tomcat作为归档文件(.zip或tar.gz)或作为已安装的服务下载。最好的选择取决于您-除非您当然不在Windows上运行,否则将使用存档。我们将在本文中使用存档。
Tomcat的Windows安装
如果您正在运行Windows并想使用安装程序,只需下载.exe文件并运行它。Tomcat会将其自身安装为具有合理默认值的服务。然后它将通知您安装位置,并且您可以像在其中解压缩存档一样继续进行。
步骤1.命令行安装
去命令行和类型gunzip apache-tomcat-9.0.19.tar.gz接着tar -xf apache-tomcat-9.0.19.tar。这将创建以下目录:
-
/ bin包含用于执行Tomcat的脚本。
-
/ webapps是您将部署应用程序的位置。
-
/ logs是Tomcat输出日志的位置。请注意,/logs/catalina.out默认情况下会进入Tomcat的日志。您可以使用此文件和特定于应用程序的日志文件一起调试问题。
-
/ lib是Tomcat查找JAR的地方。在这里,您将存储Tomcat不附带的其他软件包,例如JPA。
-
/ conf是Tomcat的配置XML,您可以在其中执行诸如为Tomcat添加用户和角色之类的操作。
步骤2.启动Tomcat
如果将Tomcat作为服务安装,则它已经在运行。否则,请继续并通过./catalina.sh start在命令行中输入启动它。(键入./catalina.sh不带参数的内容以查看所有可用命令)。现在,您应该能够在浏览器中浏览到Tomcat的欢迎屏幕。

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