当前位置:首页 > 科技  > 软件

微服务,其实它也是有很多坑

来源: 责编: 时间:2023-12-01 17:15:07 366观看
导读微服务的好处有好多,易于扩展,发布简单,技术异构,便于重构等等,但今天我们的主题不是说好处,而是我们需要知道微服务同样也会带来痛,我觉得我们更要重视,提出问题,定义问题比解决问题更加的重要。(1)微服务职责划分微服务的难点

微服务的好处有好多,易于扩展,发布简单,技术异构,便于重构等等,但今天我们的主题不是说好处,而是我们需要知道微服务同样也会带来痛,我觉得我们更要重视,提出问题,定义问题比解决问题更加的重要。3rJ28资讯网——每日最新资讯28at.com

3rJ28资讯网——每日最新资讯28at.com

(1)微服务职责划分

微服务的难点在于无法对一些特定职责进行清晰划分,比如这个职责归属于A还是属于B,举例如下:3rJ28资讯网——每日最新资讯28at.com

  • 一个能根据商品ID找出商品信息的接口,将他放在商品服务中,再比如单个用户的所有订单,我们就把他放在订单服务中
  • 业务逻辑服务归属和业务人员的划分可能存在关系,比如每个商品在每个门店的库存应该放在商品服务还是门店服务呢?因为各自门店的商品库存是由各自门店的运营人员管理,最终我们决定把它放在门店系统中。
  • 业务逻辑服务归属还与组织架构可能存在关系,通过康威定律我们很快就能明白

Conway's law is an adage named after computer programmer Melvin Conway, who introduced the idea in 1967. It states that. organizations which design systems ... are constrained to produce designs which are copies of the communication structures of these organizations.3rJ28资讯网——每日最新资讯28at.com

康威是个程序员,他提出:设计系统的组织在设计系统的时候,会设计出基于这些组织的沟通结构的系统。3rJ28资讯网——每日最新资讯28at.com

3rJ28资讯网——每日最新资讯28at.com

上面的例子说明,在现实的场景中,微服务职责划分会受到太多因素的影响。我们需要慎重考虑。3rJ28资讯网——每日最新资讯28at.com

3rJ28资讯网——每日最新资讯28at.com

(2)微服务粒度划分

举例一个新零售系统,刚开始只有登录和信息管理。这些功能放在一个服务就行了,随着加盟商的加入,因为加盟商准入,开店,退出都设计费用问题,因此我们又需要增加财务功能,比如应收、应付、实收、实付,退款,对账等,紧接着又要对加盟商员工管理(员工管理、部门管理、权限管理等)返点、加盟商子门店管理等功能,而此时的加盟商管理系统只有一个服务,你觉得合适吗?3rJ28资讯网——每日最新资讯28at.com

3rJ28资讯网——每日最新资讯28at.com

一般来说,在设计新功能之前,我们会遵循一个大致的原则:根据新的微服务的大小,安排3-4人设计即可。3rJ28资讯网——每日最新资讯28at.com

3rJ28资讯网——每日最新资讯28at.com

在对微服务拆分的时候,我们还需要考虑另外一个因素---绩效。大家都知道,开发人员的绩效很难实现量化,而微服务可谓是一个难得的可量化指标。3rJ28资讯网——每日最新资讯28at.com

虽然我们不能拿微服务数作为KPI,但是开发人员在阐述个人工作量的时候会提及服务数。然后潜意识里就会细化微服务的个数,所以我们需要控制服务数,这种方法也可以作为服务拆分的一个逆向操作。3rJ28资讯网——每日最新资讯28at.com

3rJ28资讯网——每日最新资讯28at.com

3rJ28资讯网——每日最新资讯28at.com

3rJ28资讯网——每日最新资讯28at.com

3rJ28资讯网——每日最新资讯28at.com

(3)没人知道系统整体架构的全貌

不知道你有没有碰到过这种情况:每隔几个月或半年,大领导就会发话让我们汇报下每个部门的微服务数量、公司微服务总数量、每个微服务都用来做什么等情况。因为企业微服务数较多,所以每次给大领导汇报时,都是长长的一条清单。3rJ28资讯网——每日最新资讯28at.com

3rJ28资讯网——每日最新资讯28at.com

在以前的公司,我首先会把公司的整个架构系统全貌搞清楚,之后一旦出现问题,也就容易定位故障点了。可是自从来到这家使用微服务的公司后,我便再也没有这样的冲动了,只要求搞懂自己的一亩三分地就行,如果出现问题临时学习一下相关系统就好了。3rJ28资讯网——每日最新资讯28at.com

3rJ28资讯网——每日最新资讯28at.com

因此,在实际工作中,很难找到这么一个人,他能知道系统整体架构的全貌,这就是微服务的一个痛点。3rJ28资讯网——每日最新资讯28at.com

3rJ28资讯网——每日最新资讯28at.com

3rJ28资讯网——每日最新资讯28at.com

(4)重复代码多

3rJ28资讯网——每日最新资讯28at.com

比如某个团队做了一个日志自动埋点的功能,它能自动记录一些特定方法的调用。但是第一个吃螃蟹的团队使用后,立马报出了一个 JAR 版本冲突问题,自动埋点团队又重新设计了一版埋点的 JAR,并去掉了一些特定 API 的使用,最终 2 个团队终于可以正常使用了。不过呢,第三个使用埋点的 JAR 的团队又汇报了一个 JAR 版本冲突问题,又开始重复了上面的操作。3rJ28资讯网——每日最新资讯28at.com

3rJ28资讯网——每日最新资讯28at.com

后来我们复盘了下,得出结论:重用 JAR 本身没有错,错就错在我们使用的 JAR 版本太多了,必须改变这个局面。3rJ28资讯网——每日最新资讯28at.com

3rJ28资讯网——每日最新资讯28at.com

不过,维护这些小小的重复代码总比统一排期做重构、统一评审 JAR 版本的成本低得多。3rJ28资讯网——每日最新资讯28at.com

3rJ28资讯网——每日最新资讯28at.com

3rJ28资讯网——每日最新资讯28at.com

3rJ28资讯网——每日最新资讯28at.com

(5)分布式事务

分布式事务是微服务永久的痛,事务出错,是哪些回滚,哪些不会滚等等问题。3rJ28资讯网——每日最新资讯28at.com

因此在这种情况下,大部分场景下我们不考虑回滚和重试,只考虑Happy Path,如果报错就记个异常日志,再线下处理。也是So easy!3rJ28资讯网——每日最新资讯28at.com

3rJ28资讯网——每日最新资讯28at.com

(6)耗费更多的服务器资源3rJ28资讯网——每日最新资讯28at.com

有时候为了运维更好的定位问题,我们把服务各自分配到每一个节点上,同样这样就会耗掉很多的服务器。3rJ28资讯网——每日最新资讯28at.com

3rJ28资讯网——每日最新资讯28at.com

3rJ28资讯网——每日最新资讯28at.com

总结:3rJ28资讯网——每日最新资讯28at.com

  1. 微服务的职责划分
  2. 服务的拆分
  3. 没人知道系统的架构全貌
  4. 重复代码多
  5. 分布式事务
  6. 耗费更多的服务器资源

3rJ28资讯网——每日最新资讯28at.com

本文链接:http://www.28at.com/showinfo-26-35884-0.html微服务,其实它也是有很多坑

声明:本网页内容旨在传播知识,若有侵权等问题请及时与本网联系,我们将在第一时间删除处理。邮件:2376512515@qq.com

上一篇: 使用 SpringBoot 实现获取微信运动步数功能

下一篇: SpringBoot扩展点之BeanPostProcessor

标签:
  • 热门焦点
  • MIX Fold3包装盒泄露 新机本月登场

    小米的全新折叠屏旗舰MIX Fold3将于本月发布,近日该机的真机包装盒在网上泄露。从图上来看,新的MIX Fold3包装盒在外观设计方面延续了之前的方案,变化不大,这也是目前小米旗舰
  • 2023年Q2用户偏好榜:12+256G版本成新主流

    3月份的性能榜、性价比榜和好评榜之后,就要轮到2023年的第二季度偏好榜了,上半年的新机潮已经过去,最明显的肯定就是大内存和存储的机型了,另外部分中端机也取消了屏幕塑料支架
  • 六大权益!华为8月服务日开启:手机免费贴膜、维修免人工费

    8月5日消息,一年一度的华为开发者大会2023(Together)日前在松山湖拉开帷幕,与此同时,华为8月服务日也式开启,到店可享六大专属权益。华为用户可在华为商城Ap
  • 0糖0卡0脂 旭日森林仙草乌龙茶优惠:15瓶到手29元

    旭日森林无糖仙草乌龙茶510ml*15瓶平时要卖为79.9元,今日下单领取50元优惠券,到手价为29.9元。产品规格:0糖0卡0脂,添加草本仙草汁,清凉爽口,富含茶多酚,保留
  • 三言两语说透柯里化和反柯里化

    JavaScript中的柯里化(Currying)和反柯里化(Uncurrying)是两种很有用的技术,可以帮助我们写出更加优雅、泛用的函数。本文将首先介绍柯里化和反柯里化的概念、实现原理和应用
  • 使用LLM插件从命令行访问Llama 2

    最近的一个大新闻是Meta AI推出了新的开源授权的大型语言模型Llama 2。这是一项非常重要的进展:Llama 2可免费用于研究和商业用途。(几小时前,swyy发现它已从LLaMA 2更名为Lla
  • Python异步IO编程的进程/线程通信实现

    这篇文章再讲3种方式,同时讲4中进程间通信的方式一、 Python 中线程间通信的实现方式共享变量共享变量是多个线程可以共同访问的变量。在Python中,可以使用threading模块中的L
  • iQOO Neo8 Pro评测:旗舰双芯加持 最强性能游戏旗舰

    【Techweb评测】去年10月,iQOO推出了一款Neo7手机,该机搭载了联发科天玑9000+,配备独显芯片Pro+,带来了同价位段最佳的游戏体验,一经上市便受到了诸多用
  • 机构称Q2全球智能手机出货量同比下滑11% 苹果份额依旧第2

    7月20日消息,据外媒报道,研究机构的报告显示,由于需求下滑,今年二季度全球智能手机的出货量,同比下滑了11%,三星、苹果等主要厂商的销量,较去年同期均有下
Top