纠纷奇闻作文社交美文家庭
家庭城市
爱好生活
创业男女
能力餐饮
美文职业
心理周易
母婴奇趣
两性技能
社交传统
新闻范文
工作个人
思考社会
作文职场
家居中考
兴趣安全
解密魅力
奇闻笑话
写作笔记
阅读企业
饮食时事
纠纷案例
初中历史
说说童话
乐趣治疗

微服务改造过程中那些必须重视的问题

8月24日 亡命徒投稿
  微服务近几年尤其火热,各大厂都在进行微服务化改造和微服务建设,想享受微服务化带来的好处以便对自己的系统进行改造。分布式实验室特约记者李鹏采访了广州轻阅科技系统架构师陈珙,就微服务与SOA的区别与联系、企业引入微服务会带来的问题以及解决方案和陈珙自己的工作经验进行了交流。李鹏:谈到微服务都不可避免的会提到SOA,请问微服务与SOA有区别与联系?分别适用于什么场景?
  陈珙:果然一谈到微服务,SOA也绝对不会避而不谈。首先,对于这个问题我也曾经思考与总结过的,我的看法跟大多数人百度、Google到的那种看法并不一样,下面我将从两者的发展史、两者的出发点与核心思想进行阐述。
  SOA与微服务的关系,我从多个方面的资料梳理后,总结出有这样两种看法:微服务是SOA的最佳实践(出自维基百科)微服务是SOA的演进版,粒度更细,基础设施去中心化。微服务拒绝SOA的标签(出MartinFowler的《Microservices》原文)微服务与SOA,是两个完全不同的架构风格,只不过刚好长得像。
  首先是发展史,这里我整理了微服务发展的小历史。
  时间
  事件
  2005年
  Peter教授在WebServcesEdge大会提出了MicroWebServices
  2007年
  JuvalLwy在他的著作与演讲建议用服务构建系统,并意识到细粒度因此扩展了WCF。
  2011年
  一个软件架构工作组在威尼斯附近举行的软件架构师研讨会上使用了Microservice来代表这种架构模式
  2012年
  JameLewis针对微服务概念在某大会发表了演讲
  2014年
  JameLewis和MartinFowler合写了关于微服务的一篇学术性文章
  从上文我们可以总结出三个核心关键点:微服务的起源最早追溯到2005年;微服务不是由MartinFowler他本人创造的;那篇举世闻名2014年写的《Microservices》原文是由JameLewis和MartinFowler他们两人共同合作编写的。
  虽然说微服务架构并非MartinFowler所创造的,但是称《Microservices》这篇文章是推动微服务的崛起的缘由,一点都不为过,而JameLewis和MartinFowler两位对微服务的盛行起到了非常关键的作用。
  我相信不少同行讨论微服务都会拿维基百科的定义作为标准(维基百科仍然写着微服务是SOA的一种变种),不得不承认,微服务当时的出现就是作为一种轻量化的解决方案,用来解决SOA的一些诟病的,但是随着微服务的这些年的发展与蜕变,渐渐的脱离了SOA的标签,成为了一种独立的架构风格。
  因此在2014年JameLewis和MartinFowler合作编写的《Microservices》其中一段写着微服务倡导者拒绝SOA的标签。因此我认为维基百科的定义已经过时了。
  接着说两者的出发点与核心思想,我认为,要看清楚它们关系的本质,就得从两者各自的处理场景目的出发。
  首先从微服务角度出发,因为单体应用的大而全的高耦合与臃肿,随着业务的发展迭代的时间越久,就会有各种各样的问题,因此通过把应用拆成了多个小的服务,这里使用到了化繁为简、分而治之的核心思想,解决原有单体的痛点和难点。
  接着从SOA的角度出发,在当时那个年代,希望把各种异构的系统给整合起来,这些异构的系统,有可能是从其他地方买的,也有可能是研发的,也有可能是找外包做的,因缘由存在各种不确定性,所以希望通过一个聪明的ESB解决所有的愚蠢的问题,也是因此ESB的高复杂度,导致当年SOA那会只是炒得火热,却无法普遍落实。
  总地来说,微服务以拆与约定作为出发点,而SOA是以整合与配置作为出发点,所以我个人认为从它们的出发点与目的的角度出发,直接决定了它们在本质上是完全不同的架构。所以我更加倾向于《Microservices》原文提到的看法,微服务的倡导者拒绝SOA这个标签的。
  以上就是我对SOA与微服务的关系的一些见解。
  李鹏:团队引入微服务技术会不会带来新问题?比如会带来什么新问题?应该怎么解决?
  陈珙:引入微服务的话,从我的经验来看还是会带来不少的问题,我自己还是总结了一番,用一句话概括:两文化与一思维。自动化文化、可观测性文化和分布式系统思维。
  首先是自动化文化,有些人觉得疑惑,自动化这种能给团队省时省力、减少重复工作量、增加幸福度的技术难道还有人或者团队会抗拒的?是的,还真的有。
  我曾经就接触过几个团队的Leader,他们的团队都是推行自动化失败了。失败的原因就在于成员不配合,成员拒绝配合的理由是:这么多框框条条很麻烦麻烦、没有自己亲手去做总觉得机器不靠谱。
  作为已经使用过自动化的其他同行来看,这样的思想完全觉得不可思议,但是我却可以理解,大家回忆下自己是否曾经对没使用过的框架与技术引入到生产同样会产生恐惧、担心,是的,从某角度来看这是谨慎,但是过于谨慎了。
  重新回到话题,从上面可知,统一团队的目标一致性是有必要的,从另外的角度来看,自动化还需要团队、项目的流程的标准化、统一与约定,任何的技术都无法脱离了业务与团队而去讨论应该如何去实施。
  作为技术领导者推行优良的方案,是我们的职责之一。如果团队成员无法配合,导致推行受阻,我们一共有三种应对策略:激励、考核和逐步试行。如果有条件的公司可以设置奖金激励,如果有绩效考核的,可以将自动化的实施纳入考核目标,如果这俩都没有,那就选取团队里愿意改变的同事牵头试行,假如使用过后都说好,那么会更有说服力。
  其次是可观测性文化,如果说自动化是给团队带来稳定性,减轻工作量的,那么可观测性就是提高团队对系统运作的信息量。建立可观测性的这项工作,虽然无法直接给系统带来健壮性,但能够使我们通过这些信息充分地了解到系统正在运作的情况,以至于最大程度地做出最合适的定位、判断与决策。
  在单体应用的场景下,我们也是需要可观测性的,但是单体的架构相对简单,项目调试也更加便捷,无论是从复杂度还是规模的角度来看,单体跟微服务相比都要低不少,也因此单体对可观测性的需要,相比于微服务显得没那么重要。
  而我们只要进行了微服务实施后,因为应用被拆分成了细粒度,从而导致了架构从量变引起质变,这个时候可观测性的作用在微服务场景下被无限放大,也因此我们利用可观测性,给与我们提供应用与服务器的监控、快速跟踪与问题定位的功能。
  可观测性的三个要素日志、跟踪、指标。我们在工作中只有灵活结合这三者,才能提高我们对系统运行情况的信息量,信息量越高思考的越是更加全面,才能尽可能地减少不知道问题出在哪的状况,所以当我们不清楚具体发生问题的原因时,建议你侧重做一件事:就是尽可能想办法,提高我们对问题与系统的信息量。
  在这里额外提醒一句,自动化与可观测性并不是必须跟微服务架构绑定,无论在哪里的业务,怎样的系统,在条件允许的情况,越早把这两者完善,那么长期收益则越高。
  最后就是分布式系统的问题,这个问题又分为三个,幂等性、数据的一致性的读与写。
  幂等性,其定义是相同的参数在同一个方法里,无论执行一次还是多次都会响应相同的结果。
  对于查询和删除的场景都有天然的幂等性,那么我们考虑幂等性的处理,更多是关注于新增数据与更新数据。
  新增数据缺乏幂等性,则会因为网络抖动导致请求重试或者是客户端重复点击,而引发的数据写入重复,其解决方案也相对简单,只要从客户端生成主键传给后端API就可以解决,在这里得注意一点,只有请求成功或者主动刷新才会重新生成主键。
  更新数据缺乏幂等性,主要会造成两种情况,数值错误自增和ABA问题。首先,数值错误自增,可以结合事务凭据与新增幂等性的方式解决。
  而ABA问题,解决方案相对简单,可以在更新操作时带上版本号判断进行解决。
  ABA问题:对某条记录先更新了A数据,紧接着又更新了B数据,理应是B是最新的,但是因为其他客观原因使接口Retry或者别的问题,导致A数据再次请求覆盖了B。
  幂等性处理方案
  场景
  问题
  方案
  新建数据
  重复创建
  由调用端预生成订单号,唯一键约束
  更新数据
  ABA覆盖问题
  添加版本号判断
  金额自增
  使用流水凭据
  数据一致性读,其实说白了就是做数据关联,从我过往用的解决方案来看共有三种,应用层的接口聚合数据、把更新频率低的字段冗余存储、把数据库同步到一台服务器进行SQL联表处理,每种方式各有优缺点,我结合切身体会和过往经验,以表格方式整理呈现出来,你可以根据业务场景自行选择解决方案。
  数据关联方案
  方案名称
  方案描述
  优点
  缺点
  应用层数据聚合
  分别调用查询API,在业务逻辑层组装,适用于简单的关联。
  实现简单
  该方案只能适合简单的查询过滤,以主表为驱动的关联
  冗余设计(反范式)
  在目标表添加冗余字段,适用于记录递增的,不适用于冗余字段更新频繁,实现起来简单,有扩展性问题
  实现简单,以应用层数据聚合方案有更多的过滤条件
  冗余的字段如果更新存在同步问题,该方案适用于更新频繁少的递增日志类数据
  数据库从库集成
  通过主从同步把相关表同步到一台服务器做跨库查询,适用于复杂查询、报表类的,有技术复杂度,从长远收益来看能应对多种场景
  通过强大的SQL解决复杂的报表类查询
  拥有技术复杂度,需要数据库主从处理
  写的数据一致性,其实就是分布式事务,主流的方案有TCC、本地消息表(基于消息可靠的最终一致性)、异步请求回调。其他的多数是基于以上几种方法的变种,例如RocketMQ的消息事务,就是TCC本地消息表的变种。
  分布式事务方案,用文字描述起来相对比较吃力,因此我通过流程图代替文字描述展示给大家。下方表格是我对这三种方案的优缺点与使用场景的总结。
  分布式事务方案
  名称
  场景
  优点
  缺点
  异步请求回调
  跨网络环境、同网络环境
  实现简单
  强业务
  TCC
  跨网络环境、同网络环境
  有现成的框架、实现简单
  强业务
  基于消息可靠的最终一致性
  同网络环境
  有现成的框架、通用性强
  中间件依赖
  以上就是我所经历微服务的引入后所需要解决的一些问题与方案。
  李鹏:工作这么长时间,你在微服务改造过程中有没有遇到特别大的困难,都是怎么解决的?
  陈珙:这个问题勾起了我的痛并快乐着的回忆。俗话说得好,万事开头难,因此第一次做微服务的实施经历给我带来了非常深刻的印象。
  第一次做微服务是2019年,受老领导的邀约加入了新公司并以微服务架构风格来从零开始搭建新系统。这也是我工作多年以来,第一次以技术负责人的身份,从零开始组建自己的团队,同时从零开始开发系统,而且还是得用当时对我来说陌生的微服务架构。
  我面临的第一个难题就是我的运维能力。如大家所了解的运维就是微服务架构的地基,如果运维能力有限那么微服务搭建的规模与完整度自然也会受到影响。在当时来说,我以往工作经验,接触运维还是比较少的,因此在实施微服务的同时不得不进行恶补运维的知识,像容器化、Linux基础、网络知识、自动化等等。
  因此,当时我买书与课程应该属于我这么多年以来的最疯狂的一次,每天早上在地铁上学习,下班后回家也会带着问题找资料,现在回想起来也非常的充实。
  第二个难题就是。Net的技术生态。。Net并没有一套像Java一样比较成熟的、默认的方案,因此在。Net微服务的技术选型上花了不少的时间与精力,主要的问题体现在到各种框架与中间件之间的集成,很多时候还要自己看源码改扩展。
  从现在看过往,真正允许我们。Net选择的框架与中间件并不是很多,因为很多中间件是不提供。NetSDK的。而且在当时来说,在技术社区里也没多少人会分享自己。Net微服务实战的心得,因此对于我们不得不摸着石头过河,无论觉得行还是不行都得尝试一遍,最终总结出适合自己的技术选型。
  事后,我也希望后来人避免踩坑,在博客园写了个《。Net微服务实战》系列,在给自己做总结的同时也分享给有需要的同行。
  第三个难题则是微服务的划分。大家可能都知微服务拆分的其中一种方式是按照业务边界,DDD的战略思想与事件风暴被我引入到了工作当中,不得不说DDD战略的化繁为简与微服务的分而治之这两种思想是非常契合的。
  但并不是说这种方式在任何时候都完全适用,因为我们整个团队都是新组建的,业务对我们来说都是全新的,因此不存在领域专家这一个说法。在整个工作当中会存在很多不明确的业务,一般这个时候我们是不做任何服务的拆分处理的,只有随着我们对业务的熟悉度越来越了解,才慢慢地再去重新识别业务边界从而进行拆分。
  虽然说微服务减轻了开发人员的开发负担,但是对于架构师来说是一件非常考验综合能力的事情。
  李鹏:请给新手提一些建议,微服务改造应该怎么上手?改造过程中需要注意什么?
  陈珙:在上个问题,我拿了自己当时作为新手时实施的经历,大家也可以参考下。那么接下来我会总结一下,从多个方面出发进行分享。
  从硬技能角度出发。大多数微服务设计者是从开发过来的,因此开发技能无需过多担忧,但是运维技能肯定对于他们来说是偏弱的,还是那句话运维是架构的地基,所以运维的基础能力得优先提高。
  这里得注意一下,并不是说需要大家的运维技能一下子成为专家级的,这样也不现实,但是起码得够用,能和专业运维岗无缝沟通,因为作为团队的技术领导者,很多时候得领先团队做技术调研、技术选型与评估,而拥有这些基本的能力,能让自己更加顺利的衔接好团队并完成工作。
  从软能力角度出发。如我上面所说的,微服务非常考验架构师的综合能力,那么沟通与管理也包含在内。微服务的实施是需要整个团队配合的,每个人都有自己擅长的专业与领域,因此团队之间的能力是互补的。
  从康威定律可以了解到,团队里成员之间的比例与技能是跟系统架构相匹配的,那么架构师作为团队的衔接点、承上启下的角色,更加应该有良好的沟通协助方式与大局意识。
  想要一个人承担所有的角色搭建整套微服务架构,我认为是不现实的,特别是对有一定规模的老系统进行改造,里面会有数不尽的坑,脱离了业务进行架构设计无疑是耍流氓,技术服务于架构,架构服务于业务,业务服务于商业,这是一条不变的真理。软件工程是一项多人协作的工作,每个岗位都有他存在的价值与意义,这里没有个人英雄主义。
  从实施的流程出发。微服务里用了不少中间件,例如:API网关、服务注册中心、负载均衡器等等,在不是特别必要的情况下,可以稍微延后这些中间件的搭建,我们可以先把重心放到可观测性与自动化的搭建上。
  自动化与可观测性在微服务架构中有着无法代替的重要性。因为在微服务架构中由于服务的拆分慢慢的从量变引起了质变,原本在单体架构中显得不重要的流程与问题会逐渐的被放大。当然了,自动化与可观测性并不是说得准备要微服务才应该着手准备,无论在哪种系统来说,能越尽早完善自动化与可观测性,那么收益就会越大,只有系统稳定了,不会每天被那些繁琐的维护工作占用过多的时间,我们才可以有时间与机会做更加有意义的事情。
  从新旧系统改造出发。新的系统使用微服务的难点主要在于第一次搭建微服务的陌生感,当你形成一套可复用模式后,后续第二次、第三次就如同堆积木。
  旧系统的改造一般来说会比新系统的复杂点,主要的原因是旧系统是有稳定业务的,因此我们在对旧系统的服务拆分时更多的考虑的是,哪些业务模块相对耦合性低,可以优先独立出来,拿旧系统试错还是有一定的风险与成本,因此我们尽可能减少影响面,适当的还要考虑功能的兼容性与发布的可逆性。
  原文链接:https:mp。weixin。qq。coms?bizMzg5Mjc3MjIyMAmid2247553425idx1sn139504f458e247276d8e8f23e720f4e9utmsourcetuicoolutmmediumreferral
投诉 评论 转载

于大宝比赛散步图解分析国足前两天的比赛中,于大宝的表现成为热门话题。有怒诉其散步帝的,也有所谓的真懂球的力挺其是会踢球的。从以上现场比赛图片可以看到,红色箭头方向一大片开阔地,而且还有对方防守……2018早春最流行的条纹衬衫你入手了吗(图)2018早春最流行的条纹衬衫,你入手了吗?条纹就是不可或缺的时髦元素,条纹衬衫浅浅的蓝白条纹交织与衣摆的飘逸感让人又慵懒又起范儿,条纹衬衫宽松的版型穿上身不会有束缚感,而且条纹……白色针织衫怎么搭配?百搭时尚俏皮显瘦【白色针织衫怎么搭配?百搭时尚俏皮显瘦】这样的季节,除了各种极简主义的针织衫,其他的什么都不想穿!众多颜色中,白色是票选最高的最喜爱颜色,那么温柔的白色针织衫怎么搭配才最好看呢……微服务改造过程中那些必须重视的问题微服务近几年尤其火热,各大厂都在进行微服务化改造和微服务建设,想享受微服务化带来的好处以便对自己的系统进行改造。分布式实验室特约记者李鹏采访了广州轻阅科技系统架构师陈珙,就微服……冬季要美要瘦又要暖时尚针织连衣裙轻松搞定美丽,是不分时间季节的!冬天也无法阻止我们女生一颗爱美的心,温暖显瘦针织连衣长裙推荐,一件就搞定你的装扮!【麻花针织连衣长裙】点评:韩范复古针织连衣长裙,充满女人味……原来这些服装款式比修身款更显瘦唯有在冬天,才会稍稍放纵一会儿自己吃到心满意足;唯有在冬天,才会悄悄把锻炼身体的日常变成偶尔给自己放个假;唯有在冬天,才会用不那么紧,却很修身的毛衣和外套微调穿衣打扮的习惯。一……A股下周大盘走势简析暴跌的原因和走势预测,一并说清楚本周的大盘简直是风云突变,一下子就把人们给搞懵了,周五券商板块的大幅杀跌,使得A股处于一种雪崩状态,各路分析人士都在找为什么会有如此极端的走势,国内的,国外的都翻了个遍,最终把……喜结良缘!追梦与妻子正式完婚,塔图姆意外现身,克莱玩失踪恰逢休赛期,NBA迎来结婚潮,乔治、乐福、格雷森阿伦、福克斯等人相继步入婚姻殿堂。勇士球星追梦格林也喜事临门,他与妻子HazelRenee正式完婚。HazelRenee是……极寒来袭御寒必备时尚服饰羽绒服让你暖暖哒据可靠消息,未来几天全国将陷入极寒天气,大部分地区将降温十度以上,北方将一片冰天雪地,没有暖气的南方更是惨兮兮。这样酷寒的天气,正是羽绒服的用武之地,妹纸们,快穿羽绒服,抵御极……性感蕾丝包臀连衣裙穿出你的S曲线身材每个女人都有一颗公主心,想要美得像公主怎能错过蕾丝的帮衬呢?或甜美或典雅,或小点缀或大面积,只要有了它的存在就会让整体变得不一样。今天就让我们接着上期的话题继续聊聊蕾丝,聊聊这……露肩真丝连衣裙推荐2017这样搭配最时髦露肩真丝连衣裙性感不过分,露肩真丝连衣裙是夏日必备的出街单品,时髦。盛夏高温来袭,一件搞定全身的清凉露肩连衣裙才是这个盛夏最佳的时髦利器。小编为你推荐露肩真丝连衣裙2017最时……戛纳电影节2016红毯视频明星都这么拼第69届戛纳电影节红毯正在进行中,这次最牛的应该算是挺着大肚子的BlakeLively,从戛纳电影节2016红毯视频看到,原来明星们都这么拼。口号就是:老娘就算怀孕也是最……
黄金手链和手镯哪个好看黄金手链和手镯优缺点对比紫色裤子搭配什么上衣紫色裤子的搭配技巧宽幅变温三循环能当三台冰箱用的TCL格物Q10到站体验1428处暑,秋之韵拉开大幕(文配出联,邀您来对)高领打底衫什么颜色好看高领打底衫流行什么颜色牛仔裤有刺鼻的味道怎么去除牛仔裤有油污怎么才能洗掉牛仔裤的腰小了可以改大吗牛仔裤要天天洗吗小个子怎么穿阔腿裤好看搭配方式很关键波点上衣怎么搭配裤子波点上衣的搭配技巧白色的裤子怎么搭配上衣白色的裤子搭配上衣的方法牛仔裤没有弹性好不好牛仔裤有弹性和没弹性哪个好yeezy买大怎么办椰子怎么选尺码穿着舒服
女人的灵魂和男人的乐趣中华人民共和国商标法难免的同义词工厂订单合同待家人如待领导,万事大吉太阳是大家的优秀教案设计范文米袋里凭空出现的甲虫,你吃的每碗饭都可能含有它们的虫卵注意!骗子正在使用AI技术诈骗景芝芝麻香型白酒多少钱?一品景芝芝麻香酒价格三年级下册数学教学计划708文综状元:这套文综三科万能答题公式。。。消失180天的欧阳夏丹真的要和央视永别了?

友情链接:中准网聚热点快百科快传网快生活快软网快好知文好找美丽时装彩妆资讯历史明星乐活安卓数码常识驾车健康苹果问答网络发型电视车载室内电影游戏科学音乐整形