——————————目录大纲——————————
一、名词解释
AEM:AEM是Adobe公司所出的商业内容管理系统,全称Adobe体验管理系统(Adobe Experience Manager),其前身叫CQ,分别有CQ5 CQ6两个大版本。它提供了整套的网站内容管理系统解决方案,是一个企业级的重型系统。
RDBMS(Relational Database Management System):关系数据库管理系统
JCR(Java Content Repository): Java内容存储库,是一个内容仓库规范,定义了如何以结构化和分层的方式存储内容数据,适用于内容管理系统(CMS)和文档管理系统等
CRXDE(Content Repository eXtreme Development Environment):是 AEM 自带的一个Web-based JCR 浏览与编辑工具,AEM 的 JCR 编辑器 + 文件管理器 + 简易开发环境,是开发调试 AEM 项目的神器,AEM所有的东西,从资源到数据,页面,这些东西都是用JCR存的。(该界面Prod没有,只存在QA、DEV、Local环境中)
HTL: HTML 模板语言,HTL 表达式通过 ${ 和 } 字符进行分隔
SSI(Server Side Include):服务器端网页模板引用机制,通常在服务端侧完成请求调用后,允许你在 HTML 页面中插入动态内容
ESI(Edge Side Include):是一种网页内容组装技术,主要用于缓存系统(如CDN、反向代理服务器)中,以提高网页加载效率和可维护性,它允许你将一个网页拆成多个小部分,在边缘(Edge)服务器上动态地拼接它们,而不是由源服务器来完成整个页面渲染
SDI(Sling Dynamic Include):AEM中用来解析SSI和ESI的框架,是 AEM(Adobe Experience Manager) 特有的一种服务端动态内容拼接机制,基于Apache Sling
>>>>>>>>>更多详细内容请参考:AEM名词说明大全 <<<<<<<<<<<<
二、技术栈
2.1 AEM 结构
根据下图,从下而上一次进行分析

2.1.1 OSGi (Apache Felix)
在 AEM 体系结构堆栈中,最重要组件之一是 - OSGi Java 容器,该容器用于模块式开发,以模型、组件和服务的形式提供各种功能;
OSGi 是 AEM - 技术堆栈中的基本元素,OSGi技术是一组规范,它定义了Java的动态组件系统,这些规范实现了一种开发模型,其中应用程序由多个组件打包而成,这些组件可以在本地或通过服务跨网络进行交流,OSGi技术成功的关键原因是提供了非常成熟的组件系统,其系统适用于大量的环境,实际上OSGi组件系统用于构建如Eclipse ID - 高度复杂的应用程序和应用服务器,如GlassFish、IBM WebSphere、JBoss,它还用于创建应用程序框架和工业自动化等,OSGi 是 AEM - 中重要的技术栈之一,它支持捆绑包的模块化部署,它是 AEM 堆栈中的基本层,用于控制 AEM 的组合捆绑包以及配置应用程序以更小的、可重复使用的、可协助的组件构建而成。
CQ5 内建了基于OSGI R4 服务平台(OSGi Service Platform Release 4) 的应用程序框架。
- 是一个针对
JAVA的动态模块系统- 发展自通用中间键。很多第三方的组件可以以bundle的形式进行复用
- OSGI的bundle可以包含经编译后的JAVA代码,脚本,或者内容。这些均可根据需要将其加载到相应的仓库,或者对其进行配置等等。


2.1.2 JCR 存储层
JCR 储存库,即存储层,Author编写或编辑的内容都会整理在此存储库中,JCR 存储库采用分层结构;
JCR 为我们提供了 Java 和 JavaScript 的 API,提供了稳定的API,该存储库提供结合了文件系统和DB管理系统的优势,具有事务、查询、结构化、二进制、权限、版本控制、全文检索等功能


JCR是一个包含项目的树形结构,共有两个项目,一个是node节点,提供了结构,第二个是属性,用于存储数据。

综上所述,JCR 是一个层次结构,数据以节点和属性的形式存储其中,此 JCR 包含 RDBMS 和文件系统的功能


2.1.3 Apache Sling 框架
JCR存储层的上面,是 Web 应用程序框架 - Apache Sling,这是一个基于 REST - 的 Web 应用程序框架,它有助于使用和展示JCR 存储库中的内容并与OSGi Java - 容器交互使用;
Apache Sling 是一个以内容为中心的网络框架。其使用Java的内容仓库去存储与管理内容,比如Apache Jackrabbit 和 CRX。
- 基于
REST原则,以内容为导向进行开发- 与
CQ5(或者说AEM5, 6)天然集成- 用于处理
HTTP的渲染与数据存储的请求。这是一种新的方式,它将在后台将内容组装,渲染最终将其呈现给用户- 能将内容对象与处理数据的组成映射起来
- 支持服务端与
AJAX请求- 支持多种脚本语言(比如,JSP, ESP, Ruby等)
- 注 http://incubator.apache.org/projects/sling.html 查看更多关于
Sling的信息
Apache Sling URL解析过程:

2.1.4 AEM应用层
最后一层是 AEM - 应用程序层,adobe优化了各种功能,如网站、表单和资产:

Adobe Experience Manager Platform是用技术堆栈创建而成的,它具有一些传统模块,如用户界面、用于安全的模块、日志记录框架的模块、拓扑管理和业务流程管理,通过标准化接口,以便功能与所有服务交互使用。
AEM Platform - 包括各种开源元素,如 OSGi - Application Runtime Web 应用程序框架—— Apache Sling。该 Platform - 还包括一些专有组件,如可提供用户界面的 - Granite和 Coral UI 框架,它还提供了一个工作流引擎有助于创建工作流程,以便于管理项目中的多个步骤或业务流程,另外一个专有组件是翻译或本地化或国际化增强功能,另一个专有组件是资产 - 和资产元数据支持,其广泛应用于 AEM 中,还有一个专有组件提供经验丰富的云支持、流程卸载、SAML、oAuth - 和其他各种安全性增强功能

2.2 不同Instance的区别
Author:AEM层,用于创建、上传和编辑内容以及管理网站。一旦内容准备就绪,就会将其发布到发布层。
Publish:向公众提供已发布内容的AEM层。

Auther层:

Publish层:

三、系统概况
整体访问流程:

缓存存取逻辑:

3.1 环境

| 环境 | 描述 | Author地址 | Author实例数量 | Publish地址 | Publish实例数量 | Preview地址 | Flash域名 |
|---|---|---|---|---|---|---|---|
| Prod | 生产环境 | https://author-p44761-e210970.adobeaemcloud.com/ | https://publish-p44761-e210970.adobeaemcloud.com/ | https://preview-p44761-e210970.adobeaemcloud.com/ | www.lenovo.com | ||
| Stage | 预生产环境 | https://author-p44761-e210971.adobeaemcloud.com/ | 2 | https://publish-p44761-e210971.adobeaemcloud.com/ | 3 | https://preview-p44761-e210971.adobeaemcloud.com/ | pre-www.lenovo.com preap-www.lenovo.com(AP) |
| QA | 测试环境 | https://author-p44761-e196278.adobeaemcloud.com/ | 2 | https://publish-p44761-e196278.adobeaemcloud.com/ | 2 | https://preview-p44761-e196278.adobeaemcloud.com/ | uat-www.lenovo.com uatap-www.lenovo.com(AP) |
| DEV | 开发环境 | https://author-p44761-e196277.adobeaemcloud.com/ | 2 | https://publish-p44761-e196277.adobeaemcloud.com/ | 2 | https://preview-p44761-e196277.adobeaemcloud.com/ | www.gl.lenovouat.com sit-www.lenovo.com(Flash 2.0) |