乐于分享
好东西不私藏

软件架构演化概念及分类

软件架构演化概念及分类

一、概念与本质

  • 软件架构演化:在架构层面对"组件(component)-连接件(connector)-约束(constraint)"的有意识修改(增删改)集合,目标是满足新需求、修复缺陷、优化质量属性或适应运行环境变化。
  • 演化粒度:从原子演化操作(atomic ops)到多个原子组合成的大变更(演化事务/里程碑)。
  • 静态 vs 动态
  • 静态演化:在设计/停机维护窗口完成(重构、版本发布)。
  • 动态演化:在系统仍提供服务下完成(热插拔、灰度、运行时重配置)。
  • 演化的核心矛盾:变更速度 vs 系统稳定性(如何最小化风险同时实现价值是关键)。

二、架构演化涵盖的阶段(全生命周期视角)

演化不是单一动作,而是贯穿从发现需求到上线验收再到持续维护的闭环过程。常见可拆解为以下 6 个阶段--每一步都应产生成果并纳入版本管理。

1. 触发与需求识别(Trigger / Change Detection)

  • 触发源:业务新需求、法律/合规、性能瓶颈、技术债、运维事故、第三方依赖变化等。
  • 产出:变更请求(CR)、Impact 初步说明(为什么要改、预期目标)。
  • 关注点:明确变更动因、优先级与紧急程度;是否可用现有功能变通。

2. 演化分析与建模(Analysis & Modeling)

  • 活动:把变更拆解为原子演化操作(AddModule、AddMessage、DB schema change 等);做静态/动态影响分析。
  • 产出:演化模型(UML/组件图/顺序图)、兼容性评估报告、初步风险评分(D_total)。
  • 关注点:接口兼容性、向后兼容策略、数据迁移复杂度、跨团队依赖。

3. 设计与决策(Design & Decision)

  • 活动:选择技术方案、定义回滚策略、确定交付阶段(灰度/全量)、记录 ADR(Architecture Decision Record)。
  • 产出:详细设计文档、接口契约、迁移计划、测试矩阵、ADR。
  • 关注点:最小可行变更、分段发布方案、数据一致性策略。

4. 实现与集成(Implementation & Integration)

  • 活动:代码开发、服务实现、DB 变更脚本、Feature Flag 集成、CI/CD 配置。
  • 产出:代码变更、迁移脚本、CI/CD pipeline(含测试、灰度规则)、Runbook(操作手册)。
  • 关注点:单元/契约/集成测试覆盖、非功能需求(性能/安全)在开发阶段的验证。

5. 验证与发布(Verification & Release)

  • 活动:灰度/Canary 发布、压力测试、回归测试、观测面板对照、自动化门控。
  • 产出:发布报告(指标对比)、回滚触发条件、最终放量决策。
  • 关注点:监控指标(SLO、错误率、延迟)、用户影响评估、回滚时间窗口。

6. 评估与知识沉淀(Post-Change Evaluation & Knowledge Management)

  • 活动:评估演化效果(是否达成目标)、总结问题、补充文档、更新架构模型与 ADR 状态。
  • 产出:演化评估报告、更新后的架构模型、教训总结(Postmortem)、版本化架构快照。
  • 关注点:把决策理由、失败教训、后续改进项落在文档中,方便后续追溯与审核。

三、演化带来的价值与意义(为什么要做架构演化)

架构演化是投资--正确做能带来长期回报,错误做则会制造技术债与风险。下面把价值拆成业务价值、工程价值与组织价值。

1. 业务价值

  • 快速响应市场/需求:更短的从需求到交付周期(time-to-market)。
  • 支撑新业务场景:例如支持高并发、国际化、合规性功能。
  • 降低业务中断风险:通过灰度/容错模式减少变更带来的用户影响。

2. 工程价值

  • 提升系统可维护性:清晰组件边界、接口契约减少修改成本。
  • 提高扩展性与重用性:模块化/服务化便于新增能力(如在 IoT 中新增指纹模块)。
  • 降低长期总拥有成本(TCO):通过早期设计与渐进式演化避免昂贵的 Big-Bang 重写。
  • 增强可观测性与可控性:演化带来监控、追踪规范,帮助快速定位问题。

3. 组织与治理价值

  • 知识沉淀与决策透明化:通过 ADR、架构文档保存设计理由,便于跨团队协作。
  • 风险管理:量化评估(D_total)、自动化门控与审批流程降低变更风险。
  • 合规与审计:架构变更记录满足审计和法规合规要求(如数据保留、加密策略)。

四、为什么演化能降低长期成本 - 三个核心机制

1.提前约束(Design-time Constraints):在架构层面定义约束(接口、契约、SLA)能减少未来的反复改造。

2.可视化与形式化:架构模型/图使得影响可见,利于预测与自动化分析(静态依赖或调用链差异)。

3.最小粒度变更(Atomic Ops)与灰度策略:把大改拆成小步走,降低一次性失败成本并易于回滚。

五、软件架构演化分类

1. 按实现方式与粒度分类(Implementation & Granularity)

(1)基于过程/函数的演化(Procedure-based Evolution)
  • 特征:主要修改函数、过程调用、全局变量。
  • 适用场景:早期 C、Fortran 等过程式系统。
  • 典型演化方式:增删函数、调整调用关系、重构函数接口。
(2)面向对象演化(Object-Oriented Evolution)
  • 特征:以类、对象、继承、接口为演化单元。
  • 典型演化方式
  • 添加/删除类、属性、方法。
  • 修改继承关系(Pull-up/Push-down)。
  • 改变消息交互流程。
(3)基于组件演化(Component-based Evolution)
  • 特征:面向 SOA / 微服务 / 插件架构。
  • 典型演化方式
  • 添加/移除组件。
  • 修改组件依赖。
  • 服务拆分与合并(Split/Merge Service)。
(4)基于架构演化(Architecture-level Evolution)
  • 特征:系统整体结构层面的重构。
  • 典型演化方式
  • 从单体架构 → 分层架构 → 微服务架构 → 云原生/Serverless。
  • 技术栈整体升级(如从 PHP → Go/Kotlin)。

2. 按研究方法分类(Research Methodology)

(1)演化支持(Evolution Support)
  • 研究模块化、内聚与耦合度优化、架构重构模式。
  • 关注如何让系统易演化。
(2)版本与工程管理(Version & Engineering Management)
  • 结合 Git Flow、CI/CD、DevOps 实现架构演化过程控制。
  • 重点在于版本演化策略(蓝绿、灰度、A/B 测试)。
(3)形式方法(Formal Methods for Evolution)
  • 利用形式化模型(Petri 网、π-演算、Graph Transformation)建模结构/行为变换。
  • 保证演化过程正确性与一致性。
(4)成本收益分析(Cost-Benefit Analysis)
  • 使用 ROI、TCO、演化成本估算模型辅助决策。
  • 适合架构委员会或治理团队进行价值判断。

3. 按运行时期分类(Runtime vs Design-time)

(1)静态演化(Static Evolution)
  • 发生阶段:设计时或部署前。
  • 典型类型
  • 更正性维护(Corrective Maintenance)- 修复缺陷。
  • 适应性维护(Adaptive Maintenance)- 适应新环境/平台。
  • 完善性维护(Perfective Maintenance)- 增强功能、优化性能。
(2)动态演化(Dynamic Evolution)
  • 发生阶段:系统运行时。
  • 典型技术
  • DSA(Dynamic Software Architecture)。
  • DR(Dynamic Reconfiguration)。
  • 在线拓扑调整、热插拔组件、动态路由。
  • 应用场景:自适应系统、弹性伸缩、零停机升级。

五、面向对象软件架构演化

1. 原子演化操作目录(用于建模、度量、自动化)

原子操作 = 在 UML/架构模型上语义最小且可组合的变更。把它当作"语义最小补丁"。

A. 结构类(组件/模块)
  • AddModule / RemoveModule(增加/删除模块)
  • SplitModule / MergeModule(拆分/合并模块)
  • AddInterface / RemoveInterface(增加/删除接口)
  • AddDependency / RemoveDependency(增加/删除模块间依赖)
B. 连接件与交互(顺序图层面)
  • AddObject (AO) / DeleteObject (DO) -- 顺序图中的对象实例。
  • AddMessage (AM) / DeleteMessage (DM) -- 新增/删除消息(交互)。
  • SwapMessageOrder (SMO) -- 两消息交换顺序。
  • OverturnMessage (OM) -- 消息方向反转(发送者/接收者交换)。
  • ChangeMessageModule (CMM) -- 改变消息发/收方对应的模块。
C. 复合片段(控制流)
  • AddFragment (AF) / DeleteFragment (DF)
  • FragmentTypeChange (FTC) -- par/ref/alt/loop 类型变更
  • FragmentConditionChange (FCC) -- 条件表达或触发事件变更(注意:在自动机中常需双向修改触发转移)
D. 约束/非功能
  • AddConstraint (AC) / DeleteConstraint (DC)
  • ChangeSLA / ChangeSLO(如响应时间、可用性目标变更)
E. 数据/持久化
  • AddSchemaField / RemoveSchemaField(增加/删除字段)
  • OnlineSchemaChange(在线迁移) -- 需考虑数据向后/向前兼容
F. 运行时/配置
  • HotSwapComponent(动态替换)
  • ConfigChange(配置修改)
  • FeatureToggleOn/Off(开关控制)

每次演化 = 若干原子操作的有序/并发组合,并且要考虑操作之间的语义依赖(例如先添加接口再切流量)。

2. 演化影响度量(要量化、可比较)

要把"演化"从模糊的概念变成可评估的量:建议把结构差异质量属性变化都度量化,形成一个统一的距离度量 D(i-1,i):

定义(示例公式,便于工程化):

D_struct = α1 * Δ_nodes_norm + α2 * Δ_edges_norm + α3 * Δ_interfaces_norm
D_behavior = β1 * Δ_messages_norm + β2 * Δ_fragments_norm
D_qattr = γ1 * Δ_latency_norm + γ2 * Δ_errorrate_norm + γ3 * Δ_throughput_norm + γ4 * Δ_security_norm
D_total = w_struct * D_struct + w_behavior * D_behavior + w_qattr * D_qattr
  • 归一化(_norm)指将差异按阈值或历史最大值归一化到 [0,1]。
  • 权重(α,β,γ,w)由团队根据风险/业务重要性设定(例如安全改动权重大)。
  • D_total 超过阈值则触发额外审查(架构审计)或灰度策略。
测量来源
  • 静态:组件图、依赖图、接口签名差异(AST/bytecode 比对)
  • 动态:顺序图/调用链差异(tracing 比对)
  • 质量属性:APM(latency/throughput/error)、安全扫描、负载测试

3. 演化评估流程(建议自动化管线)

(1)演化建模:将要改的原子操作化并生成变更清单(机器可读,如 JSON/YAML)。

(2)静态影响分析:工具检测依赖、接口兼容、传递影响(例如用 ArchUnit、jdeps、依赖图工具)。

(3)风险评分:基于 D_total 和决策规则给出风险等级(Low/Medium/High)。

(4)策略决策:Low→直推;Medium→灰度/Canary;High→先做回滚/重构或人工审查。

(5)自动化执行:CI/CD + feature flag + canary/blue-green。

(6)验证与回收:自动化测试 → 性能/安全回归 → 监控指标稳定后放量。

(7)文档化:写 ADR(Architecture Decision Record),记录设计动因与回滚点。

4. 动态演化(运行时)实现:MAPE-K 模型(实用版)

运行时演化的核心是要把架构模型以可操作(可查询/可修改)的形式暴露出来(runtime model / architectural reflection),并实现闭环控制:Monitor → Analyze → Plan → Execute(知识库 K)。

技术要点与步骤:

(1)运行时模型:以 service registry / config store(Consul/etcd)或自研模型存储架构元数据。

(2)监控层:收集调用链、错误率、资源使用、业务指标(Prometheus + Jaeger/Zipkin)。

(3)分析/策略引擎:规则/策略(例如基于阈值或 ML 的自动化决策)生成演化计划。

(4)执行器:以事务/原子方式修改系统(例如 Kubernetes operator、OSGi runtime、或中间层协调器),并确保回滚点。

(5)验证器:灰度流量校验(健康探针、契约测试、合约网关)后放量。

运行时演化的 MAPE-K 流程

5. 演化治理(组织/流程/文档)

  • 架构知识管理
  • 每次重要演化写 ADR(模板包含:Context, Decision, Consequences, Alternatives, Rollback plan)。
  • 记录架构模型、APIs、非功能约束、测试矩阵和回滚点。
  • 版本控制
  • 代码:语义化版本(semver);后端服务:兼容性约束。
  • 架构模型也要版本化(例如 architecture/v1.2.0/model.json)。
  • 审批与审计
  • 高风险变更走架构委员会审批(自动化门控:如果 D_total>阈值则阻塞 CI)。
  • 知识转移
  • 设计 Review + Pair-programming + Runbook 更新(含故障恢复步骤)。

6. 演化模式与常见反模式

推荐模式
  • Strangler Fig Pattern:逐步替换老功能,适合从单体迁移到微服务。
  • Branch by Abstraction(隔离替换实现)。
  • Feature Flag / Toggle:控制放量与回滚。
  • Sidecar / Ambassador:在运行时注入能力(如安全、日志),避免改动主服务。
  • Adapter / Facade:对外保持兼容接口,同时内部改造。
  • Bulkhead / Circuit Breaker:降低演化导致故障传播的风险。
典型反模式(要避免)
  • Big Bang Rewrite:一次性大规模替换,风险极高。
  • Shared Database for Microservices:隐式耦合,阻碍独立演化。
  • No-Versioning:接口不停变化但不保留兼容策略。
  • No Observability:没有运行时度量与追踪无法判断改动影响。

8 测试、验证与回滚策略(必须工程化)

  • 测试矩阵
  • 单元测试、集成测试、契约测试(Consumer-Driven Contract)、端到端场景测试、性能测试、负载测试、回归安全扫描。
  • 灰度策略
  • Canary(小流量→观察→逐步放量),蓝绿(切换环境),按用户/地域分片。
  • 回滚
  • 回滚点:DB migration 的双写/兼容字段策略(先做在线兼容 SQL,再切代码,再清理旧字段)。
  • 回滚触发条件:SLO/ERROR阈值、关键事务失败、数据完整性异常。
  • 混沌工程:在预生产或金丝雀时段注入故障验证稳健性。

9 工具与实现建议

  • 代码/CI/CD:Git + GitHub/GitLab + CI(Jenkins/GitHub Actions/GitLab CI)
  • 容器与编排:Docker + Kubernetes(支持 rolling/update/canary)
  • 运行时配置与服务发现:Consul / etcd / Kubernetes API
  • 观测/追踪:Prometheus + Grafana(指标);Jaeger/Zipkin(分布式追踪)
  • 契约测试:Pact / Spring Cloud Contract
  • 静态依赖/架构分析:ArchUnit、jdeps、Structure101、SonarQube
  • 数据库在线迁移:gh-ost / pt-online-schema-change 或 DB自带在线变更工具
  • Feature Flag 管理:LaunchDarkly / Unleash / 自研

10 实战范例(IoT 智能锁 - 新增「指纹解锁」功能的演化流程)

背景:系统已有 BLE、NFC、手机远程开锁功能。新增指纹模块(硬件 + 云端处理 + App 前端)。

(1)建模:把演化拆成原子操作:
  • AO: 新增 FingerprintModule(设备端)
  • AM: 新增消息 FingerprintEnroll、FingerprintAuth(设备→云)
  • AC: 添加约束 fingerprint_data_retention_policy(合规)
  • AddSchemaField: user.fingerprints[] in DB(注意兼容)

①结构演化 - 组件图

②行为演化 - 顺序图

③运行时演化 - MAPE-K 流程

④智能锁用例 - 组件图

⑤智能锁用例 - 行为顺序图

(2)静态/兼容检查:

确认 API 与消息格式兼容;如果 DB 增字段需保证旧客户端能无感访问(schema backward-compatible)。

(3)实现策略

(推荐步骤):

  • 在设备端加入指纹逻辑,但默认不对外(FeatureFlag OFF)。
  • 云端先实现接收新消息的兼容处理(后端向后兼容解析),并实现数据加密/存储策略。
  • 移动 App 新版支持 enroll/auth,但通过切换开关对少量内测用户开放(canary)。
(4)灰度与验证:

小规模设备打开指纹功能(10%),监测:

  • 成功率、延迟、异常率、内存/CPU、认证失败导致的误锁/误开风险。
  • 安全性:指纹数据传输加密(端到端加密),云端存储加密且不保留原始指纹图像(只保模板/哈希)。
(5)放量与清理:

验证无异常后逐步放量;在确认稳定后写 ADR 并清理旧备份字段(按先前版本兼容策略)。

新增消息与灰度流程:

11 检查表 & 文档模板

演化准备检查表(每次变更必填)
  • 列出所有原子操作(AO/AM/...)
  • 计算并记录 D_struct / D_behavior / D_qattr,并写入变更描述
  • 是否破坏向后兼容?(Y/N + 兼容策略)
  • 是否需要 DB schema 变更?(在线迁移方案)
  • 安全/合规检查(数据加密、保留期)
  • 自动化测试覆盖率(单元、契约、集成)
  • 回滚步骤与回滚点(包括数据回滚)
  • 观测/报警面板已创建(必需指标)
  • ADR 已记录(含理由、替代方案、风险)
ADR 模板
# ADR {number}: {标题}
Date: YYYY-MM-DD
Status: Proposed / Accepted / Deprecated
Context:
- 为什么需要变更(业务/技术)
Decision:
- 我们决定做什么(技术方案)
Consequences:
- 预期影响 & 风险
Rollback:
- 如何回滚(详细步骤)
基本 文件 流程 错误 SQL 调试
  1. 请求信息 : 2026-05-13 22:11:20 HTTP/1.1 GET : https://www.yeyulingfeng.com/a/620549.html
  2. 运行时间 : 0.132898s [ 吞吐率:7.52req/s ] 内存消耗:4,824.54kb 文件加载:145
  3. 缓存信息 : 0 reads,0 writes
  4. 会话信息 : SESSION_ID=317c5872bc530e6d39ae4e57569f62e8
  1. /yingpanguazai/ssd/ssd1/www/wwww.yeyulingfeng.com/public/index.php ( 0.79 KB )
  2. /yingpanguazai/ssd/ssd1/www/wwww.yeyulingfeng.com/vendor/autoload.php ( 0.17 KB )
  3. /yingpanguazai/ssd/ssd1/www/wwww.yeyulingfeng.com/vendor/composer/autoload_real.php ( 2.49 KB )
  4. /yingpanguazai/ssd/ssd1/www/wwww.yeyulingfeng.com/vendor/composer/platform_check.php ( 0.90 KB )
  5. /yingpanguazai/ssd/ssd1/www/wwww.yeyulingfeng.com/vendor/composer/ClassLoader.php ( 14.03 KB )
  6. /yingpanguazai/ssd/ssd1/www/wwww.yeyulingfeng.com/vendor/composer/autoload_static.php ( 6.05 KB )
  7. /yingpanguazai/ssd/ssd1/www/wwww.yeyulingfeng.com/vendor/topthink/think-helper/src/helper.php ( 8.34 KB )
  8. /yingpanguazai/ssd/ssd1/www/wwww.yeyulingfeng.com/vendor/topthink/think-validate/src/helper.php ( 2.19 KB )
  9. /yingpanguazai/ssd/ssd1/www/wwww.yeyulingfeng.com/vendor/ralouphie/getallheaders/src/getallheaders.php ( 1.60 KB )
  10. /yingpanguazai/ssd/ssd1/www/wwww.yeyulingfeng.com/vendor/topthink/think-orm/src/helper.php ( 1.47 KB )
  11. /yingpanguazai/ssd/ssd1/www/wwww.yeyulingfeng.com/vendor/topthink/think-orm/stubs/load_stubs.php ( 0.16 KB )
  12. /yingpanguazai/ssd/ssd1/www/wwww.yeyulingfeng.com/vendor/topthink/framework/src/think/Exception.php ( 1.69 KB )
  13. /yingpanguazai/ssd/ssd1/www/wwww.yeyulingfeng.com/vendor/topthink/think-container/src/Facade.php ( 2.71 KB )
  14. /yingpanguazai/ssd/ssd1/www/wwww.yeyulingfeng.com/vendor/symfony/deprecation-contracts/function.php ( 0.99 KB )
  15. /yingpanguazai/ssd/ssd1/www/wwww.yeyulingfeng.com/vendor/symfony/polyfill-mbstring/bootstrap.php ( 8.26 KB )
  16. /yingpanguazai/ssd/ssd1/www/wwww.yeyulingfeng.com/vendor/symfony/polyfill-mbstring/bootstrap80.php ( 9.78 KB )
  17. /yingpanguazai/ssd/ssd1/www/wwww.yeyulingfeng.com/vendor/symfony/var-dumper/Resources/functions/dump.php ( 1.49 KB )
  18. /yingpanguazai/ssd/ssd1/www/wwww.yeyulingfeng.com/vendor/topthink/think-dumper/src/helper.php ( 0.18 KB )
  19. /yingpanguazai/ssd/ssd1/www/wwww.yeyulingfeng.com/vendor/symfony/var-dumper/VarDumper.php ( 4.30 KB )
  20. /yingpanguazai/ssd/ssd1/www/wwww.yeyulingfeng.com/vendor/guzzlehttp/guzzle/src/functions_include.php ( 0.16 KB )
  21. /yingpanguazai/ssd/ssd1/www/wwww.yeyulingfeng.com/vendor/guzzlehttp/guzzle/src/functions.php ( 5.54 KB )
  22. /yingpanguazai/ssd/ssd1/www/wwww.yeyulingfeng.com/vendor/topthink/framework/src/think/App.php ( 15.30 KB )
  23. /yingpanguazai/ssd/ssd1/www/wwww.yeyulingfeng.com/vendor/topthink/think-container/src/Container.php ( 15.76 KB )
  24. /yingpanguazai/ssd/ssd1/www/wwww.yeyulingfeng.com/vendor/psr/container/src/ContainerInterface.php ( 1.02 KB )
  25. /yingpanguazai/ssd/ssd1/www/wwww.yeyulingfeng.com/app/provider.php ( 0.19 KB )
  26. /yingpanguazai/ssd/ssd1/www/wwww.yeyulingfeng.com/vendor/topthink/framework/src/think/Http.php ( 6.04 KB )
  27. /yingpanguazai/ssd/ssd1/www/wwww.yeyulingfeng.com/vendor/topthink/think-helper/src/helper/Str.php ( 7.29 KB )
  28. /yingpanguazai/ssd/ssd1/www/wwww.yeyulingfeng.com/vendor/topthink/framework/src/think/Env.php ( 4.68 KB )
  29. /yingpanguazai/ssd/ssd1/www/wwww.yeyulingfeng.com/app/common.php ( 0.03 KB )
  30. /yingpanguazai/ssd/ssd1/www/wwww.yeyulingfeng.com/vendor/topthink/framework/src/helper.php ( 18.78 KB )
  31. /yingpanguazai/ssd/ssd1/www/wwww.yeyulingfeng.com/vendor/topthink/framework/src/think/Config.php ( 5.54 KB )
  32. /yingpanguazai/ssd/ssd1/www/wwww.yeyulingfeng.com/config/alipay.php ( 3.59 KB )
  33. /yingpanguazai/ssd/ssd1/www/wwww.yeyulingfeng.com/vendor/topthink/framework/src/think/facade/Env.php ( 1.67 KB )
  34. /yingpanguazai/ssd/ssd1/www/wwww.yeyulingfeng.com/config/app.php ( 0.95 KB )
  35. /yingpanguazai/ssd/ssd1/www/wwww.yeyulingfeng.com/config/cache.php ( 0.78 KB )
  36. /yingpanguazai/ssd/ssd1/www/wwww.yeyulingfeng.com/config/console.php ( 0.23 KB )
  37. /yingpanguazai/ssd/ssd1/www/wwww.yeyulingfeng.com/config/cookie.php ( 0.56 KB )
  38. /yingpanguazai/ssd/ssd1/www/wwww.yeyulingfeng.com/config/database.php ( 2.48 KB )
  39. /yingpanguazai/ssd/ssd1/www/wwww.yeyulingfeng.com/config/filesystem.php ( 0.61 KB )
  40. /yingpanguazai/ssd/ssd1/www/wwww.yeyulingfeng.com/config/lang.php ( 0.91 KB )
  41. /yingpanguazai/ssd/ssd1/www/wwww.yeyulingfeng.com/config/log.php ( 1.35 KB )
  42. /yingpanguazai/ssd/ssd1/www/wwww.yeyulingfeng.com/config/middleware.php ( 0.19 KB )
  43. /yingpanguazai/ssd/ssd1/www/wwww.yeyulingfeng.com/config/route.php ( 1.89 KB )
  44. /yingpanguazai/ssd/ssd1/www/wwww.yeyulingfeng.com/config/session.php ( 0.57 KB )
  45. /yingpanguazai/ssd/ssd1/www/wwww.yeyulingfeng.com/config/trace.php ( 0.34 KB )
  46. /yingpanguazai/ssd/ssd1/www/wwww.yeyulingfeng.com/config/view.php ( 0.82 KB )
  47. /yingpanguazai/ssd/ssd1/www/wwww.yeyulingfeng.com/app/event.php ( 0.25 KB )
  48. /yingpanguazai/ssd/ssd1/www/wwww.yeyulingfeng.com/vendor/topthink/framework/src/think/Event.php ( 7.67 KB )
  49. /yingpanguazai/ssd/ssd1/www/wwww.yeyulingfeng.com/app/service.php ( 0.13 KB )
  50. /yingpanguazai/ssd/ssd1/www/wwww.yeyulingfeng.com/app/AppService.php ( 0.26 KB )
  51. /yingpanguazai/ssd/ssd1/www/wwww.yeyulingfeng.com/vendor/topthink/framework/src/think/Service.php ( 1.64 KB )
  52. /yingpanguazai/ssd/ssd1/www/wwww.yeyulingfeng.com/vendor/topthink/framework/src/think/Lang.php ( 7.35 KB )
  53. /yingpanguazai/ssd/ssd1/www/wwww.yeyulingfeng.com/vendor/topthink/framework/src/lang/zh-cn.php ( 13.70 KB )
  54. /yingpanguazai/ssd/ssd1/www/wwww.yeyulingfeng.com/vendor/topthink/framework/src/think/initializer/Error.php ( 3.31 KB )
  55. /yingpanguazai/ssd/ssd1/www/wwww.yeyulingfeng.com/vendor/topthink/framework/src/think/initializer/RegisterService.php ( 1.33 KB )
  56. /yingpanguazai/ssd/ssd1/www/wwww.yeyulingfeng.com/vendor/services.php ( 0.14 KB )
  57. /yingpanguazai/ssd/ssd1/www/wwww.yeyulingfeng.com/vendor/topthink/framework/src/think/service/PaginatorService.php ( 1.52 KB )
  58. /yingpanguazai/ssd/ssd1/www/wwww.yeyulingfeng.com/vendor/topthink/framework/src/think/service/ValidateService.php ( 0.99 KB )
  59. /yingpanguazai/ssd/ssd1/www/wwww.yeyulingfeng.com/vendor/topthink/framework/src/think/service/ModelService.php ( 2.04 KB )
  60. /yingpanguazai/ssd/ssd1/www/wwww.yeyulingfeng.com/vendor/topthink/think-trace/src/Service.php ( 0.77 KB )
  61. /yingpanguazai/ssd/ssd1/www/wwww.yeyulingfeng.com/vendor/topthink/framework/src/think/Middleware.php ( 6.72 KB )
  62. /yingpanguazai/ssd/ssd1/www/wwww.yeyulingfeng.com/vendor/topthink/framework/src/think/initializer/BootService.php ( 0.77 KB )
  63. /yingpanguazai/ssd/ssd1/www/wwww.yeyulingfeng.com/vendor/topthink/think-orm/src/Paginator.php ( 11.86 KB )
  64. /yingpanguazai/ssd/ssd1/www/wwww.yeyulingfeng.com/vendor/topthink/think-validate/src/Validate.php ( 63.20 KB )
  65. /yingpanguazai/ssd/ssd1/www/wwww.yeyulingfeng.com/vendor/topthink/think-orm/src/Model.php ( 23.55 KB )
  66. /yingpanguazai/ssd/ssd1/www/wwww.yeyulingfeng.com/vendor/topthink/think-orm/src/model/concern/Attribute.php ( 21.05 KB )
  67. /yingpanguazai/ssd/ssd1/www/wwww.yeyulingfeng.com/vendor/topthink/think-orm/src/model/concern/AutoWriteData.php ( 4.21 KB )
  68. /yingpanguazai/ssd/ssd1/www/wwww.yeyulingfeng.com/vendor/topthink/think-orm/src/model/concern/Conversion.php ( 6.44 KB )
  69. /yingpanguazai/ssd/ssd1/www/wwww.yeyulingfeng.com/vendor/topthink/think-orm/src/model/concern/DbConnect.php ( 5.16 KB )
  70. /yingpanguazai/ssd/ssd1/www/wwww.yeyulingfeng.com/vendor/topthink/think-orm/src/model/concern/ModelEvent.php ( 2.33 KB )
  71. /yingpanguazai/ssd/ssd1/www/wwww.yeyulingfeng.com/vendor/topthink/think-orm/src/model/concern/RelationShip.php ( 28.29 KB )
  72. /yingpanguazai/ssd/ssd1/www/wwww.yeyulingfeng.com/vendor/topthink/think-helper/src/contract/Arrayable.php ( 0.09 KB )
  73. /yingpanguazai/ssd/ssd1/www/wwww.yeyulingfeng.com/vendor/topthink/think-helper/src/contract/Jsonable.php ( 0.13 KB )
  74. /yingpanguazai/ssd/ssd1/www/wwww.yeyulingfeng.com/vendor/topthink/think-orm/src/model/contract/Modelable.php ( 0.09 KB )
  75. /yingpanguazai/ssd/ssd1/www/wwww.yeyulingfeng.com/vendor/topthink/framework/src/think/Db.php ( 2.88 KB )
  76. /yingpanguazai/ssd/ssd1/www/wwww.yeyulingfeng.com/vendor/topthink/think-orm/src/DbManager.php ( 8.52 KB )
  77. /yingpanguazai/ssd/ssd1/www/wwww.yeyulingfeng.com/vendor/topthink/framework/src/think/Log.php ( 6.28 KB )
  78. /yingpanguazai/ssd/ssd1/www/wwww.yeyulingfeng.com/vendor/topthink/framework/src/think/Manager.php ( 3.92 KB )
  79. /yingpanguazai/ssd/ssd1/www/wwww.yeyulingfeng.com/vendor/psr/log/src/LoggerTrait.php ( 2.69 KB )
  80. /yingpanguazai/ssd/ssd1/www/wwww.yeyulingfeng.com/vendor/psr/log/src/LoggerInterface.php ( 2.71 KB )
  81. /yingpanguazai/ssd/ssd1/www/wwww.yeyulingfeng.com/vendor/topthink/framework/src/think/Cache.php ( 4.92 KB )
  82. /yingpanguazai/ssd/ssd1/www/wwww.yeyulingfeng.com/vendor/psr/simple-cache/src/CacheInterface.php ( 4.71 KB )
  83. /yingpanguazai/ssd/ssd1/www/wwww.yeyulingfeng.com/vendor/topthink/think-helper/src/helper/Arr.php ( 16.63 KB )
  84. /yingpanguazai/ssd/ssd1/www/wwww.yeyulingfeng.com/vendor/topthink/framework/src/think/cache/driver/File.php ( 7.84 KB )
  85. /yingpanguazai/ssd/ssd1/www/wwww.yeyulingfeng.com/vendor/topthink/framework/src/think/cache/Driver.php ( 9.03 KB )
  86. /yingpanguazai/ssd/ssd1/www/wwww.yeyulingfeng.com/vendor/topthink/framework/src/think/contract/CacheHandlerInterface.php ( 1.99 KB )
  87. /yingpanguazai/ssd/ssd1/www/wwww.yeyulingfeng.com/app/Request.php ( 0.09 KB )
  88. /yingpanguazai/ssd/ssd1/www/wwww.yeyulingfeng.com/vendor/topthink/framework/src/think/Request.php ( 55.78 KB )
  89. /yingpanguazai/ssd/ssd1/www/wwww.yeyulingfeng.com/app/middleware.php ( 0.25 KB )
  90. /yingpanguazai/ssd/ssd1/www/wwww.yeyulingfeng.com/vendor/topthink/framework/src/think/Pipeline.php ( 2.61 KB )
  91. /yingpanguazai/ssd/ssd1/www/wwww.yeyulingfeng.com/vendor/topthink/think-trace/src/TraceDebug.php ( 3.40 KB )
  92. /yingpanguazai/ssd/ssd1/www/wwww.yeyulingfeng.com/vendor/topthink/framework/src/think/middleware/SessionInit.php ( 1.94 KB )
  93. /yingpanguazai/ssd/ssd1/www/wwww.yeyulingfeng.com/vendor/topthink/framework/src/think/Session.php ( 1.80 KB )
  94. /yingpanguazai/ssd/ssd1/www/wwww.yeyulingfeng.com/vendor/topthink/framework/src/think/session/driver/File.php ( 6.27 KB )
  95. /yingpanguazai/ssd/ssd1/www/wwww.yeyulingfeng.com/vendor/topthink/framework/src/think/contract/SessionHandlerInterface.php ( 0.87 KB )
  96. /yingpanguazai/ssd/ssd1/www/wwww.yeyulingfeng.com/vendor/topthink/framework/src/think/session/Store.php ( 7.12 KB )
  97. /yingpanguazai/ssd/ssd1/www/wwww.yeyulingfeng.com/vendor/topthink/framework/src/think/Route.php ( 23.73 KB )
  98. /yingpanguazai/ssd/ssd1/www/wwww.yeyulingfeng.com/vendor/topthink/framework/src/think/route/RuleName.php ( 5.75 KB )
  99. /yingpanguazai/ssd/ssd1/www/wwww.yeyulingfeng.com/vendor/topthink/framework/src/think/route/Domain.php ( 2.53 KB )
  100. /yingpanguazai/ssd/ssd1/www/wwww.yeyulingfeng.com/vendor/topthink/framework/src/think/route/RuleGroup.php ( 22.43 KB )
  101. /yingpanguazai/ssd/ssd1/www/wwww.yeyulingfeng.com/vendor/topthink/framework/src/think/route/Rule.php ( 26.95 KB )
  102. /yingpanguazai/ssd/ssd1/www/wwww.yeyulingfeng.com/vendor/topthink/framework/src/think/route/RuleItem.php ( 9.78 KB )
  103. /yingpanguazai/ssd/ssd1/www/wwww.yeyulingfeng.com/route/app.php ( 3.94 KB )
  104. /yingpanguazai/ssd/ssd1/www/wwww.yeyulingfeng.com/vendor/topthink/framework/src/think/facade/Route.php ( 4.70 KB )
  105. /yingpanguazai/ssd/ssd1/www/wwww.yeyulingfeng.com/vendor/topthink/framework/src/think/route/dispatch/Controller.php ( 4.74 KB )
  106. /yingpanguazai/ssd/ssd1/www/wwww.yeyulingfeng.com/vendor/topthink/framework/src/think/route/Dispatch.php ( 10.44 KB )
  107. /yingpanguazai/ssd/ssd1/www/wwww.yeyulingfeng.com/app/controller/Index.php ( 9.87 KB )
  108. /yingpanguazai/ssd/ssd1/www/wwww.yeyulingfeng.com/app/BaseController.php ( 2.05 KB )
  109. /yingpanguazai/ssd/ssd1/www/wwww.yeyulingfeng.com/vendor/topthink/think-orm/src/facade/Db.php ( 0.93 KB )
  110. /yingpanguazai/ssd/ssd1/www/wwww.yeyulingfeng.com/vendor/topthink/think-orm/src/db/connector/Mysql.php ( 5.44 KB )
  111. /yingpanguazai/ssd/ssd1/www/wwww.yeyulingfeng.com/vendor/topthink/think-orm/src/db/PDOConnection.php ( 52.47 KB )
  112. /yingpanguazai/ssd/ssd1/www/wwww.yeyulingfeng.com/vendor/topthink/think-orm/src/db/Connection.php ( 8.39 KB )
  113. /yingpanguazai/ssd/ssd1/www/wwww.yeyulingfeng.com/vendor/topthink/think-orm/src/db/ConnectionInterface.php ( 4.57 KB )
  114. /yingpanguazai/ssd/ssd1/www/wwww.yeyulingfeng.com/vendor/topthink/think-orm/src/db/builder/Mysql.php ( 16.58 KB )
  115. /yingpanguazai/ssd/ssd1/www/wwww.yeyulingfeng.com/vendor/topthink/think-orm/src/db/Builder.php ( 24.06 KB )
  116. /yingpanguazai/ssd/ssd1/www/wwww.yeyulingfeng.com/vendor/topthink/think-orm/src/db/BaseBuilder.php ( 27.50 KB )
  117. /yingpanguazai/ssd/ssd1/www/wwww.yeyulingfeng.com/vendor/topthink/think-orm/src/db/Query.php ( 15.71 KB )
  118. /yingpanguazai/ssd/ssd1/www/wwww.yeyulingfeng.com/vendor/topthink/think-orm/src/db/BaseQuery.php ( 45.13 KB )
  119. /yingpanguazai/ssd/ssd1/www/wwww.yeyulingfeng.com/vendor/topthink/think-orm/src/db/concern/TimeFieldQuery.php ( 7.43 KB )
  120. /yingpanguazai/ssd/ssd1/www/wwww.yeyulingfeng.com/vendor/topthink/think-orm/src/db/concern/AggregateQuery.php ( 3.26 KB )
  121. /yingpanguazai/ssd/ssd1/www/wwww.yeyulingfeng.com/vendor/topthink/think-orm/src/db/concern/ModelRelationQuery.php ( 20.07 KB )
  122. /yingpanguazai/ssd/ssd1/www/wwww.yeyulingfeng.com/vendor/topthink/think-orm/src/db/concern/ParamsBind.php ( 3.66 KB )
  123. /yingpanguazai/ssd/ssd1/www/wwww.yeyulingfeng.com/vendor/topthink/think-orm/src/db/concern/ResultOperation.php ( 7.01 KB )
  124. /yingpanguazai/ssd/ssd1/www/wwww.yeyulingfeng.com/vendor/topthink/think-orm/src/db/concern/WhereQuery.php ( 19.37 KB )
  125. /yingpanguazai/ssd/ssd1/www/wwww.yeyulingfeng.com/vendor/topthink/think-orm/src/db/concern/JoinAndViewQuery.php ( 7.11 KB )
  126. /yingpanguazai/ssd/ssd1/www/wwww.yeyulingfeng.com/vendor/topthink/think-orm/src/db/concern/TableFieldInfo.php ( 2.63 KB )
  127. /yingpanguazai/ssd/ssd1/www/wwww.yeyulingfeng.com/vendor/topthink/think-orm/src/db/concern/Transaction.php ( 2.77 KB )
  128. /yingpanguazai/ssd/ssd1/www/wwww.yeyulingfeng.com/vendor/topthink/framework/src/think/log/driver/File.php ( 5.96 KB )
  129. /yingpanguazai/ssd/ssd1/www/wwww.yeyulingfeng.com/vendor/topthink/framework/src/think/contract/LogHandlerInterface.php ( 0.86 KB )
  130. /yingpanguazai/ssd/ssd1/www/wwww.yeyulingfeng.com/vendor/topthink/framework/src/think/log/Channel.php ( 3.89 KB )
  131. /yingpanguazai/ssd/ssd1/www/wwww.yeyulingfeng.com/vendor/topthink/framework/src/think/event/LogRecord.php ( 1.02 KB )
  132. /yingpanguazai/ssd/ssd1/www/wwww.yeyulingfeng.com/vendor/topthink/think-helper/src/Collection.php ( 16.47 KB )
  133. /yingpanguazai/ssd/ssd1/www/wwww.yeyulingfeng.com/vendor/topthink/framework/src/think/facade/View.php ( 1.70 KB )
  134. /yingpanguazai/ssd/ssd1/www/wwww.yeyulingfeng.com/vendor/topthink/framework/src/think/View.php ( 4.39 KB )
  135. /yingpanguazai/ssd/ssd1/www/wwww.yeyulingfeng.com/app/controller/Es.php ( 3.30 KB )
  136. /yingpanguazai/ssd/ssd1/www/wwww.yeyulingfeng.com/vendor/topthink/framework/src/think/Response.php ( 8.81 KB )
  137. /yingpanguazai/ssd/ssd1/www/wwww.yeyulingfeng.com/vendor/topthink/framework/src/think/response/View.php ( 3.29 KB )
  138. /yingpanguazai/ssd/ssd1/www/wwww.yeyulingfeng.com/vendor/topthink/framework/src/think/Cookie.php ( 6.06 KB )
  139. /yingpanguazai/ssd/ssd1/www/wwww.yeyulingfeng.com/vendor/topthink/think-view/src/Think.php ( 8.38 KB )
  140. /yingpanguazai/ssd/ssd1/www/wwww.yeyulingfeng.com/vendor/topthink/framework/src/think/contract/TemplateHandlerInterface.php ( 1.60 KB )
  141. /yingpanguazai/ssd/ssd1/www/wwww.yeyulingfeng.com/vendor/topthink/think-template/src/Template.php ( 46.61 KB )
  142. /yingpanguazai/ssd/ssd1/www/wwww.yeyulingfeng.com/vendor/topthink/think-template/src/template/driver/File.php ( 2.41 KB )
  143. /yingpanguazai/ssd/ssd1/www/wwww.yeyulingfeng.com/vendor/topthink/think-template/src/template/contract/DriverInterface.php ( 0.86 KB )
  144. /yingpanguazai/ssd/ssd1/www/wwww.yeyulingfeng.com/runtime/temp/c935550e3e8a3a4c27dd94e439343fdf.php ( 31.50 KB )
  145. /yingpanguazai/ssd/ssd1/www/wwww.yeyulingfeng.com/vendor/topthink/think-trace/src/Html.php ( 4.42 KB )
  1. CONNECT:[ UseTime:0.000723s ] mysql:host=127.0.0.1;port=3306;dbname=wenku;charset=utf8mb4
  2. SHOW FULL COLUMNS FROM `fenlei` [ RunTime:0.001145s ]
  3. SELECT * FROM `fenlei` WHERE `fid` = 0 [ RunTime:0.000739s ]
  4. SELECT * FROM `fenlei` WHERE `fid` = 63 [ RunTime:0.000436s ]
  5. SHOW FULL COLUMNS FROM `set` [ RunTime:0.000850s ]
  6. SELECT * FROM `set` [ RunTime:0.000376s ]
  7. SHOW FULL COLUMNS FROM `article` [ RunTime:0.000944s ]
  8. SELECT * FROM `article` WHERE `id` = 620549 LIMIT 1 [ RunTime:0.004217s ]
  9. UPDATE `article` SET `lasttime` = 1778681480 WHERE `id` = 620549 [ RunTime:0.005244s ]
  10. SELECT * FROM `fenlei` WHERE `id` = 64 LIMIT 1 [ RunTime:0.000433s ]
  11. SELECT * FROM `article` WHERE `id` < 620549 ORDER BY `id` DESC LIMIT 1 [ RunTime:0.000756s ]
  12. SELECT * FROM `article` WHERE `id` > 620549 ORDER BY `id` ASC LIMIT 1 [ RunTime:0.000967s ]
  13. SELECT * FROM `article` WHERE `id` < 620549 ORDER BY `id` DESC LIMIT 10 [ RunTime:0.001813s ]
  14. SELECT * FROM `article` WHERE `id` < 620549 ORDER BY `id` DESC LIMIT 10,10 [ RunTime:0.001367s ]
  15. SELECT * FROM `article` WHERE `id` < 620549 ORDER BY `id` DESC LIMIT 20,10 [ RunTime:0.002284s ]
0.134671s