Tomcat:Web 领域的闪耀明珠,魅力何在?

news2024/11/28 4:53:09

一、Web技术

HTTP 协议(HyperText Transfer Protocol,超文本传输协议)是互联网上应用最为广泛的一种网络协议。它的主要作用是在客户端和服务器之间传输超文本数据,如网页、图片、视频等。

HTTP 协议的特点

  1. 无状态性

    • HTTP 协议是无状态的,这意味着服务器不会记住客户端的状态信息。每次请求都是独立的,服务器不会根据之前的请求来处理当前请求。
    • 这种无状态性虽然提高了服务器的性能和可扩展性,但也给一些需要保持状态的应用带来了挑战。为了解决这个问题,通常会使用 Cookie 和 Session 等技术来在客户端和服务器之间保持状态。
  2. 基于请求 / 响应模式

    • HTTP 协议是基于请求 / 响应模式的。客户端向服务器发送请求,服务器接收到请求后进行处理,并返回响应。
    • 请求由三部分组成:请求方法、请求 URI 和 HTTP 版本号。响应也由三部分组成:状态行、响应头和响应体。
  3. 使用 TCP 作为传输层协议

    • HTTP 协议使用 TCP 作为传输层协议,这保证了数据的可靠传输。TCP 协议提供了面向连接、可靠的数据传输服务,确保数据能够准确无误地从客户端传输到服务器,再从服务器传输到客户端。
  4. 支持多种请求方法

    • HTTP 协议支持多种请求方法,如 GET、POST、PUT、DELETE、HEAD 等。不同的请求方法用于不同的目的,例如 GET 方法用于获取资源,POST 方法用于提交数据等。

B/S 结构(Browser/Server,浏览器 / 服务器模式)

B/S 结构是一种基于 Web 的软件架构模式,它将应用程序的界面展示和业务逻辑处理分离,客户端使用浏览器访问服务器上的应用程序。

  1. B/S 结构的组成

    • 客户端:客户端使用浏览器作为用户界面,通过 HTTP 协议与服务器进行通信。浏览器负责向用户展示应用程序的界面,并将用户的操作转换为 HTTP 请求发送给服务器。
    • 服务器:服务器负责处理客户端的请求,并返回相应的响应。服务器通常包括 Web 服务器、应用服务器和数据库服务器等。
    • 网络:网络用于连接客户端和服务器,实现数据的传输。
  2. B/S 结构的优点

    • 易于部署和维护:B/S 结构的应用程序只需要在服务器端进行部署和维护,客户端无需安装额外的软件。这大大降低了应用程序的部署和维护成本,提高了应用程序的可维护性和可扩展性。
    • 跨平台性:由于客户端使用浏览器作为用户界面,因此 B/S 结构的应用程序具有良好的跨平台性。只要有浏览器,就可以访问应用程序,不受操作系统和硬件平台的限制。
    • 良好的用户体验:浏览器提供了丰富的用户界面和交互功能,用户可以通过熟悉的浏览器界面进行操作,无需学习复杂的软件操作。此外,浏览器还可以支持多种媒体格式,如图片、视频、音频等,为用户提供更加丰富的体验。
    • 可扩展性强:B/S 结构的应用程序可以根据业务需求方便地扩展服务器端的功能。服务器端可以使用分布式架构和集群技术来提高应用程序的性能和可扩展性。

HTTP 协议在 B/S 结构中的作用

  1. 客户端与服务器之间的通信

    • 在 B/S 结构中,客户端和服务器之间的通信是通过 HTTP 协议进行的。客户端使用浏览器向服务器发送 HTTP 请求,服务器接收到请求后进行处理,并返回相应的 HTTP 响应。
    • HTTP 协议规定了请求和响应的格式和内容,使得客户端和服务器之间能够准确地理解对方的意图,并进行有效的通信。
  2. 资源的获取和传输

    • B/S 结构的应用程序通常需要从服务器获取各种资源,如网页、图片、视频等。这些资源都是通过 HTTP 协议进行传输的。
    • HTTP 协议支持多种资源类型的传输,如文本、图片、音频、视频等。它还支持资源的缓存和压缩,提高了资源的传输效率。
  3. 状态管理和会话控制

    • 虽然 HTTP 协议是无状态的,但在 B/S 结构的应用程序中,通常需要保持用户的状态信息,如登录状态、购物车信息等。为了解决这个问题,通常会使用 Cookie 和 Session 等技术来在客户端和服务器之间保持状态。
    • Cookie 是一种存储在客户端的小型文本文件,服务器可以通过设置 Cookie 来在客户端存储一些状态信息。客户端在每次请求时会自动将 Cookie 发送给服务器,服务器可以根据 Cookie 中的信息来识别用户的状态。
    • Session 是一种在服务器端存储用户状态信息的技术。服务器为每个用户创建一个 Session,并在 Session 中存储用户的状态信息。客户端在每次请求时会携带一个 Session ID,服务器可以根据 Session ID 来识别用户的 Session,并获取用户的状态信息。

 二、前端三大核心技术

前端三大核心技术通常指 HTML、CSS 和 JavaScript,它们共同构建了丰富多彩的网页世界。

HTML(超文本标记语言)

HTML 是网页内容的基石,它以一种简洁而直观的方式定义了网页的结构和内容。

  1. 基本结构与组成

    • HTML 文档由一系列的标签组成,这些标签用于描述网页中的不同元素。例如,<html>标签是整个网页的根元素,<head>标签包含了网页的元数据,如标题、字符编码等,<body>标签则包含了网页的实际内容。
    • 常见的 HTML 标签有<p>(段落)、<h1><h6>(标题)、<img>(图像)、<a>(链接)、<ul><li>(无序列表和列表项)等。每个标签都有特定的含义和用途,可以根据需要组合使用来构建复杂的网页结构。
  2. 重要特性与优势

    • 语义化:HTML5 引入了更多语义化的标签,如<article>(文章)、<section>(章节)、<nav>(导航)等,这些标签使得网页的结构更加清晰,便于搜索引擎优化和屏幕阅读器等辅助技术的理解。
    • 跨平台性:HTML 文档可以在各种操作系统和设备上显示,无论是桌面电脑、笔记本电脑、平板电脑还是智能手机,都能正确呈现 HTML 页面。这使得网页可以广泛地传播和访问,不受平台限制。
    • 易于学习和使用:HTML 的语法相对简单,容易上手。即使是没有编程经验的人,也可以通过学习基本的 HTML 标签和属性,快速创建简单的网页。

CSS(层叠样式表)

CSS 赋予网页美丽的外观和一致的风格。

  1. 功能与作用

    • 样式控制:CSS 可以精确地控制网页中各个元素的外观样式,包括颜色、字体、大小、间距、边框、背景等。通过设置不同的样式属性,可以使网页呈现出各种独特的视觉效果。
    • 布局设计:CSS 提供了强大的布局功能,可以实现网页的多种布局方式,如流式布局、固定布局、弹性布局等。通过合理地运用 CSS 布局技术,可以使网页在不同的屏幕尺寸下都能保持良好的显示效果。
    • 响应式设计:随着移动设备的普及,响应式设计变得越来越重要。CSS 可以通过媒体查询等技术,根据不同的设备特性和屏幕尺寸,自动调整网页的样式和布局,实现自适应的显示效果。
  2. 特点与优势

    • 层叠性:CSS 中的样式规则可以层叠在一起,多个规则可以同时作用于同一个元素。当多个规则对同一个属性进行设置时,会根据优先级和层叠顺序来确定最终的样式。这种层叠性使得样式的管理更加灵活和方便。
    • 继承性:CSS 中的某些样式属性可以被子元素继承自父元素。例如,字体、颜色等属性可以从父元素传递给子元素,减少了重复设置的工作量。同时,也可以通过设置特定的属性值来覆盖继承的样式。
    • 分离内容与样式:将网页的内容和样式分离是 CSS 的一个重要优势。这样可以使网页的结构更加清晰,易于维护和修改。同时,也可以让设计师和开发人员分别专注于内容和样式的设计,提高工作效率。

JavaScript

JavaScript 为网页带来了生动的交互性和动态效果。

  1. 功能与能力

    • 交互响应:JavaScript 可以监听用户的操作,如点击、鼠标移动、键盘输入等,并根据用户的操作执行相应的动作。例如,当用户点击一个按钮时,可以使用 JavaScript 显示一个弹出窗口,或者提交一个表单。
    • 动态内容更新:JavaScript 可以动态地修改网页的内容和样式,实现网页的实时更新。比如,可以使用 JavaScript 从服务器获取数据,并将其显示在网页上,或者根据用户的偏好调整网页的布局。
    • 动画效果:通过 JavaScript 可以实现各种动画效果,如淡入淡出、滑动、旋转等。这些动画效果可以增强网页的视觉吸引力,提高用户的体验。
    • 与服务器通信:JavaScript 可以使用 Ajax 技术与服务器进行异步通信,实现无刷新的数据加载和提交。这使得网页可以在不刷新整个页面的情况下,获取新的数据并更新部分内容,提高了用户体验和页面的响应速度。
  2. 重要性与价值

    • 提升用户体验:JavaScript 为网页添加了交互性和动态效果,使网页更加生动有趣,提高了用户的参与度和停留时间。用户可以通过与网页进行互动,获得更加个性化的体验。
    • 增强网页功能:JavaScript 可以实现各种复杂的功能,如表单验证、数据处理、地图显示等。这些功能使得网页不再是简单的静态页面,而是具有强大功能的应用程序。
    • 提高开发效率:JavaScript 是一种灵活的编程语言,可以与 HTML 和 CSS 紧密结合,实现高效的开发。同时,JavaScript 也有丰富的库和框架可供选择,如 jQuery、React、Vue 等,这些工具可以大大提高开发效率和代码质量。

 三、Tomcat的功能介绍

Tomcat 是一个开源的、轻量级的 Web 应用服务器,具有以下主要功能:

Web 容器功能

  1. 处理 HTTP 请求和响应

    • Tomcat 能够接收来自客户端(如浏览器)的 HTTP 请求,并根据请求的内容进行相应的处理。它解析请求的 URL、请求方法(GET、POST 等)、请求头和请求体等信息,然后确定要调用的 Web 应用程序中的资源。
    • 对于静态资源(如 HTML 文件、图片、CSS 文件、JavaScript 文件等),Tomcat 可以直接将其返回给客户端。对于动态资源(如 JSP 文件、Servlet 等),Tomcat 会调用相应的处理程序来生成动态内容,并将其封装成 HTTP 响应返回给客户端。
    • Tomcat 支持多种 HTTP 协议版本,包括 HTTP/1.1 和 HTTP/2,能够与不同版本的客户端进行通信。
  2. 管理 Web 应用程序

    • Tomcat 可以部署和管理多个 Web 应用程序。每个 Web 应用程序都有自己独立的目录结构和配置文件,Tomcat 负责加载、初始化和运行这些应用程序。
    • 它提供了一种标准的方式来部署 Web 应用程序,通常是将应用程序的 WAR(Web Application Archive)文件复制到 Tomcat 的特定目录下,或者使用 Tomcat 的管理界面进行部署。
    • Tomcat 还可以管理 Web 应用程序的生命周期,包括启动、停止、重新加载等操作。在应用程序运行过程中,Tomcat 会监控应用程序的状态,及时处理异常情况,并提供相应的日志记录和错误报告。

Servlet 和 JSP 容器功能

  1. 支持 Servlet 规范

    • Tomcat 实现了 Java Servlet 规范,允许开发人员编写 Servlet 类来处理 Web 请求。Servlet 是一种基于 Java 的服务器端编程技术,它可以接收 HTTP 请求、处理业务逻辑、生成动态内容,并将响应返回给客户端。
    • Tomcat 负责加载和实例化 Servlet 类,并管理 Servlet 的生命周期。它根据请求的 URL 和 Servlet 的映射关系,调用相应的 Servlet 来处理请求。
    • Servlet 可以通过请求和响应对象与客户端进行交互,还可以访问服务器端的资源,如数据库、文件系统等。Tomcat 提供了一系列的 API 和工具,方便开发人员编写高效、可靠的 Servlet 应用程序。
  2. 支持 JSP 技术

    • Tomcat 也支持 JavaServer Pages(JSP)技术,JSP 是一种基于 Java 的服务器端页面技术,它允许开发人员在 HTML 页面中嵌入 Java 代码,以生成动态内容。
    • Tomcat 负责将 JSP 文件编译成 Servlet 类,并在需要时调用这个 Servlet 来处理请求。它还提供了一个 JSP 引擎,负责解析和执行 JSP 页面中的 Java 代码,并将生成的 HTML 内容返回给客户端。
    • JSP 技术使得开发人员可以更加方便地创建动态网页,同时也提高了开发效率和代码的可维护性。

连接池和资源管理功能

  1. 数据库连接池

    • Tomcat 可以配置数据库连接池,以提高数据库访问的性能和效率。连接池管理着一组数据库连接,当应用程序需要访问数据库时,从连接池中获取一个可用的连接,使用完毕后将连接归还给连接池。
    • 连接池可以减少建立和关闭数据库连接的开销,提高数据库的并发访问能力。Tomcat 支持多种数据库连接池技术,如 DBCP(Apache Commons DBCP)、C3P0 等,开发人员可以根据自己的需求选择合适的连接池。
  2. 资源管理

    • Tomcat 还可以管理其他资源,如线程池、JNDI(Java Naming and Directory Interface)资源等。线程池用于处理并发请求,提高服务器的吞吐量和响应速度。JNDI 资源可以用于访问外部资源,如数据库、邮件服务器等。
    • Tomcat 提供了一系列的配置选项和管理工具,方便开发人员对这些资源进行管理和优化。

安全管理功能

  1. 用户认证和授权

    • Tomcat 可以配置用户认证和授权机制,以保护 Web 应用程序的安全。它支持多种认证方式,如基本认证、表单认证、摘要认证等。
    • 开发人员可以通过配置 Tomcat 的安全约束和用户角色,限制不同用户对 Web 应用程序的访问权限。只有经过认证的用户才能访问受保护的资源,并且根据用户的角色分配不同的权限。
  2. SSL/TLS 加密

    • Tomcat 支持 SSL/TLS 加密协议,可以为客户端和服务器之间的通信提供安全保障。通过配置 SSL 证书和密钥,Tomcat 可以建立安全的 HTTPS 连接,防止数据在传输过程中被窃取或篡改。
    • SSL/TLS 加密可以提高 Web 应用程序的安全性,保护用户的隐私和敏感信息。

集群和负载均衡功能

  1. 集群部署

    • Tomcat 可以配置成集群模式,将多个 Tomcat 实例组成一个集群,共同为 Web 应用程序提供服务。集群可以提高系统的可用性和可靠性,当一个节点出现故障时,其他节点可以继续提供服务。
    • 在集群中,Tomcat 实例之间可以通过共享内存、数据库或消息队列等方式进行通信,实现会话复制、负载均衡等功能。
  2. 负载均衡

    • Tomcat 可以与负载均衡器配合使用,实现请求的负载均衡。负载均衡器将客户端的请求分发到不同的 Tomcat 实例上,以平衡服务器的负载,提高系统的性能和吞吐量。
    • Tomcat 本身也提供了一些简单的负载均衡策略,如轮询、随机等,可以在没有外部负载均衡器的情况下,对请求进行一定程度的负载均衡

 四、Tomcat的安装部署

 安装java环境

两台tomcat服务器都需操作

安装并启动tomcat

[root@tomcat-node1 ~]# tar zxf apache-tomcat-9.0.91.tar.gz -C /usr/local/

 [root@tomcat-node1 ~]# ln -s /usr/local/apache-tomcat-9.0.91/ /usr/local/tomcat

 [root@tomcat-node1 ~]# /usr/local/tomcat/bin/startup.sh

 [root@tomcat-node1 ~]# netstat -antlupe | grep java

测试一下

 

生成tomcat的启动文件

生成tomcat的主配置文件

生成启动文件

[root@tomcat-node1 ~]# useradd -s /sbin/nologin -M tomcat

 [root@tomcat-node1 ~]# chown -R tomcat.tomcat /usr/local/apache-tomcat-9.0.93/

 [root@tomcat-node1 ~]# systemctl daemon-reload

 [root@tomcat-node1 ~]# systemctl enable --now tomcat

五、结合反向代理实现tomcat部署

 利用 nginx 反向代理实现

[root@tomcat ~]# vim /usr/local/nginx/conf.d/php.conf 

 

六、实现tomcat中的负载均衡

使用硬件负载均衡器

硬件负载均衡器是一种专门的设备,用于在多个服务器之间分配网络流量。它通常具有高性能、高可靠性和丰富的功能,可以实现复杂的负载均衡策略。

  1. 配置步骤

    • 将多个 Tomcat 服务器连接到硬件负载均衡器。
    • 在硬件负载均衡器上配置负载均衡策略,如轮询、加权轮询、最少连接等。
    • 将客户端的请求发送到硬件负载均衡器的虚拟 IP 地址,硬件负载均衡器会根据配置的策略将请求转发到不同的 Tomcat 服务器上。
  2. 优点

    • 高性能:硬件负载均衡器通常具有强大的处理能力和高带宽,可以处理大量的并发请求。
    • 高可靠性:硬件负载均衡器通常具有冗余电源、热插拔部件等,可以保证系统的高可靠性。
    • 丰富的功能:硬件负载均衡器通常提供了多种负载均衡策略、健康检查、会话保持等功能,可以满足不同的应用需求。
  3. 缺点

    • 成本高:硬件负载均衡器通常价格昂贵,对于小型应用来说可能成本过高。
    • 管理复杂:硬件负载均衡器需要专业的技术人员进行管理和维护,对于一些小型团队来说可能存在管理上的困难。

使用软件负载均衡器

软件负载均衡器是一种运行在操作系统上的软件程序,它可以实现与硬件负载均衡器类似的功能。常见的软件负载均衡器有 Nginx、HAProxy 等。

  1. 配置步骤

    • 在一台服务器上安装软件负载均衡器,如 Nginx。
    • 配置 Nginx 的负载均衡策略,将请求转发到多个 Tomcat 服务器上。
    • 将客户端的请求发送到 Nginx 的 IP 地址,Nginx 会根据配置的策略将请求转发到不同的 Tomcat 服务器上。
  2. 优点

    • 成本低:软件负载均衡器通常是免费的或价格较低,对于小型应用来说成本较低。
    • 灵活性高:软件负载均衡器可以根据需要进行定制和扩展,满足不同的应用需求。
    • 易于管理:软件负载均衡器通常可以通过简单的配置文件进行管理,对于一些小型团队来说管理起来比较容易。
  3. 缺点

    • 性能相对较低:软件负载均衡器的性能通常不如硬件负载均衡器,对于高并发的应用来说可能存在性能瓶颈。
    • 可靠性相对较低:软件负载均衡器的可靠性通常不如硬件负载均衡器,对于一些对可靠性要求较高的应用来说可能存在风险。

使用 Tomcat 自带的集群功能

Tomcat 本身也提供了一些集群功能,可以实现简单的负载均衡和故障转移。

  1. 配置步骤

    • 在多个服务器上安装 Tomcat,并配置相同的 Web 应用程序。
    • 修改 Tomcat 的配置文件,启用集群功能。
    • 在 Tomcat 的集群配置中,配置负载均衡策略和故障转移机制。
    • 将客户端的请求发送到其中一个 Tomcat 服务器的 IP 地址,Tomcat 会根据配置的策略将请求转发到其他 Tomcat 服务器上。
  2. 优点

    • 集成度高:Tomcat 自带的集群功能与 Tomcat 紧密集成,无需安装额外的软件。
    • 易于配置:Tomcat 的集群配置相对简单,对于一些小型应用来说比较容易上手。
  3. 缺点

    • 功能相对较弱:Tomcat 自带的集群功能相对较弱,只能实现简单的负载均衡和故障转移,对于一些复杂的应用需求可能无法满足。
    • 性能相对较低:Tomcat 自带的集群功能在性能上可能不如硬件负载均衡器和软件负载均衡器,对于高并发的应用来说可能存在性能瓶颈。

 HTTP的无状态,有连接和短连接

无状态

  1. 定义与表现

    • HTTP 是无状态的协议,这意味着服务器不会在不同的请求之间记住客户端的任何信息。每次请求都是独立的,服务器处理完一个请求后,不会保留关于该客户端的任何记忆。
    • 例如,当用户在一个网站上进行一系列操作,如浏览不同的页面、提交表单等,服务器并不会知道这些请求来自同一个用户,除非通过特定的技术手段(如 Cookie、Session 等)来跟踪用户状态。
  2. 优点与缺点

    • 优点:无状态特性使得 HTTP 协议简单、高效,服务器不需要为每个客户端维护大量的状态信息,从而降低了服务器的负担,提高了可扩展性。
    • 缺点:对于一些需要保持用户状态的应用场景,如购物车、在线游戏等,无状态特性就带来了一些挑战。开发人员需要使用额外的技术来实现状态管理,增加了开发的复杂性。

有连接(持久连接)

  1. 概念与作用

    • 在早期的 HTTP/1.0 版本中,每次 HTTP 请求都需要建立一个新的 TCP 连接,请求完成后立即关闭连接。这种方式效率较低,因为建立和关闭连接需要消耗一定的时间和资源。
    • HTTP/1.1 引入了持久连接(persistent connection)的概念,也称为有连接。客户端和服务器在一次连接中可以发送多个请求和响应,避免了频繁地建立和关闭连接,提高了传输效率。
  2. 连接管理

    • 持久连接可以通过设置 HTTP 请求头中的 “Connection: keep-alive” 来启用。服务器在响应中也可以设置相应的头信息来表示是否支持持久连接。
    • 当持久连接建立后,客户端可以在一段时间内继续发送请求,直到连接被关闭。连接的关闭可以由客户端或服务器发起,通常是在一段时间内没有活动后自动关闭。

短连接

  1. 含义与特点

    • 短连接是相对于长连接而言的。在 HTTP 中,短连接指的是每次请求都建立一个新的连接,请求完成后立即关闭连接。
    • 例如,当用户在浏览器中访问一个网页时,浏览器会向服务器发送一个 HTTP 请求,服务器返回响应后,连接就会关闭。如果用户再次访问该网页或其他页面,浏览器会再次建立一个新的连接。
  2. 适用场景与影响

    • 短连接适用于一些请求次数较少、数据量较小的场景。例如,一些简单的静态网页的访问,或者偶尔的 API 请求。
    • 短连接的缺点是每次请求都需要建立和关闭连接,会消耗一定的时间和资源,尤其是在高并发的情况下,可能会对服务器性能造成一定的压力。

 tomcat负载均衡实现

都在172.25.254.128上

 使用不同的浏览器

 七、Memcached

Memcached简介

Memcached 是一个高性能的分布式内存对象缓存系统,主要用于加速动态 Web 应用程序,减轻数据库负载。

主要功能

  1. 缓存数据

    • Memcached 将经常访问的数据存储在内存中,以便快速访问。当应用程序需要访问这些数据时,首先在 Memcached 中查找,如果找到,则直接返回,避免了从较慢的数据库或其他存储系统中读取数据的时间开销。
    • 可以缓存各种类型的数据,如字符串、整数、列表、哈希表等。
  2. 分布式架构

    • Memcached 可以在多个服务器上运行,形成一个分布式的缓存集群。客户端可以连接到任意一个 Memcached 服务器,并且可以自动在多个服务器之间进行数据的分布和负载均衡。
    • 分布式架构提高了系统的可扩展性和可靠性。可以根据需要添加更多的服务器来增加缓存容量,并且当某个服务器出现故障时,其他服务器可以继续提供服务。
  3. 过期机制

    • Memcached 支持为缓存的数据设置过期时间。当数据超过设定的过期时间后,会自动从缓存中删除,以确保缓存中的数据始终是最新的。
    • 过期机制可以有效地管理缓存空间,避免缓存数据无限增长。

工作原理

  1. 客户端请求

    • 当应用程序需要访问数据时,首先向 Memcached 发送一个请求,请求中包含要访问的数据的键。
    • Memcached 根据键在内存中查找相应的数据。如果找到,则将数据返回给客户端;如果没有找到,则客户端需要从其他数据源(如数据库)中获取数据,并将其存储到 Memcached 中,以便下次访问时可以直接从缓存中获取。
  2. 数据存储和更新

    • 当客户端需要存储数据到 Memcached 中时,它会发送一个存储请求,请求中包含要存储的数据的键和值。
    • Memcached 根据键将数据存储在内存中。如果键已经存在,则会覆盖原来的数据。
    • 当数据被更新时,客户端可以发送一个更新请求,请求中包含新的数据值和键。Memcached 会根据键找到相应的数据,并将其更新为新的值。
  3. 分布式算法

    • Memcached 使用一致性哈希算法来在多个服务器之间分布数据。一致性哈希算法可以确保在添加或删除服务器时,只有部分数据需要重新分布,从而减少了数据迁移的开销。

优势

  1. 高性能

    • 由于数据存储在内存中,Memcached 可以提供非常高的读写性能。访问缓存中的数据通常比从数据库中读取数据快几个数量级。
    • 可以大大减少应用程序的响应时间,提高用户体验。
  2. 减轻数据库负载

    • 通过缓存经常访问的数据,Memcached 可以减少对数据库的访问次数,从而减轻数据库的负载。这对于高并发的 Web 应用程序非常重要,可以避免数据库成为性能瓶颈。
    • 可以提高数据库的可用性和稳定性,减少数据库故障的风险。
  3. 简单易用

    • Memcached 的 API 非常简单,易于使用。客户端可以使用多种编程语言的库来连接和操作 Memcached。
    • 不需要进行复杂的配置和管理,只需要启动服务器并在应用程序中进行简单的配置即可使用。

应用场景

  1. Web 应用程序

    • 缓存动态生成的网页内容、用户会话数据、数据库查询结果等,提高网页的加载速度和响应时间。
    • 减轻数据库负载,提高 Web 应用程序的性能和可扩展性。
  2. 分布式系统

    • 在分布式系统中,Memcached 可以作为一个共享的缓存层,用于存储和共享经常访问的数据。
    • 可以提高分布式系统的性能和可靠性,减少数据传输和同步的开销。
  3. 移动应用程序

    • 缓存移动应用程序中的数据,如用户配置、离线数据等,提高应用程序的响应速度和可用性。
    • 减少对网络的依赖,提高用户体验。

 memcached的安装与启动

 两台tomcat服务器都需操作

 [root@tomcat-node1 ~]# systemctl enable memcached --now

 [root@tomcat-node1 ~]# systemctl enable memcached --now

memcached 操作命令

五种基本 memcached 命令执行最简单的操作。这些命令和操作包括:
set
add
replace
get
delete
# 前三个命令是用于操作存储在 memcached 中的键值对的标准修改命令 , 都使用如下所示的语法:
command <key> <flags> <expiration time> <bytes>
<value>
# 参数说明如下:
command set/add/replace
key key 用于查找缓存值
flags 可以包括键值对的整型参数,客户机使用它存储关于键值对的额外信息
expiration time 在缓存中保存键值对的时间长度(以秒为单位, 0 表示永远)
bytes 在缓存中存储的字节数
value 存储的值(始终位于第二行)
# 增加 key ,过期时间为秒, bytes 为存储数据的字节数
add key flags exptime bytes

 举个例子

[root@tomcat-node1 ~]#telnet localhost 11211
Trying ::1...
Connected to localhost.
Escape character is '^]'.
# 增加
add leekey 0 60 4 #0 是否压缩 60 过期时间 4 字长
test
STORED
add leekey1 0 60 3
lee
STORED
# 查看
get leekey
VALUE leekey 0 4
test
get leekey1
VALUE leekey1 0 3
lee
#
set leekey 0 60 5
test1
STORED
get leekey
VALUE leekey 0 5
test1
END
add leekey1 0 60 4
test
# 删除
delete leekey
DELETED
get leekey
END

 八、session 共享服务器

 msm 介绍

msm memcached session manager )提供将 Tomcat session 保持到 memcached 可以实现高可用。

安装

 上传需要的jar包并拷贝到/usr/local/tomcat/lib/

修改tomcat配置

两台tomcat服务器都需操作

 [root@tomcat-node1 ~]# vim /usr/local/tomcat/conf/context.xml

提供nginx服务的配置文件

测试

把172.25.254.128上的tomcat服务停掉

再启动

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.coloradmin.cn/o/2060404.html

如若内容造成侵权/违法违规/事实不符,请联系多彩编程网进行投诉反馈,一经查实,立即删除!

相关文章

【数学建模】优化模型——两辆平板车装货问题

问题描述 包装箱规格&#xff1a;共有七种规格的包装箱&#xff0c;每种包装箱的厚度&#xff08;t&#xff09;和重量&#xff08;w&#xff09;不同。表中列出了每种包装箱的厚度、重量及数量。 平板车限制&#xff1a; 每辆平板车的可用装载长度为10.2米&#xff08;1020厘…

《QT从基础到进阶·七十三》Qt+C++开发一个python编译器,能够编写,运行python程序

1、概述 源码放在文章末尾 该项目利用QtC实现了一个简易的python编译器&#xff0c;类似pycharm或vsCode这样的编译器&#xff0c;该python编译器支持如下功能&#xff1a; &#xff08;1&#xff09;支持编写python程序 &#xff08;2&#xff09;编写代码时有代码补全提示 &…

写给大数据开发:如何优化临时数据查询流程

你是否曾因为频繁的临时数据查询请求而感到烦恼&#xff1f;这些看似简单的任务是否正在蚕食你的宝贵时间&#xff0c;影响你的主要工作&#xff1f;如果是&#xff0c;那么这篇文章正是为你而写。 目录 引言&#xff1a;数据开发者的困境问题剖析&#xff1a;临时数据查询的…

MKS电源GMW-25RF Plasma Generator手侧

MKS电源GMW-25RF Plasma Generator手侧

C语言基础(八)

1、标准库函数&#xff1a; 测试代码1&#xff1a; #include <stdio.h> // 标准库函数头文件导入 // 自定义函数 int add(int a, int b) { return a b; } // 声明回调函数类型 typedef void (*Callback)(int); // 调用回调函数的函数 void process(Callb…

网络编程第三天

服务器&#xff1a; #include<sys/types.h> // 支持套接字地址结构 #include <sys/socket.h> // 提供套接字API #include <netinet/in.h> // 定义IP地址结构体 #include <string.h> // 提供字符串操作函数 #include <stdio.h> // 提供标准I/O操…

宠物空气净化器哪款能吸毛?希喂、米家宠物空气净化器测评分享

养猫最令人困扰的&#xff0c;就是掉毛与难以彻底消除的异味&#xff0c;这两个问题就成了养猫生活中的一大挑战。每当换季或是猫咪自我梳理时&#xff0c;家中便被一层细腻的绒毛覆盖&#xff0c;从地板到沙发&#xff0c;从床单到衣物&#xff0c;甚至是空气中都漂浮着细小的…

Dockerfile中CMD和ENTRYPOINT区别以及结合使用

1. 简述 在Dockerfile中,CMD和ENTRYPOINT都是用于指定容器启动时要运行的命令,但它们在使用方式和目的上有所不同。 下面将分别解释这两个指令的含义,并通过示例说明它们之间的区别,以及常见的结合使用案例。 Dockerfile制作镜像流程图: 2. CMD CMD指令用于指定容器启…

RocketMQ环境搭建(宝塔)

文章目录 1.介绍2.RocketMQ介绍1.官网2.基础概念3.组件架构 3.安装1.安装宝塔面板1.更新系统2.安装宝塔面板3.开放33142端口 2.创建存放软件的文件夹3.将软件上传到soft目录下4.安装unzip5.进入目录解压软件6.进入bin目录7.修改两个sh文件配置内存小一点8.在/usr/local/soft/ro…

Maven-08.依赖管理-生命周期

一.生命周期 Maven中的生命周期就是描述一次maven项目构建要经历那些阶段。包含clean&#xff0c;default和site三个。这三个生命周期时相互独立的。所谓相互独立&#xff0c;就是每套生命周期中的阶段互不干扰。 阶段是生命周期中最细化的操作。我们重点关注5个阶段&#xf…

教你学习企业高性能web服务器-nginx

一、web服务介绍 1、Apache的三种模型 &#xff08;1&#xff09;Apache prefork 预派生模式&#xff0c;有一个主控制进程&#xff0c;然后生成多个子进程&#xff0c;使用select模型&#xff0c;最大并发1024每个子进程有一个独立的线程响应用户请求相对比较占用内存&…

笔记(day24)正则表达式

一、正则表达式 1.1 概述 正则表达式定义了字符串的匹配模式,可以用来进行搜索,编辑,或处理文本 并不仅限于某一种语言,但是在每种语言中有细微的差别 1 数据校验、格式校验 2 数据提取 1.2 语法 元字符描述\将下一个字符标记符、或一个向后引用、或一个八进制转义符。例如&a…

专题---自底向上的计算机网络(数据链路层)

目录 计算机网络概述 物理层 数据链路层 网络层 传输层 应用层 网络安全

pinctl 和 gpio子系统驱动

一.设备树中添加pinctl节点模板 1.创建对应的节点 同一个外设的 PIN 都放到一个节点里面&#xff0c;打开 imx6ull-14x14-evk.dts&#xff0c;在 iomuxc 节点 中的“imx6ul-evk”子节点下添加 “pinctrl_test” 节点。添加完成以后如下所示&#xff1a; pinctrl_test:test_g…

8.21Qt作业

运用网络通信&#xff0c;实现简单聊天室 客户端主要代码 #include "widget.h" #include "ui_widget.h"Widget::Widget(QWidget *parent): QWidget(parent), ui(new Ui::Widget), socket(new QTcpSocket(this)) {ui->setupUi(this);//初始化界面ui-&g…

Postman之Newman命令以及常用参数

Newman介绍 Postman是专为接口测试而生&#xff0c;而Newman是专为Postman而生。因为服务器一般都是Linux系统&#xff0c;而前文提到的操作都离不开Postman的客户端&#xff0c;为解决这个问题&#xff0c;谷歌公司引入了 Newman工具。Newman是Postman的命令行&#xff0c;是…

STM32——I2C通信外设

软件只需要CR控制寄存器&#xff0c;DR数据寄存器&#xff0c;为实时监控状态&#xff0c;软件需要读取SR状态寄存器&#xff0c;好比&#xff1a;开车时CR是控制汽车方向&#xff0c;踩油门等&#xff0c;SR是仪表盘。 由于I2C是半双工&#xff0c;因此发送和接收数据都是在移…

又一家光伏企业终止,行业产能过剩竞争激烈,毛利率极低

一道新能终止原因如下&#xff1a;首先&#xff0c;一道新能从事光伏单晶电池和单晶组件业务&#xff0c;该行业竞争激烈&#xff0c;目前已经出现了产能过剩&#xff0c;甚至负毛利率的情况&#xff1b;其次&#xff0c;报告期内&#xff0c;一道新能营收高达227亿&#xff0c…

DC-DC 转换器中的压电谐振器:当前状态和限制

在小体积和高频下提高功率密度并减小电感器和变压器的尺寸是DC-DC转换器设计中的一大挑战。为了克服这些困难&#xff0c;压电谐振器&#xff08;PR&#xff09;通过利用潜在的压电效应&#xff0c;以振动模式而不是电模式存储能量。 即使 PR 的使用在效率和功率密度方面改进了…

关于开源许可协议

开源许可协议 引用开源代码之后是否可以保留知识产权&#xff0c;针对不同的开源协议要进行开源扫描。基于BSD、MIT和Apache三种是可以闭源。但是基于GPL、LGPL和Mozilla的开源方案必须同步开源。