你有没有思考过这样一个问题:项目中的架构现在已经成了高楼大厦,那当初底层的地基是如何搭建起来的呢?如果现在你是一个团队的技术负责人,正面临着公司基础架构的搭建,那你是如何从 0-1 的去完成工作呢?接下来我将结合自己形成的方法论来进行讲解。
如果让我从零开始搭建公司的后端技术栈,我会按照以下维度进行思考
在真正的开始搭建以前,做为负责人,需要结合实际的公司发展模式,与业务发展的方向进行选择,公司当前是否是业务的快速增长期,如何做到快速交付,这就需要用到一些项目辅助的工具,进行 项目管理、任务管理、问题管理等。
项目管理软件是整个业务的需求、问题、流程等等的集中地,大家的跨部门沟通协同大多依赖于项目管理工具。有一些 SaaS 的项目管理服务可以使用,但是很多时间不满足需求,此时我们可以选择一些开源的项目,这些项目本身有一定的定制能力,有丰富的插件可以使用,一般的创业公司需求基本上都能得到满足。
例如选择 Jira(官网信息):用 Java 开发的,有用户故事,task 拆分,燃尽图等等,可以做项目管理,也可以应用于跨部门沟通场景,功能比较丰富,特别适合敏捷开发的团队(需要加班的团队)
在我的实际工作应用中,使用 Jira 进行项目管理,同时结合自建的需求平台,在需求状态流转到开发中,会自动创建到小组下的冲刺,最终冲刺完成后会进行工时统计。

如果说项目管理是人体组成的骨架,那么团队的文档则是人体的灵魂。Wiki 的生命力在于“集体智慧”,需要鼓励成员在完成任务后,顺手更新相关文档,无论是架构的设计思路、需求的流程梳理、接口的文档信息,又或者是周报、会议纪要、复盘记录等,保持 Wiki 的“新鲜度”和准确性至关重要,项目越往后越会觉得这是一个非常明智的选择。
可以选择 Confluence(官网信息),是 Jira 的“亲兄弟”,与 Jira 集成度极高,是技术团队的标配,多人协作机制和丰富的文本格式、流程图功能都十分好用。

如果没有进行项目管理的工具,那文档可以直接选择 Notion( notion.so ),其特点是颜值高、灵活性极强,既是 Wiki 也是数据库,操作体验非常流畅。非常适合互联网初创公司、产品团队或个人知识管理。

在准备阶段时,我们还要选择项目代码的版本管理,现在市面上主流的是 GitLab + Git 进行企业的私有化部署。如果是小团队,不需要一些特别的高级项目管理功能,可以选择轻量级、低成本和自主可控的 Gitea

当基础的项目辅助工具选择完成,接下来我们需要结合结合实际的业务场景,进行服务架构的选型,根据项目体量,是考虑单体 还是 SOA 又或是微服务架构,如果选择微服务架构,那主流的微服务框架如何进行选择,从微服务的稳定性和性能做出选择,同时对人员的学习成本,开发成本,以及后期业务的高并发的考量,在此处以微服务模式为例。
搭建微服务开发基础设施需要考虑多个方面,首先我们需要选择合适的微服务体系和技术栈,当下最主流的是 Spring Cloud Alibaba 微服务体系

对于 Spring Boot 版本,如果需要结合 AI 应用的开发,那直接是 3.0 版本起步,在微服务体系中,最高版本应用的也是 3.2 系列,不过其官方上来说,3.2 已不再支持,3.5 才是一个长期版本。

微服务体系的版本确认后,基于 SpringBoot 的版本和业务体量去选择合适的 JDK 版本,目前长期支持的版本有4个,JDK 11、17、21、25 可以查看 Java 进化论:解码 JDK 11、17、21 与 25 的核心变革
提示
对于一些应用新特性与高并发大流量的项目,JDK21 是首选,虚拟线程 更是在 Java8 以后 LTS 版本中最大的变革,也是并发编程的革命。
在微服务架构中,选择 OpenFeign 还是 RPC(如 Dubbo、gRPC),本质上是在选择 “基于 HTTP 的 REST 调用” 与 “基于二进制协议的远程调用”,这取决于你的业务场景、性能要求和技术栈,主要从以下几个维度做出思考:
总体来说,选择适合自己团队技术栈的框架非常重要。如果是新项目,且对性能没有变态的要求,建议首选 OpenFeign,因为它的开发体验最好;如果你是高并发核心系统(如电商、金融),建议在内部服务间使用 Dubbo 或 gRPC,而在最外层网关使用 HTTP 对外暴露。即:对外 HTTP,对内 RPC。
当微服务体系确认以后,需要搭建高可用的注册中心、配置中心,同时 API 网关与负载均衡都是要处理的,同时结合业务场景,确认是否搭建统一认证中心。
当微服务体系确认以后,需要搭建 “微服务的基石” ———— 注册中心与配置中心,同时解决流量入口与安全问题。
注册中心与配置中心的选型
在 Spring Cloud Alibaba 体系下,肯定首选 Nacos,它集成了服务发现(注册中心)和配置管理(配置中心)两大核心功能,且支持 AP/CP 切换,满足金融级一致性要求。同时为了保障高可用,必须采用 集群模式 部署,并挂载独立的 MySQL 数据库以保证配置数据的持久化。
API 网关与统一认证
肯定选择 Spring Cloud Gateway,它是基于 Netty 的非阻塞网关,由 Spring Cloud 提供的官方网关,性能远超 Zuul。负责路由转发、限流、熔断以及跨域处理。
实现统一认证中心,可以结合 OAuth2.1 与 JWT,推荐使用 Sa-Token 搭建授权中心,在 Gateway 网关层进行Token 的解析与验签,实现无状态的认证授权,避免下游服务重复校验。
客户端负载均衡
在网关层进行客户端负载均衡,需要集成 Spring Cloud LoadBalancer(Ribbon 的替代者),配合 Nacos 的权重配置,实现灰度流量的初步控制。
在确定了“路”怎么修之后,我们要确定“房子”怎么盖。上面属于 系统架构的设计,接下来我们要确认 业务架构的设计。首先需要对自己的业务场景进行分析和规划,确认服务是如何分层的,是通过网关去中心化的分层,还是设置聚合层有中心化的处理
例如业务架构图:

接下来要对架构模式抉择:MVC vs DDD
传统 MVC 分层:对于初创业务或简单的 CRUD 场景,采用经典的 Controller -> Service -> Repository 分层。优点是上手快,开发效率高。
而 DDD 领域驱动设计:当业务逻辑极其复杂(如电商交易、金融风控)时,引入 DDD 思想,整体划分为 展现层 -> 应用层 -> 领域层 -> 基础设施层。
对于一些中间件不仅要“有”,还要“稳”和“快”,结合业务场景进行选型并部署。
为什么在上述流程完成后才开始制定流程规范呢?主要还是具体的场景具体分析,大多数企业在初期其实时比较着急的,当产品梳理完需求以后,其实就可以进入开发阶段了,而我们的一些流程规范,可以慢慢的进行完善,所以优先级并不高。在接下来的过程中,我们需要制定一些 开发流程,项目流程,发布流程,监控告警流程,代码规范等等;
工欲善其事,必先利其器。利用 AI 提升人效,是现代架构师必须考虑的降本增效手段。
主流AI编程工具对比
| 对比维度 | 字节跳动 Trae | 腾讯 CodeBuddy (ima) | 阿里 Qoder / 通义灵码 | Cursor | Claude Code |
|---|---|---|---|---|---|
| 核心形态 | AI原生IDE (深度定制VS Code) | AI一体化开发工作台 / 知识工作台 | AI编程平台 (集成于IDE) & 命令行工具 | 以AI为核心的代码编辑器 (基于VS Code) | 命令行(CLI)智能体 |
| 核心模型 | 支持多模型 (国际版: Claude, GPT-4o等;国内版: 豆包、DeepSeek等) | 整合混元、DeepSeek等模型 | 基于自研 通义灵码 / Qwen3-Coder 模型 | 支持多模型,允许自定义API密钥 | 基于Anthropic Claude 系列模型 |
| 独特优势/杀手锏 | “Builder/Solo模式”:从需求到部署的一站式项目构建;强大的代码补全能力。 | 全流程一体化:强调“对话即编程”,集成产品设计、前后端开发、部署;对微信生态开发支持好。 | “Quest任务模式”:AI自主拆解并完成复杂开发任务;仓库级理解与重构能力强。 | 行业标杆的交互体验:预测性代码补全、多文件编辑流畅;智能体编码模式高效。 | 顶级的逻辑推理与连贯性:擅长处理超长上下文、跨多文件的复杂重构,自动化程度高。 |
| 典型适用场景 | 快速启动新项目、全栈开发、日常编码提效。 | 快速原型验证、全链路开发(尤其小程序)、团队非技术角色参与。 | 大型项目重构、遗留系统现代化、根据模糊需求自动生成完整应用。 | 日常编码辅助、中小规模代码库的理解与修改、追求流畅的AI编程体验。 | 大型代码库的重构、添加跨模块功能、自动生成测试和文档等“脏活累活”。 |
| 目标用户 | 从个人开发者到企业团队,追求高集成度和免费使用的用户。 | 独立开发者、产品/设计等非技术角色、微信生态开发者。 | 企业级开发者、面临复杂工程问题和架构任务的团队。 | 广泛的专业开发者,尤其是Cursor交互模式的爱好者。 | 资深开发者、技术负责人,习惯命令行且需要处理复杂工程任务。 |
| 价格策略 (参考) | 目前有免费额度,处于市场拓展期。 | 个人版有免费方案;企业版按需订阅。 | 提供免费额度及API按量计费。 | 免费版有次数限制,专业版订阅制 (约20美元/月)。 | 通常需订阅Claude Pro/Team,或通过API按Token计费。 |
接下来我们要告别“人肉运维”,实现“一键发布”。
Jenkins:虽然老旧但插件生态极其丰富,适合自定义复杂的构建逻辑。
GitLab CI / GitHub Actions:如果使用 Gitea 或 GitLab,内置的 CI/CD 功能已经足够强大,配置更简单(YAML 驱动)。
Docker:将应用及其依赖打包成镜像,保证“构建一次,到处运行”。
Kubernetes (K8s):当服务数量超过 20 个时,必须引入 K8s 进行容器编排,管理服务的生命周期、自动扩缩容(HPA)。
工具:推荐引入开源的组件 AutoMeter 进行接口自动化和性能测试,项目地址:https://gitee.com/season-fan/autometer-api
流程:在 CI 流程中加入单元测试覆盖率检查(Jacoco),只有覆盖率达标且自动化测试通过,才允许合并到主干。

当处于开发阶段时,我们接下来就该考虑如何搭建监控系统,结合我们的基础设施与中间件的选型,要做到全方位的监控。没有监控的系统就是“盲人摸象”。

当测试执行与产品验收完成以后,就需要考虑我们生产环境的准备了,结合业务场景,去分析系统支撑的QPS,如何搭建可以支撑此QPS的生产环境,同时分析系统的瓶颈,以及如何解决瓶颈问题。还有一些就是补偿方案,兜底方案等考虑。
在上线前首先摸底系统的最大承载能力,进行全链路压测。全链路压测(Full-Link Stress Testing)是保障系统高可用性的关键手段,目前主流的开源全链路压测工具主要分为两类:一类是基于 流量录制与回放(无侵入),另一类是 基于代码/脚本编写(有侵入或半侵入)。
Takin(塔金)—— 生产环境全链路压测标杆
这是目前国内非常成熟的一款开源全链路压测平台,特别适合复杂的微服务架构。
核心特点:无代码侵入。它采用 Agent 探针技术,不需要修改业务代码即可接入。
核心能力:
Goreplay(GoReplay)—— 流量复制与重放神器
如果你希望最大程度还原真实用户场景,Goreplay 是一个极佳的选择。
核心特点:无侵入式流量捕获。它工作在网络层面(基于 tcpdump 原理),直接监听服务器网卡流量。
核心能力:
Apache JMeter —— 传统压测的“瑞士军刀”
虽然它不是专门为“全链路”而生,但它是目前应用最广泛的开源压测工具,通过扩展可以实现全链路压测。
核心特点:纯 Java 开发,插件生态极其丰富。
核心能力:
SkyWalking + Cyborg Flow —— 基于 APM 的压测方案
这是一种结合了监控与压测的开源方案。
核心特点:利用 Apache SkyWalking 的生态,通过插件机制实现压测流量的识别与隔离。
核心能力:
通过以上工具进行全链路压测,模拟大促流量(如 10 倍日常流量),验证数据库连接池、Redis 连接数、线程池等核心资源是否成为瓶颈。
在 IDC 或云上使用 Nginx 或 LVS 作为入口负载均衡器,采用 一致性 Hash 或 加权轮询 策略。
Spring Cloud Gateway 配合 Nacos 实现动态的实例负载。
读写分离,使用 ShardingSphere-Proxy 或中间件实现读写路由。
针对与一些静态资源(图片、CSS、JS、视频),我们做出以下策略:
通过以上从工具选型到高可用部署的完整闭环,一个具备高并发处理能力、可扩展、易维护的现代化微服务架构地基就打好了。
本文作者:柳始恭
本文链接:
版权声明:本博客所有文章除特别声明外,均采用 BY-NC-SA 许可协议。转载请注明出处!