1 seakingii 2023-03-12 15:06:30 +08:00 微服务,又不是只运行一个实例,会运行 N 多个实例,挂了一个,其它的先撑住,挂掉的自动修复 微服务需要一整套的工具来辅助服务治理的,包括部署,监控等等 最大的好处,在我看来是职责单一,以及由职责单一带来的附加好处,比如小团队,易扩展,多语言等等 |
![]() | 2 hyuka 2023-03-12 15:08:34 +08:00 via iPhone 1.如果是支付挂了,这种应该只是支付不了其它不影响 2.微服务单个服务出问题只需要解决这一个服务的问题,重启回退修 bug,整个服务分成若干服务后肯定比回退重启整个服务要好 3.不同人负责不同微服务,不用关注整个项目的细节,只需关注自己负责的部分的细节以及相关交互 大概想到这些。 工作中,尤其线上的服务都是=(不让随便动的,服务不划分全扔一块,出问题了重启或者部署整个大服务,想想就头大。改动越小越好。 |
![]() | 4 hyuka 2023-03-12 15:11:03 +08:00 via iPhone 服务挂了,也是 多个实例,单个挂了其他可以先撑住,要是因为请求多还可以通过添加实例的方式暂时处理 |
![]() | 5 lhx2008 2023-03-12 15:13:59 +08:00 从开发角度来说,一两个人开发只需要单体,十个人开发就要微服务了,要不然怎么调怎么发版 |
![]() | 6 hyuka 2023-03-12 15:14:00 +08:00 via iPhone |
![]() | 7 chloerei 2023-03-12 15:15:04 +08:00 可以增加工作岗位。 |
![]() | 8 qiyuey 2023-03-12 15:18:19 +08:00 领域隔离,控制整体的熵,避免软件危机 |
![]() | 9 hhjswf 2023-03-12 15:20:49 +08:00 via Android 重点是微。相比单体,业务模块粒度更小,拓展更方便。比如秒杀这样负载比较大的,可以多部署几个,负载小的少部署几个 |
![]() | 10 nullpoint007 2023-03-12 15:21:50 +08:00 微服务化应对海量并发的, 你说的单点故障也可以通过微服务的多副本解决, 微服务部署的话也不用担心, 现在的 CICD 技术已经很多开源成熟系统 |
13 leonard916 2023-03-12 15:23:59 +08:00 微服务是为了高可用提出的,也是因为有些项目过大,维护和启动都很麻烦,而且过于吃资源,不方便扩展等。 |
![]() | 14 sujin190 2023-03-12 15:26:45 +08:00 via Android 真正的大型电商系统,获取商品信息和处理支付就已经 n 个微服务了,然后并不会一起挂,也并不会是同一个部门维护,你说有用没用 |
16 wangxiaoaer 2023-03-12 15:46:15 +08:00 微服务容易走火入魔,瞎捷豹分,不要为了微而微,然后原本事务性质的内容再通过微服务通信绕一圈,给部署带来了很大复杂度,尤其是业务量本身 不大的情况。比如网上很多例子商品、订单、库存等等,这几类量上去了才有分的必要。 而支付、用户体系等本身就是业务相对独立,采用微服务是比较合理的。 |
![]() | 17 kaedea 2023-03-12 16:14:13 +08:00 via Android 一座大山 vs 一堆小山堆叠的大山 |
18 dqzcwxb 2023-03-12 16:22:23 +08:00 分而治之 |
19 AyaseEri 2023-03-12 17:47:03 +08:00 分治之后维护与扩张起来方便啊,而且团队扩张也方便,还能成立更多的开发组,任命更多的组长。 |
![]() | 20 byte10 2023-03-12 18:02:13 +08:00 ![]() 基本概念不扎实: 1 、楼上还有说集群、多实例。 2 、还有说为了 高可用提出的。 分布式服务跟集群多实例 没有必然的关系。高可用方案一般是多实例的方式解决,多实例也可以提升系统的吞吐量。 关于微服务其中一个挂了,并不是整个商城都无法使用的。比如支付服务挂了,那么整个系统就会出现 服务降级,但是你还是可以继续加入购物车,可以继续浏览商品,继续给商品评价等。其实字面意思都是很简单的,语文的阅读理解是一个非常重要的能力,不然很难理解 服务降级是什么意思。 比如:你去饭店,你可以体验饭店 美甲的服务。但是口罩的问题,你只能打包走人,那么整个饭店服务就降级了,没啥特别难搞。 当然微服务的好处还是很多的,楼上很多回答都描述到了。 |
21 dobelee 2023-03-12 18:19:50 +08:00 有没有一种可能,支付服务挂了,还可以搜索和查看商品。 而一座屎山挂了... |
22 v2lf 2023-03-12 18:24:17 +08:00 业务隔离,弹性伸缩 |
23 nvideo 2023-03-12 20:31:59 +08:00 高并发 |
![]() | 24 laravel 2023-03-12 20:44:12 +08:00 挂的概率比起单体程序来如何? |
![]() | 25 ch2 2023-03-12 21:05:49 +08:00 鸡蛋不放在一个篮子里的道理 |
27 tohuer00 2023-03-12 22:06:17 +08:00 ![]() 纠正一个错误观念,微服务不是用来解决高业务量的,是用来解决高业务复杂度的。 |
28 copper20 2023-03-12 22:12:31 +08:00 从开发的角度来说,如果你见过光 bean 就有十几万个,连编译脚本都需要专人维护的大屎山,那微服务存在的必要性应该也不用解释了。 至少你一次吃的是一个小山包,而不是一次得吃一座山脉 |
29 panxiuqing 2023-03-12 22:34:08 +08:00 via Android 是为了解决软件工程的问题。 我觉得服务降级也不是微服务相对单体有明显区别的地方,除非有问题会导致所有实例同时异常且无法重启,但是这种故障对于无状态服务不应发生。 |
![]() | 30 xiaop1ng 2023-03-12 23:45:30 +08:00 说一个我实际工作中的应用场景,将并发要求更高的接口剥离出来为一个单独的微服务,在部署的时候该服务可以部署更多的副本 |
31 yagamil 2023-03-13 03:01:12 +08:00 我的理解是 把系统拆分成一个个的 HTTP API 接口? 之前所呆的企业业务并不是太复杂,而且项目也是一次性的,不会被别人或者其他项目调用。 而参与的开发也就几个人。 没有必要为了微服务而微服务。 |
33 WashFreshFresh 2023-03-13 10:21:42 +08:00 支付挂了,还能查看商品信息,商品信息也挂了,还能查看订单状态喝物流信息。 大致就是这么个意思。 |
34 nothingistrue 2023-03-13 11:17:58 +08:00 微服务下,商品信息挂了就是商品信息挂了,支付挂了就是支付挂了。非微服务下,哪里挂了都是商城挂了。当你的目标是解决问题首先找出那里出了问题(进而解决问题),而不是没有问题首先保证不出问题(为此将锅甩给全员,甚至掩盖问题),的时候,微服务就是有意义的。反之自然无意义。 技术不是脱离于生活的,微服务、敏捷开发、Scrum 、看板、Issue 方式的任务 /缺陷跟踪方式,等等老外传过来的东西,你得结合老外的办事风格,才更容易理解。一个比较经典的就是 ISO9001 质量体系当中的 BUG 数量,你如果不知道老外更看重发现和解决 BUG 的能力,而不是零 BUG 的能力,就很难理解老外为啥会把 BUG 数量当作质量体系的正向指标。 |
35 yc8332 2023-03-13 14:24:03 +08:00 微服务可能对大厂有用。小厂纯纯浪费钱,也没那么多人 |