三亩地 三亩地SAN MU DI · CODE DIARY
ARTICLE DETAIL

日记详情

真实记录编程学习的某一天,欢迎挑你感兴趣的翻一翻。

框架的核心角色

框架的核心角色

“调度器 + 执行器 + 数据”确实是许多框架的核心骨架,尤其在数据处理、任务执行、查询引擎等场景中。但一个完整、健壮、可扩展的框架通常还会引入其他关键角色,以应对复杂性、灵活性和工程化需求。

下面我们系统梳理一下:除了这三者,框架中常见的其他核心角色有哪些?


✅ 1.配置(Configuration)

  • 作用:控制框架行为的“开关”和“参数”。
  • 为什么需要:调度策略、执行方式、数据格式等往往需要外部定制。
  • 例子
    • Spring 的application.yml
    • Lucene 的IndexWriterConfig
    • Kafka 的ProducerConfig
  • 特点:通常在启动时注入,影响调度器/执行器的行为。

🧩没有配置,框架就无法适应不同场景


✅ 2.上下文(Context)

  • 作用:在一次请求/任务/会话中传递共享状态或元信息
  • 为什么需要:调度器和执行器之间可能需要传递临时数据(如用户身份、事务ID、追踪ID),但又不能通过参数层层传递。
  • 例子
    • Spring 的ApplicationContext
    • Web 的HttpServletRequest/SecurityContext
    • gRPC 的Context
  • 特点:生命周期通常与单次操作绑定,避免全局变量污染。

🧵Context 是“隐式参数通道”,解耦跨层通信


✅ 3.工厂(Factory) / 构建器(Builder)

  • 作用创建复杂对象(尤其是执行器或数据解析器),隐藏构造细节。
  • 为什么需要:执行器可能依赖多种组件,直接new会导致耦合。
  • 例子
    • SessionFactory(Hibernate)
    • RestTemplateBuilder(Spring)
    • QueryParser.Factory(Lucene)
  • 特点:支持依赖注入、策略选择、缓存复用。

🏭工厂让“如何创建”与“如何使用”分离


✅ 4.拦截器 / 过滤器(Interceptor / Filter)

  • 作用:在调度前后或执行前后插入横切逻辑(AOP 思想)。
  • 为什么需要:日志、鉴权、限流、监控等通用功能不应侵入核心逻辑。
  • 例子
    • Spring MVC 的HandlerInterceptor
    • Servlet 的Filter
    • gRPC 的ClientInterceptor
  • 特点:可插拔、链式调用(责任链模式)。

拦截器是“非侵入式增强”的关键机制


✅ 5.注册中心 / 插件管理器(Registry / Plugin Manager)

  • 作用动态管理执行器或策略的集合,支持扩展。
  • 为什么需要:框架需允许用户注册自定义执行逻辑(如自定义字段解析器、序列化器)。
  • 例子
    • Elasticsearch 的NamedWriteableRegistry
    • MyBatis 的TypeHandlerRegistry
    • Spring 的BeanFactory(本质是组件注册中心)
  • 特点:通常配合 SPI(Service Provider Interface)使用。

🔌注册中心让框架具备“开放扩展”能力


✅ 6.生命周期管理器(Lifecycle Manager)

  • 作用:管理组件的初始化、运行、销毁过程。
  • 为什么需要:调度器/执行器可能需要启动后台线程、打开连接、释放资源。
  • 例子
    • Spring 的InitializingBean/DisposableBean
    • Tomcat 的Lifecycle接口
    • Netty 的ChannelHandler生命周期
  • 特点:确保资源安全,避免内存泄漏。

♻️没有生命周期管理,框架无法用于生产环境


✅ 7.异常处理器(Exception Handler)

  • 作用:统一捕获和处理执行过程中抛出的异常。
  • 为什么需要:避免执行器崩溃导致整个系统宕机,并提供友好错误响应。
  • 例子
    • Spring 的@ControllerAdvice
    • Dubbo 的ExceptionHandler
  • 特点:通常位于调度器外围,形成“保护壳”。

🛡️异常处理是系统健壮性的最后一道防线


🌐 总结:框架的完整角色图谱

graph LR A[配置] --> B(调度器) C[上下文] --> B D[注册中心] --> E(执行器) F[工厂] --> E B --> E G[数据] --> B H[拦截器] -->|环绕| B & E I[生命周期管理] --> B & E J[异常处理器] -->|捕获| E

💡 关键结论

  1. “调度器 + 执行器 + 数据”是框架的“执行内核”,负责核心功能;
  2. 其他角色是“支撑系统”,解决配置、扩展、可观测性、健壮性、易用性等工程问题;
  3. 小型工具库可能只有三者,但工业级框架必然包含上述多个角色
  4. 这些角色共同体现了现代软件设计原则:关注点分离、开闭原则、依赖倒置、组合优于继承

所以,你抓住了主干,而这些“配角”让主干能长成参天大树 🌳。

← 返回列表