难道所有项目都要滥用中间件吗?

2023-07-28 16:32:51 +08:00
 csw3983931

首先本人是一个 Java 程序员,Java 生态还是比较周全的,像注册中心,配置中心,日志收集,调用链追踪,分库分表等等。

但是我心中突然有一个疑问,为什么一定要用上这些东西,真的有必要吗?比如说注册中心,没有一定的用户量,或者不是容器化,搞什么注册中心? nginx 转发不是根据高效?还有配置中心?又不是几百上千个应用,才几个应用上什么配置中心。

我发现很多小的创业公司,上来就是搞什么微服务,真的有必要?难度不是徒增资源的成本和维护成本?

我觉得任何中间件都是对应困境中而产物,如果没有遇到这些困境,为了用而用,是不是纯粹的在炫技?

6855 次点击
所在节点    程序员
65 条回复
jjjjjokerrrr
2023-07-28 17:00:18 +08:00
感觉还是得分情况看:
1. 你认为这个业务之后用的人会很多

2. 你认为这个业务之后会噶了
jjjjjokerrrr
2023-07-28 17:01:22 +08:00
第一种情况,考虑后续服务扩展是有必要的,第二种情况是不是不做了比较好 xD
csw3983931
2023-07-28 17:11:18 +08:00
@jjjjjokerrrr 你说的情况 1 ,我觉得用的人会很多,这个跟单机服务,然后模块的拆分并不影响吧。
我觉得大多数初创公司都是人手不住,要大量需求迭代,微服务只会让发版本和处理业务常见更加复杂和麻烦,当然现在 Java 程序员可以说基本都会一些中间件。但是个人觉得越少越好。
lisxour
2023-07-28 17:16:10 +08:00
你说的是对的,不管什么量级,总有无脑去搞微服务的
redial39
2023-07-28 17:17:13 +08:00
只要你确定当业务越来越发展以后,你的项目越来越多以后,运维天天来找你麻烦给你小鞋穿以后不会有 "当时应该上配置中心,现在不至于这么狼狈" 的决心的话..你就可以一个 jar 走天下
coderxy
2023-07-28 17:26:25 +08:00
你说的有一定道理,其实如果只是要求够用的话,一台单机跑个 jar 就可以对外提供服务了。
但是很多程序员是按照自己的习惯来的,很多原来一直用微服务体系用惯了,你突然让它搞单机应用,他不一定能快速适应。
所以,只要开发者认为自己是在以较低的成本快速展开业务就是最正确的方案。 有没有微服务都可以是最正确的方案。
wangxiaoaer
2023-07-28 17:27:07 +08:00
是的,有一点过度设计的感觉了。 之前看过一个帖子说到自己 04 年左右开发的一个 Java Web 应用,打包成 jar 格式,这么多年过去了,jre 环境满足的话可以分分钟部署上去就欢快的跑起来了。

现在随随便便搞个什么应用不搞几个微服务都跟瘫痪了一样,更有甚者 p 大点应用还他么上 k8s 的。
wu67
2023-07-28 17:29:05 +08:00
每次说到业务发展到什么量级我就想笑.
大部分人写的项目, 可能巅峰时期也就千把人同时访问, 甚至很多是个位数访问, 讲什么微服务呢...
极端一点, 可能很多公司倒闭了, 这个项目的同时访问量也上不了几百人.
更极端一点, 可能没几年, 因为技术栈老旧难以维护, 又招了一批人来开一个新的项目推倒重来了

题外话, v 站这摸鱼大站, 网站底下的在线人数, 此刻是 4833
kamalei
2023-07-28 17:32:37 +08:00
不用,你下一份工作怎么吹。
csw3983931
2023-07-28 17:58:25 +08:00
@redial39 我觉得项目越来越多,这是一个因素,到达一定量后必然会增加人手,然后服务拆分,然后再考虑是否引进微服务的中间件。
csw3983931
2023-07-28 18:00:24 +08:00
@coderxy 我觉得一直没有使用过微服务的程序员去写微服务的项目会有压力,有微服务经验的程序员,写单体应该是有一种如释重负,很轻松的感觉,因为考虑的场景少了,比如分布式事务,任务调度中心,一致性等等
csw3983931
2023-07-28 18:02:21 +08:00
@wangxiaoaer 是的,依赖的太多中间件,导致重新部署一套,无论是成本还是资源都是要 copy 一份,而且一旦漏了一个环节,就可能无法正常运行。属实感觉微服务要慎重
csw3983931
2023-07-28 18:04:46 +08:00
@wu67 是的,我感觉中国大多数初创企业都是这样的现状。而且单体服务优化的好,机器和资源跟上,几十万的用户量还是轻轻松松的。
coderxy
2023-07-28 18:06:59 +08:00
@csw3983931 很多业务开发,只是习惯与在某个框架下开发。 比如习惯了使用(甚至只使用过) spring cloud 的框架,然后各种组件都是用现成的。 你让他去写单机,他不一定能很快适应。

微服务不是啥高阶功法,只是一种技术方案而已,过度仰视或鄙视一种技术方案,都是不合理的心态。 只有当一个技术人员,可以游刃有余的使用任何一种技术方案完成业务时,他才能真正的根据业务需求,选择最合适的技术方案。

不然假如你不会微服务,然后跟公司其它同事说我们不需要微服务巴拉巴拉。 其它人嘴上不说,心里肯定吐槽。
lambdaq
2023-07-28 18:11:18 +08:00
。。。。。php python ruby 就是这样从当年 J2EE 抢的市场份额啊。。。你以为呢。。。。。
pengtdyd
2023-07-28 18:17:19 +08:00
因为面试的要求,面试的时候向面试官展示自己华丽的造火箭能力能更容易的从应聘者中脱颖而出。如果不这么做,其实是会在就业市场中被淘汰。
wu00
2023-07-28 18:19:32 +08:00
都说缺点,我来说优点
- 拿公司项目练手
- 降低解释成本,避免给老板、同事解释为什么咱们没有用这些专业的、高大上的、牛逼的新技术
zsdroid
2023-07-28 18:57:04 +08:00
如果项目中不用,面试问到了一问三不知怎么办?
tomatocici2333
2023-07-28 20:12:47 +08:00
没办法 现在你的项目不是分布式,你都要改成分布式的...不然简历这关都过不了 hr
paradoxs
2023-07-28 20:17:50 +08:00
这些东西很水,没一个稳定的发展方向。 所以现在程序员的就业环境才显得这么的难。 因为没有东西可以量化你的能力。

这是一个专为移动设备优化的页面(即为了让你能够在 Google 搜索结果里秒开这个页面),如果你希望参与 V2EX 社区的讨论,你可以继续到 V2EX 上打开本讨论主题的完整版本。

https://www.v2ex.com/t/960595

V2EX 是创意工作者们的社区,是一个分享自己正在做的有趣事物、交流想法,可以遇见新朋友甚至新机会的地方。

V2EX is a community of developers, designers and creative people.

© 2021 V2EX