OJ在线评测系统 思考如何进行微服务的划分 业务功能 占用端口 公共服务 依赖服务 路由

思考

微服务是一种架构风格

微服务就是把一个项目拆分成多个独立的不封

而且多个服务都是可以运行的 每个服务都会占用线程

传统的IT行业软件都是独立系统的堆砌 这些系统总结来说就是可拓展性不高 可靠性不高 维护成本广告

微服务的每个模块都是独立的 而且可以用有多重存储方式 数据库也是每个模块对应自己的数据库

单体架构所有的模块开发所使用的开发技术可以不同 开发模式更加灵活

从业务出发 想一下哪些功能/职责是在一起的

好比自己是公司老板 想想怎么给员工分工

业务功能

1.用户模块 8102端口

a.注册 后端已经实现 前端已经实现

b.登录 后端已经实现 前端已经实现

2.题目模块 8103端口

a.创建题目 管理员

b.删除题目 管理员

c.修改题目 管理员

d.搜索题目 用户

e.在线做题 题目详细页

3.判题模块 8104端口

a.提交判题 结果是否正确与错误

b.错误处理 内存溢出 安全性 超时

c.自主实现 代码沙箱 安全沙箱

d.开发接口 提供一个独立的新服务

公共的服务

1.common 公共模块

全局异常处理器 请求响应封装类 公共的工具类

2.model 模型模块

很多服务公用的实体类

3.service client公用接口模块

只存放接口不存放实现 多个服务之间要共享

代码沙箱服务可以不用纳入微服务的管理

本身就是独立的

依赖服务

1.网关汇总所有的接口 微服务网关Geteway

2.注册中心 Nacos

路由划分

用springboot的context-path统一修改个项目的接口前缀

比如 用户服务

/api/user

/api/user/inner(内部调用 网关层面要做限制)

比如 题目服务

/api/question(也包含题目提交信息)

/api/question/inner(内部调用 网关层面要做限制)

比如 判题服务

/api/judge

/api/judge/inner(内部调用 网关层面要做限制)

相关推荐
人道领域7 小时前
【0-1的agent进阶篇】Prompt 与上下文工程
java·开发语言·prompt·mcp
KINGSEA_1687 小时前
AgentScope Java 2.0 架构解析
java
武子康7 小时前
GPT-Live 全双工语音 Agent 深度拆解:连续交互 + 后台委托 + Voice Runtime 三层架构
人工智能·ai·chatgpt·架构·llm·交互
折哥的程序人生 · 物流技术专研8 小时前
Java 23 种设计模式:从踩坑到精通 | 备忘录模式 —— 快照与撤销,给对象装一个“后悔药”
java·设计模式·备忘录模式·行为型模式·java设计模式·从踩坑到精通·撤销重做
监督者修8 小时前
从零构建 GIS 数据引擎:方案驱动架构的设计与实践
android·架构·kotlin
Kel8 小时前
万物皆 Runnable:LangChain 如何用一个接口统一模型、链与图
人工智能·设计模式·架构
ikun_文8 小时前
Java里面异常Exception体系知识点
java
不负岁月无痕8 小时前
STL -- C++ 红黑树封装 Map 和 Set
java·c语言·开发语言·c++·面试
小园子的小菜8 小时前
Java核心基础:反射与泛型底层原理及实战用法详解
java·开发语言
淘源码A8 小时前
多院区集团化云PACS系统源码,原生兼容国产软硬件环境
java·云计算·源码·saas·pacs·医学影像系统