基于 Spring Boot 框架的一组微服务构件,包含认证、后台管理、开放平台等服务。提供 SDK 与服务进行交互。
不同于市面上主流的后台管理系统,本项目的定位不是脚手架。本项目希望使用者通过独立部署服务的方式,作为一个系统的一部分提供功能。对于使用者而言,本项目的内部实现应视为黑箱。使用者无需(也不应该)对本项目的源代码进行二次开发,而是通过SDK提供的API与服务进行交互。
本项目优先支持此方式。
本项目的每一个服务都会以镜像的形式发布到 ghcr。开发与部署时选择所需要的服务部署,然后通过集成业务系统语言对应的SDK,调用geom服务进行交互。其中 geom-service-admin 服务是必须部署的,因为其被其他所有服务所依赖。除非特殊说明,其他服务之间不会有强依赖关系。
即在本项目的源代码基础上进行修改。该方式违背了这个项目的初衷,所以不会获得任何支持,不推荐使用该方式。
本项目遵循 LGPL 3.0 开源协议,对源代码的修改需要遵循相同的协议进行开源。
C4Component
title 部署架构(参考)
Node(browser, "浏览器", "Google Chrome, Mozilla Firefox, Apple Safari or Microsoft Edge") {
Container(spa, "前端应用", "React")
}
Node(cf, "DNS", "cloudflare") {
Container(CDN, "CDN")
Container(gw, "公网网关")
}
Node(app, "后端应用") {
Container(api, "API网关", "river", "后端应用唯一对外暴露的节点")
Container(geom-service-admin, "后台管理服务", "Spring Boot")
Container(geom-service-openapi, "开放平台服务", "Spring Boot")
Container(service-a, "业务应用1")
Rel_D(api, geom-service-admin, "admin.domain.com", "json/HTTP")
Rel_D(api, geom-service-openapi, "openapi.domain.com", "json/HTTP")
Rel_D(api, service-a, "a.domain.com", "json/HTTP")
Rel(geom-service-openapi, geom-service-admin, "RPC调用", "protobuf/gRPC")
Rel(service-a, geom-service-admin, "RPC调用", "protobuf/gRPC")
}
Node(dep, "中间件") {
Container(db, "关系型数据库", "PostgreSQL")
Container(kv, "键值数据库", "Redis")
}
Rel_D(spa, CDN, "www.domain.com", "html/HTTPs")
Rel_D(spa, gw, "*.domain.com", "json/HTTPs")
Rel_D(gw, api, "*.domain.com", "json/HTTPs")
Rel_D(geom-service-admin, db, "持久化数据", "JDBC")
Rel_D(service-a, db, "持久化数据", "JDBC")
Rel_D(geom-service-admin, kv, "数据共享", "Lettuce")