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

【藏经阁一起读】(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.mzph.cn/news/180778.shtml

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

相关文章

重生奇迹MU魔法师操作技能

重生奇迹MU魔法师增加伤害加点方式 一、智力敏捷加点:2点智力1点敏捷,这种加点就是智敏结合的加点了,属性是不错的,提升了非常多的属性点,智力是偏重输出的,也是法师最常见的一种加点了,输出伤…

随笔(持续更新)

随笔(持续更新) 1、某个网络有没有连通 要获取某个网站的ip地址,可以通过ping它的域名就可以得到IP地址 例如:我想获取百度的ip地址(Windows环境) C:\Users\tq>ping www.baidu.com正在 Ping www.a.s…

pdf文件编辑,[增删改查]

pdf文件是投标文件中必不可少的格式,传统的方式先编辑word格式,最后生成pdf,但是有时候需要直接编辑pdf文件,编辑pdf的工具无疑 “adobe acrobat dc”是最好用的之一了 1.把图片文件添加到pdf指定位置,例如把一张图片添…

C++数据结构:图

目录 一. 图的基本概念 二. 图的存储结构 2.1 邻接矩阵 2.2 邻接表 三. 图的遍历 3.1 广度优先遍历 3.2 深度优先遍历 四. 最小生成树 4.1 最小生成树获取策略 4.2 Kruskal算法 4.3 Prim算法 五. 最短路径问题 5.1 Dijkstra算法 5.2 Bellman-Ford算法 5.3 Floyd-…

HCIP-十二、BGP常用属性

十二、BGP常用属性 实验拓扑实验需求及解法1.IP 地址已配置,自行测试直连。2.AS100 中运行 OSPF3.AS200 中运行 ISIS4.运行 BGP5.发布 BGP 路由6.修改起源属性 Origin7.修改 AS-path8.修改本地优先 Local-preference9.修改 MED 实验拓扑 实验需求及解法 本实验模拟…

【算法】滑动窗口题单——1.定长滑动窗口⭐

文章目录 1456. 定长子串中元音的最大数目2269. 找到一个数字的 K 美丽值1984. 学生分数的最小差值(排序)643. 子数组最大平均数 I1343. 大小为 K 且平均值大于等于阈值的子数组数目2090. 半径为 k 的子数组平均值2379. 得到 K 个黑块的最少涂色次数1052…

CCFCSP试题编号:202109-2试题名称:非零段划分

用差分法 #include<iostream> #include<algorithm> #include<cstring> using namespace std;const int N 500000; const int M 10000; int a[N 2 ] { 0 }; int d[M 1] { 0 };int main() {int n;cin >> n;for (int i 1; i < n; i){cin >&g…

YOLOv5独家原创改进:自研独家创新MSAM注意力,通道注意力升级,魔改CBAM

&#x1f4a1;&#x1f4a1;&#x1f4a1;本文自研创新改进&#xff1a;MSAM&#xff08;CBAM升级版&#xff09;&#xff1a;通道注意力具备多尺度性能&#xff0c;多分支深度卷积更好的提取多尺度特征&#xff0c;最后高效结合空间注意力 1&#xff09;作为注意力MSAM使用&am…

迷你洗衣机哪个牌子好又实惠?口碑最好的小型洗衣机

不得不说洗衣机的发明解放了我们的双手&#xff0c;而我们从小到大就有这个意识&#xff0c;贴身衣物不可以和普通的衣服一起丢进去洗衣机一起&#xff0c;而内衣裤上不仅有肉眼看见的污渍还有手上根本无法消灭的细菌&#xff0c;但是有一款专门可以将衣物上的细菌杀除的内衣洗…

基于单片机环境监测温湿度PM2.5系统设计

**单片机设计介绍&#xff0c;基于单片机环境监测温湿度PM2.5系统设计 文章目录 一 概要二、功能设计设计思路 三、 软件设计原理图 五、 程序六、 文章目录 一 概要 设计一个基于单片机环境监测温湿度PM2.5的系统是一个非常有意义的项目。以下是一个基本的介绍&#xff1a; …

GAN:DCGAN-深度卷积生成对抗网络

论文&#xff1a;https://arxiv.org/pdf/1511.06434.pdf 发表&#xff1a;ICLR 2016 一、架构创新 1&#xff1a;全卷积网络&#xff1a;用逐步卷积代替确定性的空间池化函数&#xff08;如maxpooling&#xff09;&#xff0c;使网络学习自己的空间下采样。使用这种方法&#…

RFID资产管理系统全功能详解!高效管理从这里开始!

在现代商业环境中&#xff0c;RFID资产管理系统正成为企业管理不可或缺的先进工具。现代企业管理正处于数字化的浪潮中&#xff0c;而RFID资产管理系统正是这场浪潮中的一颗璀璨明珠。在这篇文章中&#xff0c;我们将全方位解析RFID资产管理系统的功能&#xff0c;助您深入了解…

Axios 并发请求指南 - 3 种简单实用的方法

在实际开发中&#xff0c;我们经常需要同时发送多个请求&#xff0c;并在所有请求完成后进行处理&#xff0c;这就是所谓的并发请求。实现 Axios 并发请求的关键是使用 Axios.all 方法&#xff0c;它接受一个 Promise 的数组作为参数&#xff0c;当这些 Promise 都 resolve 时&…

GOAT:多模态、终身学习、平台无关的机器人通用导航系统

机器人应用中涉及到的核心技术包括&#xff1a;环境感知与理解、实时定位与建图、路径规划、行为控制等。GOAT通过多模态结合终生学习的方式让你的机器人可以在未知环境中搜索和导航到任何物体。小白也可以零门槛上手。 项目地址&#xff1a;https://theophilegervet.github.i…

【开题报告】基于卷积神经网络的图像脑部MRI图像分割

论文题目 基于卷积神经网络的图像脑部MRI图像分割 一、选题意义 1.课题研究的目的和意义 1.1选题目的 脑部疾病是高致残致死率的疾病之一&#xff0c;对人们的生活质量和生命安全都有着十分重大的影响&#xff0c;所以各个国家都开始对脑部疾病的研究重视起来。帕金森、脑胶质…

最新AIGC创作系统ChatGPT系统源码+DALL-E3文生图+图片上传对话识图/支持OpenAI-GPT全模型+国内AI全模型

一、AI创作系统 SparkAi创作系统是基于ChatGPT进行开发的Ai智能问答系统和Midjourney绘画系统&#xff0c;支持OpenAI-GPT全模型国内AI全模型。本期针对源码系统整体测试下来非常完美&#xff0c;可以说SparkAi是目前国内一款的ChatGPT对接OpenAI软件系统。那么如何搭建部署AI…

使用 Nginx Ingress 快速实现 URL 重写

什么是URL重写 URL重写&#xff08;URL rewriting&#xff09;是一种在Web服务器上修改或转换请求URL的过程。它通常涉及使用服务器配置或规则来更改传入的URL&#xff0c;以便在不改变实际请求资源的情况下&#xff0c;实现不同的行为&#xff0c;如重定向、路径映射、参数处…

如何用眼精星票证识别系统识别名片?

近年来&#xff0c;随着信息化技术的不断发展&#xff0c;越来越多的人开始使用电子名片来进行商务交流和信息传递。然而&#xff0c;如何将纸质名片转化为电子名片并结构化数据&#xff0c;却一直是许多人的难题。本文将介绍一种使用眼精星票证识别系统的方法&#xff0c;将纸…

应用在智能手环距离检测领域的数字红外接近检测模块

智能手环是现代人日常生活中的一种智能配件&#xff0c;可以帮助我们记录运动数据、监测身体健康状况等。然而&#xff0c;对于许多用户来说&#xff0c;关注的问题之一就是智能手环的有效距离和精准度。智能手环通过内置传感器收集数据并将其发送到手机或其他设备上进行处理。…

第二十章多线程

线程简介 java语言提供了并发机制&#xff0c;程序员可以在程序中执行多个线程&#xff0c;每一个线程完成一个功能&#xff0c;并与其他线程并发运行。 一个进程是一个包含有自身地址的程序&#xff0c;每个独立执行的程序都称为进程。也就是说每个正在执行的程序都是一个进…