一、立项目标
随着模拟经营游戏玩法日趋复杂,玩家对生产线规划与效率计算的需求日益增强。然而,现有辅助工具普遍存在框架适配性低、版本更新滞后等问题。为此,本项目旨在构建一个具备通用性与可维护性的规划辅助系统。通过提取《幸福工厂》等典型游戏的核心逻辑,建立可适配多游戏规则的生产模型,并实现支持热更新的系统架构,从而为玩家提供持续、准确且易用的生产规划支持。
二、功能介绍
系统采用基于 Nacos 的微服务架构,支持分布式部署与动态服务治理。通过 MVC 模式实现前后端分离,模块间耦合度低,便于独立开发与维护。利用 Redis 缓存高频访问数据,显著提升查询性能;MySQL 负责核心数据持久化存储,保障数据一致性与可靠性。
功能方面,网站提供游戏内物品、配方、建筑等信息的便捷查询,并集成了实时合成树演算功能。通过将不同业务拆分为独立微服务,系统具备弹性扩展能力,尤其可对计算密集型的合成树演算服务进行横向扩容,通过增加节点并行处理,有效降低复杂运算的响应时间。
三、业务流程
请求发起与网关路由:用户在前端进行操作,请求首先抵达后端API网关层。系统采用双网关架构,分别处理用户与管理员请求。网关在转发前会为请求注入身份标识头,以便下游服务进行权限识别与控制。
智能调度与权限流转:携带权限标识的请求,由网关根据规则路由至对应的业务微服务(如数据查询、合成演算服务)。该过程依托 Nacos 的服务发现与动态配置能力,确保请求被准确、高效分发。
业务执行与性能优化:微服务接收到请求后,采用缓存优先策略:首先查询 Redis 缓存,若命中则立即返回;若未命中,则执行核心逻辑(如查询 MySQL),并将结果回写至 Redis,以提升后续响应速度。
复杂计算与弹性扩展:针对计算密集型的“合成配方树演算”请求,系统可启动多个相同微服务实例并分布在不同主机。Nacos 的服务治理机制会自动将计算任务分配至不同实例,实现并行处理与负载均衡,从而通过横向扩展显著缩短运算时间。
结果聚合与返回:处理完毕的数据经由网关统一返回至前端用户界面,完成一次完整的业务闭环。
一、整体架构
本项目采用 Spring Cloud Alibaba 微服务生态进行构建,整体为前后端分离架构。
1.前端架构:基于 Vue.js 框架开发,负责用户交互界面的展示与操作。
2.后端架构:以 Spring Boot 为核心,通过 Nacos 实现服务的注册、发现与动态配置管理
3.数据库架构:采用 MyBatis 作为数据库映射框架,负责与 MySQL 数据库进行交互,实现数据的持久化存储与高效访问。
4.权限区分:系统面向普通用户与管理员两类角色,通过在 API 网关 层为请求添加标识头来实现流量区分与权限路由。
5.服务划分:后端业务按功能与权限维度,解耦为以下四大微服务模块:
(1)核心业务服务:包含物品查询、配方查询等所有用户均可访问的公共功能。
(2)用户计算服务:专供普通用户使用,集成复杂的合成树演算等核心计算功能。
(3)管理配置服务:供管理员专用,负责物品种类管理、配方数据维护等所有配置操作。
(4)通用支撑服务:封装系统通用工具类、第三方接口(如百度翻译API)等,为上方各业务服务提供共享能力。
二、负责模块
本项目由我独立设计与开发,涵盖了需求分析、系统架构、前后端实现与部署运维的全过程。项目不仅验证了微服务、分布式计算等关键技术方案,也完整实践了软件工程的全生命周期管理。
三、主要难点
(1)微服务治理框架搭建:通过自学掌握了 Spring Cloud Alibaba 与 Nacos 的集成与应用,独立完成服务注册发现、动态配置管理与 API 网关的统一集成,构建出弹性可扩展的分布式基础设施。
(2)游戏版本切换功能:为满足项目多版本兼容的设计目标,我深入分析多款模拟经营游戏的共性,抽象出一套通用的数据模型与规则逻辑,并基于此设计出可复用的合成树演算核心算法,从而实现了不同游戏版本乃至不同游戏之间的平滑切换与统一支持。
(3)Redis 存储适配:在缓存过程中发现 Redis 存储 Map 时会隐式转换 key 为 String 类型,导致缓存查询失效。通过自学与调研,编写专属配置类,确保该类型数据可正常序列化与反序列化,恢复缓存功能。
(4)计算结果可视化交互实现:通过自学 Cytoscape.js,攻克大规模图数据动态渲染与交互技术难点,自主设计并实现了合成树演算结果的可视化展示模块,显著提升结果可读性与用户操作体验。
(5)用户计算服务开发:主导最核心的合成树演算微服务,完成从需求分析、递归算法设计到并行化优化的全流程迭代。通过持续调整算法结构与任务调度策略,最终实现计算效率的显著提升,并借助与 Nacos 的深度集成,保障了服务的无状态化与横向扩展能力。
(6)通用支撑服务封装:抽象并封装了权限校验工具类、百度翻译 API 客户端等通用组件,提升业务代码的纯净度与功能复用性。