范文健康探索娱乐情感热点
投稿投诉
热点动态
科技财经
情感日志
励志美文
娱乐时尚
游戏搞笑
探索旅游
历史星座
健康养生
美丽育儿
范文作文
教案论文
国学影视

微服务的痛用实际经历告诉你它有多坑(三)

  我们在前面已经说了微服务的六个痛点:(1)微服务的职责划分之痛;(2)微服务的粒度拆分之痛;(3)没人知道系统整体架构全貌之痛;(4)重复代码过多之痛;(5)服务器资源耗费更多之痛;(6)分布式事务之痛。你的项目真的适合微服务架构吗?微服务架构有哪些痛呢?(一) 微服务的痛:用实际经历告诉你它有多坑(二)
  在这里我们继续来聊其他的痛点:一、服务之间的依赖
  在设计类时,我们往往需要遵循类与类之间不可循环依赖的原则,因此最终设计出来的类关系类似下图所示的层次分明的结构。
  如果我们把依赖关系转移到微服务,结果会怎么样呢?我们先举个例子看看。
  比如商品系统针对不同门店类型设置不同价格时需要调用门店系统中的类型,这时商品就依赖了门店;同时因门店中存在商品库存,门店也就依赖了商品系统的商品信息,从而形成了循环依赖。
  再比如最底层的财务系统,从理论上讲,它不需要依赖其他系统。而实际上刚好相反,它必须依赖订单信息,知道费用由什么订单产生,同时它还需要依赖会员信息和门店信息,知道是谁付的钱和谁收的钱。
  因此,随着需求越来越多,服务之间的依赖就变成下面这种架构了。
  通过上图,我们发现服务之间的依赖可谓是你中有我,我中有你。
  那这种地狱般的依赖一般会出现什么问题呢?场景1:
  重构 2 个服务后,我们就需要在测试过程中评估哪些服务会受影响?
  因为前一段时间线上环境已经出现了 2 次一级故障,所以 CTO 强烈要求我们此次务必认真评估影响面,不能再出现类似问题。
  于是一个 leader 提出方案:先根据重构的代码找到受影响的接口,然后根据接口找到所有调用这些接口的上游代码,再找到那些调用上游接口的接口,以此类推。
  由于该方案分析成本过高,且一旦出现任何遗漏就会前功尽弃,因此直接被 CEO 否决了。
  最终我们提出了一个较合理的方案:根据全链路日记系统中的服务间依赖,找到这 2 个服务的所有上游服务及上游的上游服务。
  通过这个方案评估后,我们发现服务重构后,大半的微服务受到了影响,于是一堆人不得不陪着通宵达旦做回归测试,那几天重构服务的 Leader 也都低着头走。场景2:
  有了之前的教训,后续遇到新的重构需求时,重构的人就学乖了,直接把原来的服务 abcService V1 写成新服务 abcService V2。此时新的代码直接调用 V2 版本,而旧的代码还是继续调用 V1 版本,等有时间再下架 abcService V1 ,这样就不用一堆人陪着加班了。
  后面大家纷纷照搬这个方案,使得V1、V2 的形式越来越流行,服务数量出现暴涨。而且在实际开发工作中,开发人员很少在后期下架旧版服务,最终导致服务数量越来越多且新旧版本并存,维护起来更痛苦了。
  以上就是服务之间的依赖导致的问题了,而关于这类问题的解决思路我们放在后面专门来说二、联调的痛苦
  以往,我们的需求排期是这样的:需求评审时间——>开发完成时间——>测试完成时间——>上线时间。
  迁移到微服务后,需求排期表活生生地增加了 2 个环节:需求评审时间——>接口设计时间——>开发完成时间——>联调完成时间——>测试完成时间——>上线时间。
  在这种变化下,每次遇到比较紧急的需求时,我们都会额外问一句:接口文档好了吗?联调怎么样了?
  为什么我们这么在意联调?因为在一个软件项目中,影响项目排期的往往不是技术问题而是第三方依赖问题,一旦涉及沟通、协调等问题就会特别耗时间。
  这里,我们举一个例子简单说明下。有一次,我们正对门店系统进行小的需求改动,此时需要商品系统研发人员配合提供一个简单的接口,而商品系统的开发人员说,"我们正在忙另外一个项目,周二抽空提供这个接口。"
  听了商品系统开发人员的番话,我们简单评估了一下上线时间,周二拿到接口,周三进行联调,周四、周五测试 2 天,应该周五晚上就可以上线了。于是,我们与业务人员进行了相关反馈。
  可是等我们把门店的功能设计好后,因商品系统的开发人员开展的项目临时修改了一个紧急需求,要求周二务必通宵搞定,为此,他们无法在周二这天给到我们接口,最终门店周五上线的计划也就被延误了。
  而这种事情在实际开发过程中发生的频率比较高,并不是单个事件。
  下面,我们再举一个例子说明下。有一次,我们正在做一个涉及 30 个服务的大项目。周五完成所有需求评审后,我们的首要目标是对接口文档。
  因为接口文档是由各个项目组根据实际需求汇总各自需要提供的接口数,总计 300 多个接口,以至于这个过程我们花了整整两周时间。
  对完接口文档后,十几个项目组之间又开始对接口联调时间,这个过程又整整花了三天时间。
  不过,对完接口后,各自开发功能的速度就很快了,那次我们用了 2 周就把功能开发完了。
  说到这可能你想问,对完接口后,在实际开发过程中接口还会修改吗?我的答案是肯定会,而且增加、修改、删除接口都有可能。但是对完接口后,至少可以保证我们在大概一致的方向上前进,如果确实需要调整,修改的也只是一些小细节,并不会影响开发进度。
  功能设计完后,就需要进行联调了,而这个过程往往最耗时,因为我们需要耗费大量的时间在沟通上,先通过下面这段对话感受下。> 调用方:"addXXX 的接口怎么样了?"
  > 被调用方:"好了,你可以调调看。"
  > 调用方:"不行啊,你看返回了 404。"
  > 被调用方:"哎呀,环境部署错了,稍等一下。"
  > 调用方:"赶紧的。"
  > 被调用方:"好的。"
  > ……
  > 被调用方:"好了。"
  > 这时,调用方在联调时发现需要增加一个字段,就说,"addXXX 的接口需要增加一个修改时间字段,你帮我加一下。"
  > "可以,不过我正忙着另外一个项目,要不明天给你?"
  > "别啊,今天必须联调完。"
  > "那我晚上赶一赶,9 点给你成不?"
  > "好吧。"
  所以,在做项目时我们最怕的就是协调时间,因为它不可控。毕竟每个开发人员的需求优先级都不一样,除非所有相关项目组的第一优先级都相同,不然协调时间会是一件很头疼的事情。
  而且这个大项目共包含 300 多个接口,也就是说 300 多个接口都需要协调,这就使得联调的时间一点不比开发功能的时间少。三、部署上的难题
  使用单体式架构时,每个开发人员都想在本地把整个系统部署完后再调试,此时部署方式非常简单。可是迁移到微服务后,每个项目动不动就涉及十几个微服务。这时,如果让开发人员将这十几个微服务在本地部署完后再联调,根本无法实现。且不说内存不够,就算内存够,任何一个开发人员都不可能熟悉十几个微服务的部署。
  为此,我们专门弄了 1 套测试环境给开发人员进行联调,这样开发人员就可以将本地正在开发的服务接入联调环境,类似下图所示架构:
  可是,这种架构时不时会出现下面这三种问题。1. 联调环境的数据缺漏非常大
  因为联调接入的服务是本地开发过程中的服务,即数据是开发数据,所以单个服务中的数据不具备完整性。
  而且因为是开发环境,上下游服务之间还没有调通,也就是说上下游的单据也不一致、不完整,不是出现订单少了收款单的情况,就是出现准入少了审批单的情况。2.经常调用服务错误
  时不时会有人发出这样的抱怨:> 甲:"这个接口怎么有问题啊?你看,A 字段和 B 字段都缺失了。"
  > 乙:"怎么会呢?我明明加上去了啊?"
  > 甲:"你是不是忘记部署了?还是部署失败了?"
  > 乙:"我看看。"
  > 甲:"我去,你是不是调用了六子的服务?问一下六子。"
  > 过了一会儿,乙过来说:"还真是,他刚好在接入这个服务,我找他去。"3.联调环境极度不稳定
  因为开发人员时不时需要对联调中的服务进行部署,或者将不稳定的开发服务接入联调环境,再加上前面提及单个服务中的数据不具备完整性,因此,如果想在联调环境下走完完整的流程,这根本不太可能。为此,我们只能将联调环境用作接口间的局部联调。
  这就是联调环境难以部署带来的痛点,使得我们花了太多时间在协调问题上。于是我们在想,有没有一个办法可以简单地创建一套相对独立的测试环境呢?那后面我们就根据这些痛点来对应聊聊解决方案。四、总结
  可能你想问,关于微服务的优势我们只讲了 5 点,而微服务的痛点足足讲了 9 点,我们为什么还要使用微服务?
  如果使用单体式架构的话,随着业务的复杂化,将会出现无论怎么加人都无法迭代的情况。 而如果使用微服务,虽然它存在一堆问题,但是至少可以通过加人的方式保持迭代。
  对于这些痛点,如果你有更好的解决方案,欢迎留言讨论。
  感兴趣的朋友欢迎关注微信公众号:服务端技术精选
  个人博客:http://jiangyi.cool

OLED屏幕伤眼睛,为何LCD屏幕能够成为部分用户,坚定的选择护眼技术,这是现在很多智能手机屏幕都搭载的功能,但对于很多这方面并不是很了解的小白用户来说,并不知道现在流行的OLED屏幕的工作原理。我们说的通俗易懂一些,OLED童是通过交替开关最便宜的34英寸120Hz4K电竞带鱼屏亲测靠谱放心买21934英寸高刷新率带鱼屏,这四个关键字放在一起,不少人的第一反应是这得很贵吧?放在几年以前,这几个参数放一起显然便宜不到哪去,而现在,随着面板成本降低,带鱼屏的价格也逐渐降了下想配个主机,4000左右的,求大家推荐一下,在哪里买靠谱?你懂不懂配置?如果懂,就京东买配件,回来自己安装,比较省钱如果自己不懂,找个懂的人,给你买回来装,给点钱。再不行就各个品牌电脑官网或者京东里面买成品,要比自己组装贵几百块。卫生间买网贷新规?不得异地清楚调查为了整改互联网金融的规范性,中国银保监会会同中国人民银行等部门起草了网络小额贷款业务管理暂行办法(征求意见稿),明确网络小额贷款业务应当主要在注册地所属省级行政区域内开展,未经银保重压下中国移动出新招?10年没换号的老用户,获4个特权你多少年没有换过手机号码了?从手机出现,我们通讯都需要一张电话卡,科技发展至今,我们使用智能手机依然需要电话卡,不仅靠它通讯,更靠它移动上网。在我国有三大运营商,中国移动由于是最早python中的getter和setter你知道吗?用java编程的小伙伴应该会比较熟悉getter和setter,其实在python中也有gettersetter,不过两者区别还是蛮大的。对于一般的属性访问或者设置我们用属性操作符我认知的元宇宙其实不太喜欢元宇宙这个词,太商业化,太故事性了,和区块链一样都快被炒成贬义词了。一直觉得用源数据世界比较符合自己的认知,当然这样和需要投资的冲浪者想法天差地别的,人家是希望吹起风,作为雷军等企业家的大学同学,自己默默无闻是什么感受?这个问题好,我就是雷军的同学。作为雷军的同学,我就是默默无闻的。你问我什么感受,第一雷军家里孩子结婚我还是要去的。因为他是雷军,因为我们是同学,他还是要叫我的。我也是要到场的,到场人类行为学是一种研究人类行为学科,指人对于环境有所反应的行为人类行为学(Praxeology),是一种研究人类行为的学科。意指人对于环境及他人有所反应而表现出来的行为。这一词最先在1890年被阿尔弗雷德埃斯皮纳斯提出,但真正为人所知的则是奥微信紧急提醒!千万别买,都是骗局!这阵子微信红包封面火出圈了抢到一张奢侈品牌的红包封面有网友笑称这是不花钱离奢侈品最近的一次1月19日晚微信珊瑚安全发文表示发现最近有不少网友在购买红包封面的时候被骗了骗子谎称自己有怎么在支付宝查询社保首先打开我们手机的支付宝,然后点击支付宝里边的便民生活里边的市民中心找到市民中心后,点进去就会出现,大家选择好自己的城市,我是一直在北京缴纳的社保,所有给大家举例北京的如何查询,大
洞洞鼠透心儿凉HyperX旋火无线游戏鼠标刚刚进入五月,北方气温也开始直线飙升,大部分地区迈入30,局部地区气温甚至攀升至35。对于玩家而言,黏腻的手汗随高温接踵而至,更何况紧张刺激的游戏更是手汗的催化剂,一场游戏下来鼠标认识SpringBootApplication注解SpringBootApplication标识被注解的类是一个Configuration类,在类中可以声明一个或多个bean方法,并且它会触发EnableAutoConfigura丰巢会兴起,快递驿站会被取代吗?头号周刊丰巢会兴起,快递驿站会被取代。你有没有发现,随着电商网络购物的发展,在过去的几年的里,很多快递驿站快速增长,几十米就有一个快递驿站。以前的快递驿站是专门收件,发件。现在不一5900mAh新机加快量产,有6nm芯片坐镇,被忽视的黑马重生对于黑马这样的字眼,很多人喜欢用来形容销量很高的产品,因为要具有黑马实力,才能受到大家肯定,那么销量自然才会高。不过,有一些不错的手机产品,尽管总体销量不高,但口碑方面很不错,这样狐猴能有节奏地唱歌研究人员发现了第一个能保持节拍的非人类动物英德里是马达加斯加森林中发现的一种濒临灭绝的狐猴物种。这种狐猴长2428英寸,英德里身上覆盖着黑白相间的皮毛。这些动物白天在林间活动,以马京东拼多多哔哩哔哩需要度过危机近期京东拼多多哔哩哔哩在内的80多家公司被列入可能被美国证券交易所摘牌的名单中,原因是无法检查这些公司的审计底稿。大概率这些公司要到香港或者上海上市了,这对以上公司不太有利,却利好小康股份又亏了!傍上华为日子也难市值一度碾压巨无霸长安汽车,资本纷纷看好的小康股份(601127。SH)交作业了。4月29日,小康股份发布了2021年年报。从年报来看,小康股份依托与华为的合作也并未走出泥潭。年报万元手机的较量三星S22UltraVSiPhone13ProMax每年我们都能看到很多智能手机发布,但是最贵的就要数苹果和三星的旗舰机,三星S22Ultra与iPhone13ProMax发布价格都已经接近万元,一个是安卓机皇,一个是苹果机皇,一山手机运行内存越大,流畅度越好吗?宝子们,你们在刷视频或者微信聊天的时候,是否也会感觉手机很卡顿?手机卡顿其实和手机的运行内存有直接关系。运行内存不足将会严重影响手机的速度。看到这里,一定会有小伙伴问手机的运行内存既能听歌又能当充电宝用,英雄HEROG1蓝牙耳机近两年真无线蓝牙耳机持续的火爆,让很多朋友对无线蓝牙耳机有了比较多的了解,也有相当大的一部分用户,已经成为蓝牙耳机的忠实粉丝。现在的真无线蓝牙耳机市场可选品牌价位都非常多样,这也造新家家电怎么选?分享一份618全屋家电选购清单,具体到品牌型号相信很多朋友在选购家电之前都会先认真地做一遍功课,看很多的家电科普文,教你如何选家电,看完以后像是懂了很多东西,但是真到选购家电时又不知怎么下手,我以前也是这么来的。不是说那些科普