【藏经阁一起读】(78)__《Apache Tomcat 的云原生演进》

news2024/9/22 0:57:11

【藏经阁一起读】(78)

__《Apache Tomcat 的云原生演进》

目录

__《Apache Tomcat 的云原生演进》

一、读后感

二、文章知识点摘要

2.1、Tomcat的技术内幕和在喜马拉雅的实践

2.2、GraalVM static compilation in web container application(Web容器应用程序中的GraalVM静态编译)

2.3、威胁建模

2.4、Apache Sling


技术作品介绍

CoC Asia 2023(原ApacheCon) WebServer/Tomcat 专题分享实录电子书旨在全面介绍 Apache Tomcat 的前世今生,我们将探索 Apache Tomcat 的技术内幕,并分享在喜马拉雅中实践的经验,也将介绍在下一个云原生时代 Tomcat 的新形态,探索在 GraalVM 静态编译在 Web 容器应用中的使用实践等。

作者: 彭荣新 饶子昊 李晗 陈承 吕梦超 Dennis Jacob Robert Munteanu
发布时间:2023-11-02
章节数:8

文章目录:

1、Tomcat的技术内幕和在喜马拉雅的实践

2、GraalVM static compilation in web container application(Web容器应用程序中的GraalVM静态编译)

3、How to participate in Tomcat community(如何参与 Tomcat 社区)

4、Web 容器可观测最佳实践

5、Dubbo Echo System-Dubbo Go Pixiu
6、Securing Apache Tomcat(保护 Apache Tomcat)

 7、nSecure By Default Web Applications Apache Sling-Robert Munteanu(默认安全 Web 应用程序 Apache Sling-Robert Munteanu)

一、读后感

  Tomcat 是一个非常完整、完善、功能非常强大的开源项目。我们每个人开始做开发,接触的第一个项目可能就是 Tomcat。在应用服务器的发展历程中,Apache Tomcat 在其中扮演着极其重要的角色。从最初的 WebLogic 到 Jboss , 到Tomcat/Jetty , 再 到 现 在 Spring Boot 使 用 的 嵌 入式 Tomcat,我们见证了应用服务器从封闭到开源,逐步轻量化的演变过程。

  文章中,威胁建模部分的分析提醒我们注意,在云原生时代,针对Tomcat的威胁建模需要结合具体的云环境和应用场景进行分析和评估,综合采取多种防护手段,以确保应用程序的安全性和稳定性。

  在云原生时代,威胁建模是指对云原生环境中的威胁进行建模和评估,以便确定可能的威胁来源、攻击方式和影响程度,并采取相应措施进行预防和应对。这是云原生安全的重要组成部分,因为云原生环境具有高度动态性和复杂性,而传统安全防护手段已经不能完全适应。

  Tomcat是一个开源的Web应用服务器,常用于Java应用程序的部署和运行。由于Tomcat具有广泛的使用和部署,因此也成为了攻击者针对Web应用程序的目标之一。

  不同公司有不同企业文化,在威胁建模应用上面的要求和部署也大不相同。一些企业可能因为在功能设计上的一个缺陷,后期维护运营时需要花上数百倍费用来修补,当然需要在设计阶段更多下功夫。在云原生时代,威胁建模对各个流程环节的细化把控,应用的级别,也会有理念上的冲突,需要全局权衡来看待里面的安全风险和解决方案。

二、文章知识点摘要

2.1、Tomcat的技术内幕和在喜马拉雅的实践

  主要对 Tomcat 的网络 io,线程模型,内存模型,类加载机器,以及对像池技术做了一个介绍

  作者通过在喜马拉雅的实践,总结出了以下几点经验:

  NIO 模型主要分为三个部分 Accept 线程,Poller 线程,Catalina work 线

  NIO2和 NIO区别比较图:

  那么到底怎么选呢?

  作者在文章中给出了建议:

  Tomcat 9 和 10 默认的还是 NIO。通过官方的配置我们也能看得出来,它建议的还是 NIO。
  虽然切换次数减少了,系统调用次数减少,系统的切换减少了。但是性能在我们平时功能可能感觉不到,所以对于稳定还是 NIO 这种模式。

2.2、GraalVM static compilation in web container application(Web容器应用程序中的GraalVM静态编译)

  从这张图我们可以看到,一个 Java 应用从启动到运行到性能的峰值,中间还是会经过一个比较长的时间,包括虚拟机初始化、应用初始化、应用预热等等过程。这就是 Java 应用/Java Web 应用启动比较耗时的原因。

  解释执行编译的过程,Java 程序它是解释执行,它在解释的过程中会把我们的代码全部逐步地加载到内存中,因为它不知道哪一块代码需要,哪一块不需要,所以实际加载的代码会比实际要执行的代码要多很多。这个就是应用在运行过程中的额外的内存开销。

  解决办法是静态编译技术

  上图右侧是微服务的框架,在适配了静态编译之后,展示了在启动速度、运行时、内存占用方面的表现,可以看到提升还是非常大的。

  任何技术都有两面性,静态编译也是一样。它虽然有很多优势,但也存在着一些不足。

  • 它让动态特性使用起来比较麻烦,
  • 如果它把某些代码误识别为不需要执行了,这些代码就不会包含在可执行文件里了。因此就会使运行过程出现问题。

  解决这个问题的方法是,动态特性可以通过配置文件,把程序里的动态特性做一些标注。在静态编译的时候,它会把配置文件里相关的类编译进去。

  GraalVM 提供了native-image-agent 的工具,也就是在静态编译之前,我们预执行一下,这样它就可以把应用程序中所有和动态特性的内容都扫描出来了,然后把它记录在配置文件里。等到静态编译的时候,它就会把相关的东西都包含进去,这样就解决了代码里面动态特性可能会被误识别的问题。

静态编译助力 Java Web 容器云原生

  作者测试的一些比较复杂的 demo,可以看到不光是简单的应用,复杂的应用通过静态编译之后,它的启动时间、运行时内存占用也都有非常明显的改善。

2.3、威胁建模

  在信息安全领域,很重要的三个基本要素是CIA——

  • 机密性(Confidentiality):保护信息免向未授权的人披露
  • 一致性(Integrity):保护信息免受未授权的人更改
  • 可用性(Availability):让信息供已授权的人需要时可取用

  当我们谈论安全时,我们会想到三个支柱或者想要达到的三个理想状态,它们是保密性、完整性和可用性。

  STRIDE 模型是为您的应用程序创建威胁模型的有用工具。
  STRIDE 是首字母缩略词,它包含:

  • Spoofing欺骗
  • Tampering篡改
  • Repudiation否认
  • Information disclosure信息披露
  • Denial of service拒绝服务
  • Elevation of privilege特权提升

威胁建模就是这样一种分析和解决问题的结构化方法,用来识别、量化并应对威胁,利用抽象的方法来帮助思考风险。威胁建模允许系统安全人员传达安全漏洞的破坏力,然后定义防范或减轻系统威胁的对策,并按轻重缓急实施补救措施。

2.4、Apache Sling

Apache Sling是一个基于Apache Felix OSGi容器构建的开源Web框架。它旨在通过提供一个 RESTful Web 框架来简化面向内容的 Web 应用程序的开发,该框架将 HTTP 请求 URL 映射到基于 JCR(Java 内容存储库)规范的内容资源。

  Apache Sling提供了一个模块化架构,允许开发人员通过使用OSGi捆绑包来添加功能。这种模块化设计使扩展和定制框架变得容易,以满足特定的项目要求。

  Apache Sling的主要功能之一是能够以各种格式呈现内容,包括HTML、JSON、XML等。这使得开发可供各种客户端(包括移动应用程序、Web 浏览器和其他系统)使用的 Web 应用程序变得容易。

  Apache Sling 是一个基于 Java 开发 web 应用程序的框架。它的主要特征是 RESTful,它组织了你的数据库或者分层结构中的资源。

  现在 Apache Sling 中的一条信息被称为资源,它有一个名字,非常简单的属性,可以是字符串、日期、二进制属性和可选的父属性。

  这基本上就是创建分层所需要做的一切,所以你不需要弄清楚如何创建一致的资源树,你的 API 端点应该是什么,是 /user/articles /comments 等等。你已经创造了资源并将它们填到了树中,就像在数据库中创建条目一样。当然也有一些,您可以从 Apache Sling 中
获得默认表示。所以不需要写 JSON 导出器,默认 XML 等。

  Apache Sling 的特殊之处在于它维护了用户的身份贯穿应用的所有层。这个的意思是,当用户请求使用浏览器或者命令行工具的时候,它自带会话 cookie 或身份验证数据。当它转到 Sling 时,Sling 能够确认用户的身份,然后将“这是 John Doe”,转给内容存储库。

  Apache Sling 的另一个特点是有安全性,即 XSS 保护。这意味着当在模板的脚本中呈现内容时,HTML 模板语言引擎意识到它是在 HTML 上下文中编写的,它会根据上下文自动转义输出。如果是 HTML 标签,它知道该怎么做。同样,如果它是一个属性,它知道该怎么确保内容不脱离边界。

  Apache Sling是一个功能强大的Web框架,可简化以内容为中心的应用程序的开发。它使用 OSGi 和 JCR 技术,以及其模块化架构,使其成为各种 Web 项目的灵活且适应性强的选择。

             推荐阅读:

AIGC 是通向 AGI 的那条路吗?
数字人,虚拟数字人——你看好数字人领域的发展吗?
大数据的关键技术之——大数据采集
[你找到牵手一辈子的人了吗?] 七夕情人节特辑
数字技术能让古籍“活过来”吗?
心情不好时,帮自己训练个AI情绪鼓励师吧(基于PALM 2.0 finetune)
深度学习框架TensorFlow
人工智能开发人员工作流程、看法、工具统计数据
2023 年6月开发者调查统计结果——最流行的技术(2)
2023 年6月开发者调查统计结果——最流行的技术(1)
让Ai帮我们画个粽子,它会画成什么样呢?

9e598365ba5344e282453e71a676a056.jpeg​​​​​

b9b9f2b9374646798ca554110a498cda.jpeg​​​​​

23f61e3eac99458296be0fedea10019e.jpeg​​​​​

给照片换底色(python+opencv)猫十二分类基于大模型的虚拟数字人__虚拟主播实例

bfa502b957c247a7872d7e645d4c6f03.jpeg​​​​​

2f073e39924e42d2b33221f4262dcc1d.jpeg​​​​​

9d7e2b6a00aa45fd82291f0d5f9eea7e.jpeg​​​​​

计算机视觉__基本图像操作(显示、读取、保存)直方图(颜色直方图、灰度直方图)直方图均衡化(调节图像亮度、对比度)

01bfb23f2f894ee0b0164f52e57bbbbc.png​​​​​

47c92d6cf9fe4d279a142480a4340a0d.png​​​​​

1620a2a7b0914c42b3a8254e94269a79.png​​​​​

语音识别实战(python代码)(一)

 人工智能基础篇

 计算机视觉基础__图像特征

93d65dbd09604c4a8ed2c01df0eebc38.png​​​​​

 matplotlib 自带绘图样式效果展示速查(28种,全)

074cd3c255224c5aa21ff18fdc25053c.png​​​​​

Three.js实例详解___旋转的精灵女孩(附完整代码和资源)(一)

fe88b78e78694570bf2d850ce83b1f69.png​​​​​

62e23c3c439f42a1badcd78f02092ed0.png​​​​​

cb4b0d4015404390a7b673a2984d676a.png​​​​​

立体多层玫瑰绘图源码__玫瑰花python 绘图源码集锦

 Python 3D可视化(一)

让你的作品更出色——词云Word Cloud的制作方法(基于python,WordCloud,stylecloud)

e84d6708316941d49a79ddd4f7fe5b27.png​​​​​

938bc5a8bb454a41bfe0d4185da845dc.jpeg​​​​​

0a4256d5e96d4624bdca36433237080b.png​​​​​

 python Format()函数的用法___实例详解(一)(全,例多)___各种格式化替换,format对齐打印

 用代码写出浪漫__合集(python、matplotlib、Matlab、java绘制爱心、玫瑰花、前端特效玫瑰、爱心)

python爱心源代码集锦(18款)

dc8796ddccbf4aec98ac5d3e09001348.jpeg​​​​​

0f09e73712d149ff90f0048a096596c6.png​​​​​

40e8b4631e2b486bab2a4ebb5bc9f410.png​​​​​

 Python中Print()函数的用法___实例详解(全,例多)

 Python函数方法实例详解全集(更新中...)

 《 Python List 列表全实例详解系列(一)》__系列总目录、列表概念

09e08f86f127431cbfdfe395aa2f8bc9.png​​​​​

6d64357a42714dab844bf17483d817c0.png​​​​​

用代码过中秋,python海龟月饼你要不要尝一口?

 python练习题目录

03ed644f9b1d411ba41c59e0a5bdcc61.png​​​​​

daecd7067e7c45abb875fc7a1a469f23.png​​​​​

17b403c4307c4141b8544d02f95ea06c.png​​​​​

草莓熊python turtle绘图(风车版)附源代码

 ​草莓熊python turtle绘图代码(玫瑰花版)附源代码

 ​草莓熊python绘图(春节版,圣诞倒数雪花版)附源代码

4d9032c9cdf54f5f9193e45e4532898c.png​​​​​

c5feeb25880d49c085b808bf4e041c86.png​​​​​

 巴斯光年python turtle绘图__附源代码

皮卡丘python turtle海龟绘图(电力球版)附源代码

80007dbf51944725bf9cf4cfc75c5a13.png​​​​​

1ab685d264ed4ae5b510dc7fbd0d1e55.jpeg​​​​​

1750390dd9da4b39938a23ab447c6fb6.jpeg​​​​​

 Node.js (v19.1.0npm 8.19.3) vue.js安装配置教程(超详细)

 色彩颜色对照表(一)(16进制、RGB、CMYK、HSV、中英文名)

2023年4月多家权威机构____编程语言排行榜__薪酬状况

aa17177aec9b4e5eb19b5d9675302de8.png​​​​​​

38266b5036414624875447abd5311e4d.png​​​​​

6824ba7870344be68efb5c5f4e1dbbcf.png​​​​​

 手机屏幕坏了____怎么把里面的资料导出(18种方法)

【CSDN云IDE】个人使用体验和建议(含超详细操作教程)(python、webGL方向)

 查看jdk安装路径,在windows上实现多个java jdk的共存解决办法,安装java19后终端乱码的解决

1408dd16a76947e4a7eb3c54cd570d95.png​​​​​

vue3 项目搭建教程(基于create-vue,vite,Vite + Vue)

fea225cb9ec14b60b2d1b797dd8278a2.png​​​​​

bba02a1c4617422c9fbccbf5325850d9.png​​​​​

37d6aa3e03e241fa8db72ccdfb8f716b.png​​​​​

2023年春节祝福第二弹——送你一只守护兔,让它温暖每一个你【html5 css3】画会动的小兔子,炫酷充电,字体特

 别具一格,原创唯美浪漫情人节表白专辑,(复制就可用)(html5,css3,svg)表白爱心代码(4套)

SVG实例详解系列(一)(svg概述、位图和矢量图区别(图解)、SVG应用实例)

5d409c8f397a45c986ca2af7b7e725c9.png​​​​​

6176c4061c72430eb100750af6fc4d0e.png​​​​​

1f53fb9c6e8b4482813326affe6a82ff.png​​​​​

【程序人生】卡塔尔世界杯元素python海龟绘图(附源代码),世界杯主题前端特效5个(附源码)HTML+CSS+svg绘制精美彩色闪灯圣诞树,HTML+CSS+Js实时新年时间倒数倒计时(附源代码)

 2023春节祝福系列第一弹(上)(放飞祈福孔明灯,祝福大家身体健康)(附完整源代码及资源免费下载)

fffa2098008b4dc68c00a172f67c538d.png​​​​​

5218ac5338014f389c21bdf1bfa1c599.png​​​​​

c6374d75c29942f2aa577ce9c5c2e12b.png​​​​​

 tomcat11、tomcat10 安装配置(Windows环境)(详细图文)

 Tomcat端口配置(详细)

 Tomcat 启动闪退问题解决集(八大类详细)

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

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

相关文章

windows系统mobaxterm远程执行linux上ssh命令

命令如下 start "" "%~dp0\MobaXterm_Personal_23.4.exe" -newtab "sshpass -p root ssh root192.168.11.92 mkdir 33" -p 是密码 左边是用户名,右边是服务器ip 后面跟的是服务器上执行的命令 第一次执行的时候要设置mobaxt…

海翔云平台 getylist_login.do SQL 注入漏洞复现

0x01 产品简介 海翔云平台一站式整体解决方案提供商,业务涵盖 批发、连锁、零售行业ERP解决方案、wms仓储解决方案、电商、外勤、移动终端(PDA、APP、小程序)解决方案。 0x02 漏洞概述 海翔云平台getylist_login.do接口处存在SQL注入漏洞&am…

《数据结构、算法与应用C++语言描述》-线索二叉树的定义与C++实现

_23Threaded BinaryTree 可编译运行代码见:GIithub::Data-Structures-Algorithms-and-Applications/_24Threaded_BinaryTree 线索二叉树定义 在普通二叉树中,有很多nullptr指针被浪费了,可以将其利用起来。 首先我们要来看看这空指针有多少…

老师怎样预防校园欺凌的发生

作为老师,面对校园欺凌这个问题,我觉得有必要为各位老师提供一些实用的建议和策略。因为大家都知道,校园欺凌的存在不仅会对学生造成身心伤害,还会对整个教育环境产生负面影响。 关注学生的心理健康 校园欺凌往往与学生的心理问题…

手把手教你:基于python+Django的英文数据分析与可视化系统

系列文章 手把手教你:基于Django的新闻文本分类可视化系统(文本分类由bert实现)手把手教你:基于python的文本分类(sklearn-决策树和随机森林实现)手把手教你:基于TensorFlow的语音识别系统 目录…

Java Agent探针技术

前言 Java Agent基于字节码增强技术研发,支持自动埋点完成数据上报,Java Agent包含(并二次分发)opentelemetry-java-instrumentation CNCF的开源代码,遵循Apache License 2.0协议,在Java Agent包中对opentelemetry License进行了…

为什么国密SSL证书越来越受市场青睐

随着信息技术的迅猛发展,网络安全问题备受关注。在这个背景下,越来越多的单位纷纷选择国密SSL证书,以构建更为安全可靠的网络环境。那么,为什么这么多单位选择国密SSL证书呢? 1,国家政策支持 近年来&#…

战略制定|竞争战略管理分析六大常用工具

企业战略可从多个角度理解,体现为著名的5P模型。首先,从未来发展视角看,战略是一种计划(Plan),指导企业朝向既定目标前进。而从过去的发展历程看,它呈现为一种模式(Pattern),反映了企业的历史行为趋势。在产…

【Python】Selenium自动化测试框架

设计思路 本文整理归纳以往的工作中用到的东西,现汇总成基础测试框架提供分享。 框架采用python3 selenium3 PO yaml ddt unittest等技术编写成基础测试框架,能适应日常测试工作需要。 1、使用Page Object模式将页面定位和业务操作分开&#xff0…

uniapp+微信小程序监听返回事件

代码附在最后 适用场景:uniapp开发微信小程序 需求是我点击列表进入数据信息的详情界面,点击详情界面的收藏,返回上一界面后,更新列表中的收藏情况。 目录 一、使用onUnload监听页面卸载 二、使用getCurrentPages()获取当前页…

关于网站的favicon.ico图标的设置需要注意的几点

01-必须在网页的head标签中放上下面的说明&#xff1a; <link rel"shortcut icon" href"/favicon.ico">否则&#xff0c;浏览器虽然能读到图标&#xff0c;但是不会把图标显示在标签上。 02-浏览器会默认到网站根目录中读取文件favicon.ico&#x…

Java线程通信

线程通信 案例 package com.itheima.d4;public class ThreadTest {public static void main(String[] args) {Desk desk new Desk();//创建3个生产者线程new Thread(() -> {while (true) {desk.put();}}, "厨师1").start();new Thread(() -> {while (true) {…

MySQL数据库入门到大牛_基础_18_MySQL8其它新特性(MySQL基础部分最后一章;新特性概述;窗口函数;公用表表达式)

文章目录 1. MySQL8新特性1.1 MySQL8.0 新增特性1.2 MySQL8.0移除的旧特性 2. 新特性1&#xff1a;窗口函数2.1 使用窗口函数前后对比2.2 窗口函数分类2.3 语法结构2.4 分类讲解1. 序号函数2. 分布函数3. 前后函数4. 首尾函数5. 其他函数 2.5 小 结 3. 新特性2&#xff1a;公用…

vsphere系列 :虚拟机配置直通GPU后,启动时出现 模块“DevicePowerOn”打开电源失败 的解决方案

vsphere中的虚拟机配置直通GPU后&#xff0c;启动时出现 模块“DevicePowerOn”打开电源失败 的解决方案 vsphere中的虚拟机配置直通GPU后&#xff0c;启动时出现 模块“DevicePowerOn”打开电源失败 的解决方案1、虚拟机配置GPU直通1、打开虚拟机选项2、点击编辑配置3、添加如…

SpringBoot+VUE3前后端分离-【支付宝支付】

1、支付宝沙箱应用申请 https://open.alipay.com/develop/sandbox/app 打开支付宝沙箱能够看到如下信息&#xff1a; 获取到appid&#xff1b; 2、获取应用私钥以及支付宝公钥 在接口加密方式选择公钥模式启用&#xff0c;根据操作即可获取应用公钥、应用私钥以及支付宝公钥…

别再让假的fiddler教程毒害你了,来看这套最全最新的fiddler全工具讲解

fiddler界面工具栏介绍 添加图片注释&#xff0c;不超过 140 字&#xff08;可选&#xff09; &#xff08;1&#xff09;WinConfig&#xff1a;windows 使用了一种叫做“AppContainer”的隔离技术&#xff0c;使得一些流量无法正常捕获&#xff0c;在 fiddler中点击 WinConfig…

【蓝桥杯选拔赛真题26】C++字符串逆序 第十三届蓝桥杯青少年创意编程大赛C++编程选拔赛真题解析

目录 C/C++字符串逆序 一、题目要求 1、编程实现 2、输入输出 二、算法分析

Web框架与Django路由层

Web框架 一 web框架 Web框架&#xff08;Web framework&#xff09;是一种开发框架&#xff0c;用来支持动态网站、网络应用和网络服务的开发。这大多数的web框架提供了一套开发和部署网站的方式&#xff0c;也为web行为提供了一套通用的方法。web框架已经实现了很多功能&…

11-28渗透

用nmap扫描靶机1进行主机发现 已知靶机1的主机在172.16.17.0/24下 扫描结果如下 根据扫描结果看开启的服务怀疑172.16.17.177是靶机1 浏览器访问172.16.17.177页面得到如下 我们知道织梦cms系统默认管理路径是dede&#xff0c;登陆管理后台可以通过地址172.16.17.177/dede/i…

使用Sui天气预言机获取全球实时天气数据

新的Sui天气预言机为全球1000多个城市的建设者提供天气数据&#xff0c;并作为一个独特的随机数生成器&#xff0c;适用于需要可信赖的随机结果的游戏和投注应用。它由基于Sui的智能合约和一个从OpenWeather API获取天气数据的后端服务组成&#xff0c;任何人都可以将天气数据集…