总控、引擎、插件软件架构梳理.md
现有架构梳理
核心系统组件、应用、插件构想
核心系统
总控、流量引擎
核心组件
核心系统中的核心应用
属性: 核心组件的启动、运行依赖关系、通信链路形成有向无环图结构,核心组件之间逻辑自洽,向上提供的接口已在内部达成逻辑自洽
依赖:操作系统底层资源、其他核心组件
系统核心组件依赖关系和通信链路示意图
graph TB
subgraph kernel[系统核心组件]
comp2[Comp2]
comp1[Comp1]
comp3[Comp3]
comp4[Comp4]
comp5[Comp5]
comp3 --> comp1
comp5 --> comp1 & comp2 & comp3 & comp4
end
核心系统功能
核心系统功能
最核心系统为流量引擎,功能为反向代理。其中的系统组件重要且紧急,如果其中出现故障属于一级紧急事故
核心系统旁路:目前延伸出可视化旁路,它同样重要,但是属于次紧急的链路。
提供插件应用接口,完成插件注册、绑定、插件之间通信问题
为普通应用提供接口,提供核心系统功能的延伸
核心系统组件职责
流量引擎侧: 完成反向代理功能,提供流量引擎侧必须提供的信息
总控侧:完成引擎配置下发、建立事件总线,提供总控侧必须提供的信息。
异常处理
核心系统组件异常推荐设置管理员通知机制,意味着紧急事件发生
核心系统旁路可设置较松的通知
其他不重要错误信息可只显示于日志文件中,日志文件可支持导出
应用
应用是在软件系统上运行的程序,它们使用系统提供的服务和接口完成特定的功能或任务。应用通常是用户与系统交互的主要方式。
普通应用功能
属性: 应用依赖关系形成有向无环图结构,应用之间逻辑自洽,向上提供的接口已在内部达成逻辑自洽
依赖:操作系统资源、通常独立于其他应用(可能依赖其他应用和核心组件)
依赖关系和通信链路示意图
graph TB
subgraph kernel[系统核心组件层]
comp2[Comp2]
comp1[Comp1]
comp3[Interface==Comp3]
comp4[Comp4]
comp5[Interface==Comp5]
comp3 --> comp1
comp5 --> comp1 & comp2 & comp3 & comp4
end
subgraph app[应用层]
app1[APP1]
app2[APP2]
app3[APP3]
app3 ----> app1 & app2
app1 --> app2
end
app3 --> comp5
app1 --> comp3
linkStyle 8,9 stroke:red,stroke-width:5px;
权限
应用有自己的鉴权机制,因为应用可能被其他应用调用,可以简单实现,借鉴 Linux 用户权限机制。
应用关于核心系统组件接口使用方式
应遵循就进原则,每个应用应明确与之最近的核心组件接口,并严格执行,不可连接越过最近的组件,连接更远的组件。
这个限制通过设置核心系统组件接口必须通过本地回环网络访问
如果本机不存在核心系统组件但是想要获取此数据,须安装一个核心系统组件的 agent,并在 agent 做了准入处理。
插件
插件是软件的组件(也可以为组件),可以在不改变核心系统代码的情况下,为系统增加新的功能或扩展现有功能。它们通常是可选的,按需加载,并与核心系统通过定义好的接口交互。
权限
插件本身没有权限概念,因为它依附于核心系统,而核心系统脱离了权限概念。
插件可以在通过某些普通应用提供权限管理,如 dashboard 等管理界面,这些应用已获准接入了核心系统应用接口,应该在这些应用中做好鉴权体系。
应用与插件区别
1. 功能范围和目的
- 插件:通常设计为扩展或增强主程序的特定功能。它们是为了增加额外的核心系统的特性或工具而设计的,不是独立运行的程序。
- 应用:是独立的程序,用于执行完整的任务或工作流程。应用通常具有更广泛和独立的功能范围。
2. 依赖性
- 插件:依赖于核心系统,不能独立于核心存在。它们是核心系统功能的补充。
- 应用:通常独立于任何其他应用。应用提供一组完整的接口或功能集,可能提供独立界面。
3. 交互性和集成
- 插件:紧密集成于核心系统,通过预定义的接口与核心系统组件交互。
- 应用:可能与系统的其他部分交互,但不一定需要集成到另一个特定的程序中。
4. 用户控制和定制
- 插件:提供给用户更多的定制选项来修改或增强核心系统的行为。
- 应用:通常作为完整的解决方案提供,用户定制性相对较少。
5. 安装和维护
- 插件:作为核心系统的一部分进行安装和更新,其生命周期通常与核心系统相关联。
- 应用:独立安装和更新,拥有自己的生命周期管理。
6. 资源使用和性能影响
- 插件:由于与核心系统紧密集成,其对系统资源的使用和性能影响需要更加小心处理,以免影响核心系统。
- 应用:作为独立实体,负责自己的资源管理和性能优化。
7. 安全性和权限
- 插件:其安全性和权限直接关联于核心系统,通常受到更严格的限制和控制。
- 应用:需要独立管理自己的安全性和用户权限。
安全性
核心组件安全性由操作系统保证,操作系统是经过改造过的,用户不知道操作系统账户密码,不能简单进入到系统终端
插件目前是由可信任的插件开发者完成,通过统一的发布平台发布,并在发布和导入插件包阶段做了相应校验,不存在安全问题
应用同插件一样
性能
暂无分析