3 次尝试使用 springcloud 技术重构项目失败,暂时得出结论:微服务不行

2019-10-18 14:35:38 +08:00
 echofather

结论如下: 1 没有充分的解耦,项目与项目之间还是高度耦合 2 学习配置 springcloud 超级麻烦 3 调试根本没法调试,都不知道走到哪去了 4interface 要作为公共的项目单独维护 5 整体运维超级麻烦,需要配置各种维护的中间件 6 嵌入式的微服务语言不兼容 7 最关键的是:分布式事务根本就是浪费资源,性能根本没有单机来的快

9901 次点击
所在节点    程序员
86 条回复
HangoX
2019-10-18 19:11:05 +08:00
楼主一个人玩啥,人家都是好几百人的团队的,然后每个小组负责不同业务,以前那种开发方式压根没法开发,这样才分开来,性能肯定有下降,但是开发效率上来了
CODEWEA
2019-10-18 20:36:32 +08:00
微服务 服务的是团队,不是性能,微服务是有额外的资源消耗的,非大公司大流量,别瞎搞花里胡哨的,没用。
yidinghe
2019-10-18 21:13:44 +08:00
微服务的人力成本非常高的,解耦的代价就是代码量增加好几倍,业务模型复杂好几倍。
lihongjie0209
2019-10-18 21:16:12 +08:00
@reus #22 因为 99%的公司不如谷歌
nekoyaki
2019-10-18 21:42:12 +08:00
3 次尝试使用导弹打蚊子失败,暂时得出结论:制导兵器不行。
hantsy
2019-10-18 21:47:37 +08:00
1. 在你不懂领域建模,搞不清自己项目需求的 Bounded Context 的时候,还是老实做好基本的东西,把业务逻辑先清理,这比什么都重要。

2. 微服务不仅是应用程序逻辑上细分,团队组织结构也要随之变化。

3. 微服务实施中 DevOps 是一等公民,如果在 Infrastructure 上不能做到自动化,不写测试,不做 CI、CD,还是算了吧。这个我了解过国内所谓在实施微服务的,基本很少去做,靠人肉运维还是算了吧,你永远不是微服务。

4. 微服务为容器而生,Spring Cloud 最大问题就是把微服务一些运维相关的东西耦合到应用之一,会导致写测试非常不方便。在 Spring Cloud 刚出来的时候,那时只有 Netflix 那一套,一个项目 Dropwizard 迁移过来,做了大量的 POC,最终我们只采用了 Spring Cloud 的日志跟踪,其他全部用容器( Service Discovery, Load Balance 等)实现。

如果对微服务的一些模式有一定认知,你会发现用什么语言框架去实现都不是问题。当你可以驾驭微服务,完全可以混合使用多种语言,架框去实现。理想情况下,使用微服务可以发挥团队所有人员的天分,开发人员(一个小团队)完全可以用自己的擅长的技术去实现( micro ) service,把产品做到极致。

你以为用了 Spring Cloud 就是微服务。
hantsy
2019-10-18 21:49:58 +08:00
@yidinghe 这个没错,天下没有免费的午餐。马大叔文章也明确建议从单体应用开始,积累领域建模经验,为将来可能的微服务转形准备。
Cbdy
2019-10-18 22:01:30 +08:00
做系统设计要实事求是,理论联系实际。切忌本本主义,教条主义。
luozic
2019-10-18 23:58:27 +08:00
结合自己实际情况做技术,再好的东西,暂时用不了就是用不了。 并且微服务也不是适合所有公司的“银弹”。
zhazi
2019-10-19 00:14:55 +08:00
多读书,先学 oop,熟练后然后就自己能整理出来领域上下文了。
用自然语言描述清楚你的业务,然后区分出业务名词。
思考业务名词是不是应该建模。
不要去考虑什么微服务。
每个业务名词都清晰了,对象也就丰满了。
用贫血模型永远都是 service 里的大泥球。
reus
2019-10-19 00:24:54 +08:00
@lihongjie0209 为什么不做那 1%呢?不想上进又何必工作。
vjnjc
2019-10-19 00:31:36 +08:00
不知道你们团队多少人,之前我们 5 个人的情况也调研过,发现提升不大。
shanlan
2019-10-19 01:01:38 +08:00
看大家这么一说,我觉得我们公司的微服务可能玩不起来了。
xuanbg
2019-10-19 09:06:41 +08:00
不客气地说,大部分程序员连方法 /类都分不好,只会写长长的、纠缠在一起的面条代码。不管什么业务,都是三层一把梭,哪有什么模块划分。连划分模块的能力都没有,你能指望他搞好微服务?
v2orz
2019-10-19 09:11:52 +08:00
小公司小业务量就别用呗,当你业务大了之后你自然就知道需要用了
wd1196554643
2019-10-19 09:12:42 +08:00
小公司没必要,没有复杂的业务没必要上微服务,单体的应用可以解决没必要搞复杂
lihongjie0209
2019-10-19 09:42:39 +08:00
@reus #51
首先, 客户和业务没这需求,作为开发你怎么办
其次,在最理想的情况下, 你决定成为那 1%的开发者, 你跳槽到谷歌之类的大公司,然后呢,所有人都有着理想情况吗?


只要这个世界还在运行,那么就会注定有 99%的一般需求的项目和 1%的极端需求的项目,开发者也是这样。不能说你是 1%的那波人就认为 99%的人不努力。
jwenjian
2019-10-19 10:04:36 +08:00
nginx 后面挂几个单体 springboot 应用 实在撑不住了再一点一点拆。
reus
2019-10-19 10:12:36 +08:00
@lihongjie0209 那就是人的问题,不是“微服务”的问题。
cyheng
2019-10-19 10:20:30 +08:00
楼主深知钓鱼的是技巧,我估计它如果老老实实问他的问题估计没有几个人回答

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

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

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

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

© 2021 V2EX