我是个前端,想学习下后端以及 devops ,懂点 docker ,懂点 linux ,自己写过 golang 和 nodejs 。自己搞的都是单体应用。
但最近公司有个项目(项目不大)使用了 Java 技术栈,也就是 spring boot 那一套,spring cloud, nacos, rabbitmq/kafuka, redis/pg/es 。
其中 redis/pg/es 是和语言无关的,不管是 Java, golang 还是 rust 都是基础设施。其中还包括一些没列出来的 minio/grafana 看板,预警通知等功能。
但关于微服务架构(nacos),有点陌生,没学过 Java ,所以想请教下论坛中的大佬,如果换成其他的语言,比如 golang node 等,是不是没有这种架构?或者说不流行这种架构?只有 spring boot 这种的才流行微服务这一套?
比如使用 serverless 的 cf worker ,把各种功能分散到各个 edge 节点上。
或者直接使用 k8s 来做具体的运维(项目够大/用户够多)。
我写的有点乱,不知道大佬们是否能 get 到我的疑惑。
1
Ipsum 1 天前 via Android
nacos 是注册中心是微服务的一部分。b 站多学习学习再来?
|
2
Kinnikuman OP @Ipsum 大致了解这些,java 项目中多个业务切分开,然后使用 nacos 来治理这些 services ,它会做 gateway 和健康检查等功能。不想细致的学习这些,所以就来问问嘛。
|
3
lifei6671 1 天前
微服务也是和语言无关的。nacos 是配置中心,可以实现服务注册和发现,类似的还是古老的 Zookeeper ,现代化的 Etcd ,consul 等。这都是和语言无关的。只要是微服务就得有配套的服务注册和发现机制。
cf 的 worker 本质上不是微服务呀,只是边缘节点的一个计算单元,不需要服务发现机制。 k8s 的数据源就是储存在 etcd 上,通过 coredns 做服务到 ip 的解析。一般情况下使用 k8s 就可以实现微服务架构了,如果想要深度的做服务治理,可以直接上 Service Mesh 。 |
4
mymx2 1 天前
微服务嘛,我们自嗨的东西。
你是个前端。就按你理解的前后端分离(边界清楚了),数据和视图分离(耦合降低了)。 你觉得应该这么干的时候就可以上微服务了。 |
5
Need4more 1 天前 via iPhone
微服务已死。你以后想转全栈的话后端也不要选 Java 。Java 是企业级语言,我下班了再也不想碰它,整个语言太重了,叠床架屋,不适合 AI 编程。
|
6
liumao 1 天前 小项目用微服务就是浪费资源
|
7
nansshan 1 天前
java 语言用 spring 就是封装的太好了,所有的轮子都造好了,很多公司都是为了微服务而微服务。大部分项目其实无需微服务,只需要单体就可以,如果会 go 那就继续研究 go 比 java 未来应用场景会多一些
|
8
SethShi 1 天前
微服务编程语言级别的: Java SpringBoot, 其它语言都有对应的微服务框架(核心就是服务发现, 注册, 熔断等等 )
以下这些都是因为服务多了有对应的管理方案, 和语言无关 注册发现需要: Nacos / etcd 等服务 等同于单体服务中代码中调用某个内部服务的域名 ip 等 配置中心需要: Nacos 等同于单体服务中的配置文件 小项目用 K8S 也无所谓 |
9
sentinelK 1 天前
微服务是一种理念。不是一个技术选型或技术选型组合。
nacos 只是阿里给微服务做的一个平台工具而已。你可以用,也可以不用。楼上举出了很多替代方案和其他的实现方式。 |
10
xiaomushen 1 天前
别微服务了,真的。绝大多数系统,没必要微服务。
纯粹是后端架构师自嗨和挖坑 |
11
lasuar 1 天前 提示词:“帮我介绍单体架构/SOA 架构/微服务架构/服务网格架构/无服务架构,它们逐级演进的故事”。
|
12
lasuar 1 天前
serverless 严格来说不算是一种架构,只是处理某些狭窄场景的方案。微服务的下一步演进是服务网格。
当然,任何架构都是和语言无关,术与道的关系。 |
14
nananqujava 1 天前
微服务就是坑
|
15
aarontian 1 天前
微服务跟语言无关,java 用得到可以了解一下,不学也不会错过啥,很多资深后端也不一定会 java
|
16
lujiaxing 1 天前 微服务并不限制编程语言. 你用 Java 可以微服务, 用 C# 可以微服务, 用 Golang 也可以微服务. 微服务不绑定某个编程语言, 甚至可以 A 模块用 C# 开发, B 模块用 Kotlin 开发, 没有任何问题. 随你便. 这也就是为什么好多企业招聘开发工程师时候不会说招聘 "高级 Java 开发工程师", 而是说招聘 "后端开发工程师". 因为他们是允许后端用不同的编程语言开发的, 反正都是微服务, 只要按时把活儿给老子交出来你用 Java 用 Golang 随你大小便. 反正交付出来的是 tar 包, 运行起来是 CI/CD 推到 Docker 集群.
但是在 2026 年一月份的当下, 微服务正在从 "通用方案" 回归到 "特定场景方案". 无他, 微服务架构对于很多中小型企业来说没有任何意义. 微服务架构解决的是极端复杂的产品或者巨大团队的开发协作问题. 比如一些系统复杂得如蛛网一般, 新人上手的时候光理解既有的代码库可能就需要一两个月的时间. 但是如果拆分为微服务, 每个小模块都是很简单的逻辑. 模块之间通过标准的 RPC 接口通信. 负责维护的人只需要理解这一小模块的逻辑即可, 无论是后期离职交接还是新人上手都可以相对快. 但是微服务的代价也是非常昂贵的. 有一句话叫 "程序复杂性从来都不会消失, 只会转移". 微服务把单体里 "开发时的耦合复杂性", 转移成了 "运行时的维护的复杂性", 但从未真正地消解掉过这些复杂性. 原本大单体那种东西只要简单地把程序集往服务器上一丢了事. 有问题, 有问题看日志啊! 日志连具体哪行代码出的问题都能给你记下来. 但是一旦上了微服务, 就必然要考虑每次上线时候的模块依赖问题, 以及部署、监控、日志、扩容问题, 必须引入服务注册发现 (Nacos/Eureka)、链路追踪 (SkyWalking)、配置中心 (Apollo)、可观测性 (OpenTelementry) 等各种各样的组件. 否则一旦出现生产环境问题完全就抓瞎. 而这些东西就必然涉及到额外的成本. 而且据我所知, 这些东西在各种云服务上, **价格都不低**. 而在 2026 年中国大陆经济整体自由落体的大环境下, 基本上除了大厂以及外企以外几乎没有哪个企业乐意把钱花在这种毫无意义的地方. 所以你可以看到前些年大搞微服务, 云原生的各种厂正在大规模下云, 逐渐回归 "单体 + 分布式部署" 的模式. 毕竟对于大多数中厂小厂来说, 他们的产品一年产生的利润都未必能抵消支撑微服务所需要的成本. 一个日均 PV 连十万都不到, 下线 10 分钟收不到一个投诉电话的产品, 整那么多没用的干啥? 咱做的是商业产品, 又不是艺术品. 而大厂们虽然确实依然在推行微服务/云原生, 但是目前来说, 大厂的门槛已经高到天上去了. 基本你可以不考虑大厂. 而外企目前由于中美冲突, 大部分外企都锁 HC 了, 随时准备裁撤中国研发中心 (如 Microsoft, Marvell). 所以这节骨眼去学研究微服务, 学 DevOps 可以说是不太明智了. 更何况剩下还在头铁搞微服务的中厂小厂, 现在也更倾向于招聘有实际落地项目的 DevOps 工程师. 你现在才学, 学完了根本没有机会让你在简历上添上一个微服务架构的项目经历, 真需要 DevOps 岗位的企业不清楚你对 DevOps 的理解程度大概连面试都不会给你. 总之: 不建议为了转岗而空学 DevOps. 但是即便不去研究什么微服务, RabbitMQ, 容器化跟 Kubernetes 也还是有必要深入研究的. 这些组件现在的重要程度跟当年的 IIS, Tomcat 一样重要. 是现代互联网开发的基础设施. 即便单体架构也用得到. |
17
lujiaxing 1 天前
而如果你这个项目业务逻辑没那么复杂, 你团队的人数也没有百人之众, 完全没必要上微服务. 纯粹是给自己找不痛快.
|
18
franklinyu 23 小时 56 分钟前 via iPhone
一句話,選擇微服務是需要理由的,不選擇微服務不需要理由。除非做過調研,默認選擇應該是庫,不是微服務
|
19
superhot 19 小时 35 分钟前
推荐看看周志明老师的《凤凰架构》,你的疑惑在里面有解释:
https://icyfenix.cn/ |
20
kifile 18 小时 20 分钟前
一句话解释一下为什么选型用微服务:
微服务帮你包装了远程调用通信协议和内部服务发现能力,你可以把微服务当成你本地的一个接口方法直接去调用;所以当单体服务拆分时,或者多站点部署时,可以简单快速的完成服务重用,而不需要自己通过 HTTP 或者其他方式去重写一套内部交互逻辑。 |
21
dongdong12345 18 小时 1 分钟前
如果换成其他语言,能解决拆分后的各种各样问题,那也没什么问题,但拆分后产生的问题太多了,如果有现成的工具或组件让你使用倒是还好,只是有点学习成本。但如果没有现成的,你自己怎么解决呢?
spring cloud alibaba 这套已经被很多公司用于生产环境了,各种问题都有对应的组件或工具帮你解决,已经可以满足大部分企业了。 |
22
FrankAdler 13 小时 59 分钟前
这些东西还是去问问 ai 吧,随便找个哪怕文心一言可能都比发这个帖子强
|
23
Kirkcong 12 小时 58 分钟前
对于 k8s 和 docker ,发展过程大致是这样的:
1. 起初,dev 编写代码,编译成可执行程序传给 ops ,然后 ops 手动将程序 scp 上传至 Linux 服务器,并且安装所需的各种依赖环境,比如 jdk 1.7, nodejs 14 。对于一台新上线的机器,程序要部署上去还得考虑什么运行用户组、文件夹权限等问题。更恶心的在于,app A 的运行依赖 jdk1.7,app B 依赖 jdk 1.8,两者有冲突,得想办法解冲突。 2. 后来人们想,我们需要一种方式,把某个 app 和它运行所需要的环境全部打包起来,和外部隔离,这样不管里面要 jdk 1.7 还是 1.8,都能跑在任意 linux 环境中。于是,docker 诞生了,他不但做到了环境的隔离,还实现了环境的精简,——如果某个 app 只依赖 jdk1.7,那么这个 image 中只有 jdk1.7 这个依赖,其他什么都没有。 3. docker 发展到一定程度后人们发现,很多时候一套系统会依赖多个 container,比如前端一个容器,后端一个容器,还有个 mysql 数据库。此时,docker compose 诞生了,他可以让你在机器内部虚空创建一个网络,将这三个容器放在同一内部网络下连接在一起,运行时只需要 docker compose up 就可以启动一组 app. 4. 当 docker compose 里面的容器足够多且功能完善,比如,有的提供存储服务,有的提供监控服务,有的提供网络服务。那么此时,compose 的这些 app 内部,形成了一个功能完善的自治系统,内部和外部完全没关系。但遇到了另一个麻烦,这些儿容器太多了,compose 已经乱如麻绳了,此时 k8s 出现了。 5. k8s 的内部就是由多个容器为基础,组成的一个独立的自治系统,并且具有高可用、分布式等各种特点。需要 nfs ? pod 来提供;需要 metrics ? sidecar 进去监控每一个 pod ;你可以通过 yaml 文件定义各种配置,比如哪个 app 需要运行在所有节点上,比如 prometheus ;也可以定义 app A 和 B 跑在不同节点上,比如数据服务和业务;之前在 compose 的各种环境变量都可以放入 configmap 的一种 yaml 里,从这里加载进去。需要 ssl 证书也可以起个 k8s 版的 cerbot,给内部所有的 app 共享这个证书。 --- 对于 devops: devops 是用来解决传统开发模式上 dev 和运维协作问题的,比如 dev 开发完代码,本地编译,部署到生产环境。devops 将这一系列操作用 pipeline 连接起来,标准化的同时解决了安全性问题(比如谁手欠改错环境了。。。) 对于上面的 k8s 阶段,意味着会产生大量的 image,这些 image 有些是后端,有些是中间件,有些是前端。一个完整的对外服务可能后面有十来个微服务来提供的。此时如果再按照传统模式手动编译、制作 image 、上传到 harbor (自建的 docker hub )太麻烦了,根本来不及。 此时 pipeline 派上用场了,比如 jenkins ,和 github 对接,当某个 pr 合并后,自动触发 jenkins pipeline 启动这个流程,他会按照你定义的流程去打包并分发这个 image. devops 就是去用来实现这个流程的。 |
24
firefox12 12 小时 2 分钟前
我觉得你们写的 他肯定看不懂。
简单地说 有一个需求, 你需要用 20 个后端步骤来完成它, 你可以把 20 个步骤写在一个里面,但是太大了,所以拆成 20 个微服务,因为拆得小了 好维护。 微服务之间的通信其实是协议 和用什么语言无关。 而 nacos 只是管理微服务关系的一个基础服务, 也就是让这 20 个微服务 要知道去哪里找剩下的服务。 你完全可以用 golang 来实现 nacos 和取代 nacos, 但是这个也只是限于理论,实际没什么意义。 全套用 java 吧。 |
25
kxg3030 11 小时 10 分钟前
不建议微服务 这都 2026 了 一定要用可以使用 k8s 的 也可以自己搭建 注册中心( consul/zookeeper/nacos ) 配置中心( apollo )服务之间用 http 或 tcp 都行 再加个链路( jaeger ) 再加个分布式事务( dtm ) 再加个 elk 面板 好了 项目死了 重新找工作吧
|
26
Cruzz 9 小时 44 分钟前
自己搭一个就理解了,要不都是纸上谈兵
|