跳到主要内容

架构简介

EventMatrix 是一个基于业务事件驱动的开发框架,旨在通过高度解耦的设计和轻量级的低代码开发模式,为开发者提供更高效、更灵活的解决方案。在 AI 时代,EventMatrix 不仅支持传统的开发模式,还集成了 AI 辅助开发能力,帮助开发者快速构建和迭代复杂的业务系统。

设计理念

EventMatrix 的设计理念是“简单、灵活、高效”。它支持多种架构方式,包括微服务、单体和中间件架构,开发者可以根据具体的业务场景选择最适合的架构方案。无论是需要快速验证的小型项目,还是需要弹性扩展的大型分布式系统,EventMatrix 都能提供相应的支持,让系统升级扩展更平滑高效。

核心特点

  • 业务事件驱动:通过事件驱动的方式,将业务逻辑与底层技术实现解耦,使得系统更加灵活和易于维护。
  • 高度解耦:采用六边形架构和经典 MVC 模式,确保各模块之间的低耦合,便于独立开发和测试。
  • 轻量级低代码:借鉴“定义即开发”的思想,提供低代码开发能力,同时保留原生开发的灵活性,适合不同层次的开发者。
  • AI 协同开发:集成 AI 能力,支持 AI 辅助开发、测试和代码生成,提高开发效率,保证代码质量。

适用场景

  • 微服务架构:适用于需要持续迭代、高并发、弹性扩展的分布式系统,支持多团队协作和灰度发布。
  • 单体架构:适合中小型项目快速验证(MVP 开发)、内部管理系统和单机应用。
  • 中间件架构:用于快速响应需求的中间件服务拓展,支持其他语言调用原有的 EventMatrix 服务。

事件驱动

EventMatrix 的核心理念是“业务事件驱动”,基于事件驱动的开发模式,将业务逻辑与底层技术实现解耦,一方面使得系统更加灵活和易于维护,不与具体传输协议绑定,摆脱传统 web 框架与 HTTP 协议绑定带来的限制,让代码复用性更高,另一方面还能实现业务模块级别的代码复用,通过即插即用方式实现业务逻辑的快速迭代。

核心简洁

不同于大部分的微服务架构,一个系统包含了服务发现、服务监控、API 网关、配置中心、认证授权等等一大堆的服务模块,EventMatrix 内部只有 Gateway 和 Worker 两种角色(未来可能有 Device 角色,用于设备管理和自动负载均衡),Gateway 负责事件的鉴权、终端路由、核心用户管理、配置管理中心、Worker 监控工作,Worker 负责具体的事件处理,并把业务逻辑高度模块化,使得系统更加简单、易于维护。

注意事项

  • 绑定 JSON 格式:内置仅基于 JSON 格式进行数据交换,需注意数据格式和兼容性。
  • 绑定 JWT 鉴权:系统内仅基于 JWT 进行用户鉴权,需注意 JWT 安全性和过期时间。
  • 内域网络安全:为了性能,框架本身没有传输层的安全机制,内域网络需要通过防火墙等措施确保传输数据安全。

微服务架构

微服务架构图

数据流

  • 客户端先检查事件服务设备是否已获取,若未获取则请求网关服务获取设备信息,进行初步的权限校验
  • 客户端根据设备信息请求响应的 Worker,执行事件的请求
  • 支持读写分离设计,写操作路由至主数据源 Worker,读操作分散至副本集群 Worker

适用场景

  • 持续迭代的业务系统,需要快速响应变化的高并发场景
  • 需要弹性扩展的分布式系统
  • 多团队协作的大型项目(不同服务独立开发部署)
  • 需要灰度发布的业务场景

技术选型

  • 编程语言:Go
  • 通信协议:内置 HTTP 实现,其他协议可通过重写 Server 端适配器实现
  • 负载均衡:Nginx(可选) + 内置事件负载均衡
  • 数据存储:PostgreSQL/MySQL

单体架构

单体架构图

数据流

  • HTTP 请求直达 Worker,执行事件的请求
  • Worker 通过内部通信获取 Gateway 的能力,如用户登录、权限校验、JWT 签发等
  • ORM 层直接读写主数据库

适用场景

  • 中小型项目快速验证(MVP 开发)
  • 内部管理系统
  • BS 单机应用

技术选型

  • 编程语言:Go
  • 通信协议:内置 HTTP 实现,其他协议可通过重写 Server 端适配器实现
  • 数据存储:Sqlite/PostgreSQL/MySQL

中间件架构

中间件架构图

数据流

  • 请求 Gateway 获取设备信息,负载均衡至 Worker
  • 中间件根据设备信息请求响应的 Worker,执行事件的请求
  • 支持读写分离设计,写操作路由至主数据源 Worker,读操作分散至副本集群 Worker

适用场景

  • 需要快速响应需求的中间件服务拓展
  • 其他语言调用原有的 EventMatrix 服务

技术选型

  • 编程语言:Go
  • 通信协议:内置 HTTP 实现,其他协议可通过重写 Server 端适配器实现
  • 数据存储:Sqlite/PostgreSQL/MySQL