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

单体应用到微服务架构转型实践过程总结

  今天重点谈下传统的单体应用架构朝微服务转型实践过程中遇到的一些问题,具体的解决方法的一些思考,供大家参考。
  这篇文章涉及到的项目背景为我们自己的财务共享项目,即原来是一个大单体应用,需要进行微服务架构化拆分,我在前面华南CIO大会上关于微服务架构转型的演讲中也提到了这个实践案例,但是对有些关键内容没有细化展开,因此今天对里面涉及到的一些内容做展开说明。前期积累
  从12年我们开始实施联通集团的私有云PaaS平台项目的时候,就进行了整体的平台+应用的架构规划,而当时应用要进行组件化拆分没有马上实施,但是基础平台建设则按进度推进。
  而基础平台建设里面强调过多次的即基础开发框架+4A+流程引擎。
  也就是通过基础平台建设,需要形成了一个包括了4A+流程引擎的空框架,当接到新的业务的时候我们可以基于这个空框架快速的进行业务功能的设计和开发。
  在第一阶段我们将4A和流程引擎整体融合在空开发框架中,也就说当进行新项目的开发的时候所有的4A和流程引擎JAR包也需要引入到开发人员本地项目,同时还需要将整个包含了4A和流程数据库表的数据库全部拷贝一份,基于这套进行开发。
  而这个显然是不符合SOA下共性基础能力下沉,以接口服务方式提供的思想,同时也不利用后续基础组件的统一维护和管理。
  因此在这个阶段,我们已经做了4A+流程引擎从单体应用系统中的剥离,形成一个基础平台能力,同时也独立数据库,该基础平台单独设计和部署,业务应用以接口服务方式进行交互。这样处理后,整套基础平台可以很方便地应用到财务类应用,SOA和主数据类应用,供应链类应用多个应用系统中。
  也就是说,我们在前期已经做了一个重要工作,即共性基础技术平台剥离。
  如果你自己的业务系统需要转型微服务,实际上这个工作也是必须提前做的一个工作,即共性技术平台必须下沉,而不能再由原来的单体应用系统来承担这部分工作。单体拆分
  在传统单体应用转型到微服务的时候,有一个关键内容就是单体应用拆分。
  对于单体拆分,实际上最重要的还是数据库拆分,但是根据微服务架构标准定义,对于每个微服务来说从数据库,逻辑层,前端都应该是完全独立自治的一套。以实现各个微服务间的彻底解耦。
  如上财务共享应用来说。
  如果我们最终仅仅拆分为报账,预算,银企,影像四个微服务,那么我们拆分出四个独立的数据库是合理的,相互之间也可以解耦。
  但是在拆分后可以看到就报账一个模块来说,实际上我们还拆分了差不多10个独立的SpringBoot项目,可以独立打包为Jar包并进行部署。那么这10个独立的项目实际是对应到一个数据库上面的并没有在进行拆分。这也就是前面文章谈到的,引入了微服务业务域的概念,同一个业务域里面的微服务模块可以拆分,但是数据库不再拆分。如下图所示:
  对应报账应用,我们接着举例再说明下。
  一个完整的报账应用,实际上里面包括了日常费用报销流程,差旅费报账流程,借款报账,采购报账流程等。我们可能想到直接按流程进一步拆分。
  但是实际我们看到对于上面四个流程不是简单纵向孤立流程,每一个流程都会用到共性的基础数据能力,同时流程执行完后涉及到形成正是的应付发票或凭证。即,流程虽然独立,但是流程前后都有共性的内容进行支撑。
  再回到SOA的思路,即我们希望应用的构建是横向分层进行的。这种横向分层重点就是首先找共性业务或数据能力下沉,然后再基于共性能力来构建上层的应用或流程,这个思想和现在说的中台思想完全是一致的。
  因此我们在进行报账微服务拆分的时候,不是简单按照业务功能模块进行拆分,而是进一步结合SOA和横向分层进行应用构建的思路进行拆分。
  如上图:实际上就可以拆分为独立的6个微服务模块,这6个微服务模块采用独立的数据库SID或Schema本身也不会造成大的耦合性。同时我们看到,当有新的报账流程需要实现的时候,底层的基础数据中心和发票凭证中心两个模块基本都不用做大的变动。
  最后简单总结就是两点:其一是微服务模块和数据库不一定必须1对1,可以多个微服务对应一个数据库其二是微服务拆分要引入SOA分层构建和领域建模思路进行前后端分离开发
  首先我要澄清一个概念,即在微服务标准要求和定义下,我们看不到有任何的必须前后端分离的说法。当然我也多次强调了,在微服务实践中,前后端分离是一个比较好的开发模式,因为前后端分离本身也很好的体现了SOA分层构建应用的思想。
  而实际上SOA分层构建和前后端分离是两个不同的概念。
  比如前面谈到的报账应用拆分为6个独立的微服务,其中底层两个共性的微服务模块,上层4个独立的流程相关微服务模块。这个是明显的SOA分层思路。
  而如果是前后端分离思路则是上面谈到的6个微服务模块,进行前后端进一步拆分。比如拆分为6个独立的后端模块,6个独立的前端模块。同时前后端模块间通过Rest API接口交互。
  当然前端模块也可以合并,比如对应APP端我们可以不拆分,只保留一个前端模块。
  大家可以比较下SOA分层思想图和前后端分离两张图。实际上两者之间没有任何必然的约束关系。即你应用了SOA分层思想,并不代表你的模块开发一定要前后端分离。反之,你采用了前后端分离,同样不代表你有SOA分层共性能力下沉的思想。
  也正是这个原因,我们再来回顾下中台的一个说法,即将后端模块或逻辑层理解为中台,这个明显就是错误的。后端模块是前后端分离下的概念,但是在前后端分离后,你的后端模块并不一定就是共性下沉业务能力,并不一定就能够复用。
  也正是这个原因,我们再次强调前后端分离在微服务里面不是必须,但是SOA分层思想往往在进行微服务模块拆分的时候是必须具备的思想。
  前后端分离看起来进一步实现业务功能实现解耦,但是实际上前后端分离本身也带来其它问题,比如一个业务功能实现往往需要经过更多的人协同配合才完成,那么功能出错的概率自然也就提高。特别是在前后端分离后,如果后端的单元测试和自动化测试能力跟不上的时候,前后端分离开发反而是明显降低了开发效率。
  同时往往后端人员并不熟悉前端类似VUE,React等开发看框架,导致团队规模小的时候,人员并不能得到充分的复用。或者在极端情况下,一个3个后端1个前端的小团队,如果前端离职将直接导致整个开发工作停滞。微服务开发框架和技术栈
  对于微服务开发框架,我们采用主流的Spring Cloud ,并且 还基于 Spring Boot 进行了通用性模块的封装,例如鉴权服务、调度服务、消息服务等等;前端使用 VUE 作为开发组件进行二次封装和改造并自研了前端组件库,使之更适合企业级应用系统的使用体验。
  大家在选择微服务开发框架的时候经常会遇到选择困难症。
  比如究竟用SpingCLoud好还是Dubbo好,是采用自带的API网关还是采用Kong网关,是否采用类似Nacos注册中心替代Eureka等。实际上我的建议很简单,就是直接采用标准的SpringCLoud框架来进行微服务架构设计和模块开发。
  在真正应用和实践起来后,再来看哪些无法满足真实的业务需求,对个别独立的组件进行替代。要明白,当前很多独立的类似网关,限流熔断,服务链监控等各种开源组件,基本都能够做到完全兼容SpingCloud,或者说有专门的插件来适配。
  至于性能方面的问题,对于传统的业务系统信息化应用本身面对的性能压力远远小于互联网应用,当前的SpingCLoud框架在性能上基本能够完全满足。如果不满足,你也不要马上怀疑是框架的问题,而是应该首先检查你本身的代码问题。
  选择了Spring Cloud后,实际上看到还需要做其它大量的技术组件选择和共性化封装,包括消息,缓存,日志,安全,自动化调度,文件存储等,这些都需要在搭建技术架构的时候进行融入,这样才能够形成一个完整的底层技术架构。
  因此在整个技术平台搭建中,微服务框架选择仅仅是第一步。而我们实际做的时候,技术平台构建本身又包括了两个关键阶段。
  在阶段一,我们的重点是将前面谈的消息,缓存,安全,调度,文件,日志等各种和业务无关的共性技术能力抽取,形成标准的技术组件或技术服务。
  在阶段二,对技术平台进一步发展演进,重点在于提升开发效率和快速开发上,因此在这个阶段包括了各类共性组件,前端组件的封装。自定义报表,自定义查询,表单设计器,Rest API接口快速开发和生成,业务模块快速开发和生成等。
  由于本身项目转型到SpingCLoud微服务开发框架也是一个逐步的过程,因此必须项目团队全部熟悉整个微服务下开发方法和模式后,通过实践才能够更好地总结哪些可以进一步可复用,哪些和业务无关技术能力可以进一步自动化。Zuul网关或Kong API网关
  对于API网关,实际上我在前面很多文章的里面都谈到过。
  对于Zuul网关,Netflix官方当时有个解释如下,即Zuul是从设备和网站到后端应用程序的所有请求的前门,为内部服务提供可配置的对外URL到服务的映射关系,基于JVM的后端路由器。其关键功能包括了代理,路由,安全,限流熔断,灰度发布等。也就是说在去中心化架构下,实际是通过Eureka,Ribbon,Hystrix等多个组件来共同实现了网关的能力。
  在我前面谈到,如果你构建的应用不需要和外部交互,也没有APP移动端,那么整套架构里面完全不用启用API网关,直接采用服务注册发现即可。
  结合我们的场景,整个报账应用实际是有APP端的,那么是否启用API网关?
  当我们思考这个问题的时候看到,对于APP端实际并没有太大的业务并发访问,也就是说没有限流熔断的需求。APP端唯一需要考虑的就是统一服务代理出口和安全方面的考虑。
  在这种场景下,我们没必要马上启用API网关。
  简单来说采用Ngnix来解决服务代理路由问题,通过Auth2.0+JWT来解决安全问题足够。
  通过Ngnix来解决的时候,唯一需要做的就是我们在扩展微服务模块节点的时候,需要对集群节点进行手工配置,这点本身我们可以接受。
  但是Ngnix本身并不能很好完成心跳监测功能,如果出现节点假死仍然会发送接口请求。在这点上我们引入当前网上推荐的Ngnix+Lua,即OpenRestry方案。OpenResty 通过lua脚本扩展nginx功能,可提供负载均衡、请求路由、安全认证、服务鉴权、流量控制与日志监控等服务。即本身也实现了API网关的常见功能。微服务和DevOps
  在实施微服务后,你会看到原来的一个单体应用已经拆分为20个独立的微服务模块。每个微服务模块都涉及到编译,构建,打包部署,测试,环境迁移等诸多工作。
  当是一个大应用的时候通过人工来解决没有问题,但是拆分为20个微服务后再通过人工来解决基本不现实,因此必须进行自动化。
  而这里的自动化首先就是要实现CI/CD持续集成和持续部署能力。
  当前,采用Jekins进行持续集成和扩展定制已经成为应用最多的实践。而对于财务应用在前期同样采用Jekins+Maven来完成整个自动化编译,构建,打包和部署动作。在这个阶段完成后整个持续集成过程基本通过脚本化完成,无可视化的界面,配置的修改也无法在前台完成。
  在后期,这块内容则全部转移到我们自己的DevOps支撑平台上面,对于该平台我在前面也有过介绍,即完成整个持续集成和交付的一个支撑平台,实现了主流的各种持续集成和交付开源工具的集成,提供了持续集成,自动化测试,持续交付,流水线设计,资源管理等核心能力。
  由于DevOps支撑平台核心也是基于Jekins来实现。
  因此财务应用花了不到一周的时间即全部迁移到了DevOps支撑平台上面。
  在这个阶段,我们实现了整个应用可以持续集成和发布,包括各个测试环境前的动态迁移,同时也支持将应用之间动态发布到类似阿里云,华为云的公有云环境。但是对于实施的客户来说,很多客户仍然是私有云的数据中心。那么持续交付这个步骤并不能自动化完成。
  在这种场景下,我们整个持续集成和交付就分为了两端,即后端测试人员测试和UAT测试全部通过DevOps平台来完成,但是最终的生产环境交付和部署需要手工交付给客户前方实施人员完成。
  这样,DevOps平台就必须有一个关键功能,即制品库和版本提取。
  即对于持续集成完成并测试通过的版本,我们需要打标签进行标记,通过标签我们可以直接在制品库功能中提取和下载对应的版本。
  版本的下载既提供下载部署包方式,也提供直接下载容器镜像方式。下载部署包方式的原因是客户现场有些并没有实施容器化部署,那就还必须保留对传统部署方式的支持。接口驱动开发
  在我们自己的API网关产品的开发中,实际上已经集成了Swagger工具,即可以将Swagger定义的接口描述文件直接导入到API网关里面,新生成和发布一个API接口。同时对于发布的API接口,我们还提供Mock功能,即先不要对接到后端服务,也可以提供按要求格式的接口数据返回,方便消费方进行测试。
  实际上在微服务架构设计和开发里面,特别是进行了前后端分离后,引入类似Swagger工具来实现基于接口驱动的设计开发是必须的。
  即首先通过Swagger定义清楚接口描述文件,并基于接口描述来生成前端消费端代码框架,后端提供端代码框架。这样确保接口契约,前端代码框架,后端代码框架三者一致,有了标准的接口契约前后端人员可以启动并行开发工作,后续再进行集成。
  在并行开发适合,通过API测试提供的Mock功能返回测试数据,前端开发人员基于测试数据即可进行前端功能的完整开发。同时在接口先行开发模式下,我们可以进一步通过Swagger来实现API接口的自动化测试功能,形成一个完整的闭环。
  在谈DevOps持续集成和交付最佳实践的时候,经常会谈到自动化测试,实际我们看到对于自动化测试中优先需要考虑的就是接口的自动化测试工作。

凌晨5点约女生去酒店,聊天曝光!这还是我们熟悉的郭麒麟吗?7月18日,网红安珀wang发文怒斥郭麒麟,抱怨其提起裤子不认账,我说互删这位大哥不知道多开心,曹完我不用敷衍我了哈哈哈,配图是两人的聊天记录。和很多人一样,笔者开始也是觉得难以置郑业成新剧三千鸦杀即将开机!十世虐恋!这下厉害了!各位好朋友们,一晃又到年底了,最近很多的影视平台都发布了明年的影视项目,而且大家有没有发现这些项目大多都是经典网文改编的作品,其中就有杨幂正在筹备的电视剧九州斛珠夫人,还有王凯的孤仝卓还未火,演艺事业就要凉凉了?这个细节还让人觉得他没文化翟天临的事情相信大家都知道了,为了自己提升在观众心中的形象,学历学霸都是假的,现在也没有出现在观众的视野中了,其实说实在的,觉得还挺可惜的,少了一个演技派的演员,又让很多的面瘫脸在天天向上的主持人钱枫要凉凉了?聊天记录曝光!真渣呀最近娱乐圈的瓜是一个接一个呀,还没等缓过神来,这不又有大瓜又来了!湖南卫视天天向上节目主持人钱枫被曝强奸!当事人已经报警这是什么大瓜呀,来的也是非常的突然,有消息称警方认为证据不足一生一世中这个细节这么暖心!原来编剧一开始就埋下了伏笔了哈喽,大家好,我是你们的好朋友娱扒妞!是不是有很多的小伙伴和扒妞一样,每天等着盼着看一生一世呢?大家可以评论区分享一下自己看后的感受哦!聊剧,真是是最有意思的事情啦!今天扒妞就和大芒果台主持人,凭本事上岗的时代终于来了!网友终于等到这一天近日,芒果台的双11超拼夜,都是清一色专业主持人!何炅汪涵,梁田刘烨靳梦佳李莎旻子。代替了之前的谢娜吴昕杜海涛和大张伟等。觉得舞台一下子干净利索了好多,之前所有的大型活动的主持台上18丧父19秃头27岁为男一号压上全部身家,徐峥是怎么逆袭的?2012年,风头正劲的周立波嘲讽徐峥,小弟弟,你扮猪挺像,扮人挺囧。转眼间快10年了,当年红得发紫的周立波早已被人遗忘,而徐峥却越来越牛叉,集演员导演编剧投资人于一身,成为了华语影周扬青新欢曝光男方甩罗志祥好几条街周扬青和罗志祥分手已经一年多了。当时两人的事件闹得沸沸扬扬的,而罗志祥也因为海王的负面形象被众多内地节目拒绝录用,直接淡出内地观众视野。罗志祥的一些死忠粉还寄托于周扬青可以回心转意赵丽颖有这么可怕?于正新剧紧急换挡,不敢正面刚!竟是因为她?2018就这样悄悄的快要结束了,电视剧市场也迎来了岁末的模式,各种的好剧大剧也开始纷纷抢占资源,要么贺岁,要么就是开年!不知道别人,反正小编我是看得目不暇接,有点招架不住了!大家还聂远40岁我信,沙溢40岁我信,李晨40岁我信,而他竟也40多岁了?在娱乐圈40岁的男明星是很多的,而且现在的女孩也是格外喜欢这个年龄的大叔,成熟稳重,事业有成,而且这些男明星么也是更加注重自己的仪表和形态了,也更加注重自己身体的保养,那么自己的魅张雨绮回应与袁巴元复合!表示接受任何人追求!你们城里人真会玩说起张雨绮大家一定是不陌生的,她在娱乐圈里也是出了名的暴脾气,前段时间更是因为持刀上到老公袁巴元第二天俩人火速离婚的消息而登上了各大热搜榜!很多人都在网上对张雨绮的称呼是霸气我绮姐
中餐厅5完美落幕,丁真的加入让整个节目都升华了芒果台的大热综艺中餐厅5完美落幕了。最后一期中,丁真的弟弟平措也加入了进来,同时丁真还带来了家乡特产哈达和一碗奶菜。在和黄晓明的合影中,穿着藏服的平措看着比他的哥哥丁真更年轻。其实杨幂魏大勋分手实锤?京城小少爷和女海王恋情?某男女爱豆录制节目有分歧?吴亦凡有私生子?张小寒的漫画又引发小范围震荡了,她昨天说了一个女海王和京城小少爷男星恋爱的故事。女海王和男星在一起之前,和许多练习生暧昧,还和嘻哈偶像谈过恋爱虽然指向性很明确,但结张哲瀚还有资本力保?李宇春抢C位?某男女爱豆录制节目有分歧?吴亦凡有私生子?李宇春又惹上C位癌的争议了。起因是芒果晚会的预告海报中,奥运冠军许昕稳站C位,旁边是李宇春和孙一文等人。然而晚会播出前,节目海报中稳站C位的人变成了李宇春,其他人都肖战转战海外市场?baby黄晓明假复合?某女星为朋友拒绝上节目?baby黄晓明假复合?有网友在社交平台上发文表示,在北京环球影城偶遇黄晓明baby一家三口,由此引发不小的热议。baby打扮非常低调,小海绵正手舞足蹈地和朋友讲话,而黄晓明疑似站在在线音乐是门好生意吗?轮到网易云来证明了作者林洛编辑友子5月26日,人格主导色营销刷屏朋友圈当天,网易宣布网易云音乐将单独在港交所上市,分拆后网易将继续拥有网易云音乐62。46的股权。年初虾米音乐关停后,国内音乐市场真正网播数据去水大作战广电版标准难落地,离透明还很远?作者林洛编辑友子近日,长视频平台高管炮轰短视频侵权近期成为舆论焦点。用户连年激增的短视频,迅速分流了大众有限的娱乐时间。往年一部剧集动辄播放量几百亿,让网播数据成为近年行业规范的重靳东原创是挑战,但这正是音乐剧伪装者的意义专访作者林洛编辑友子时隔6年,靳东又一次与伪装者一起出现在了一起。但这一次的伪装者是一部音乐剧,而他本人也拥有了全新身份音乐剧制作人。7月8日下午,由演艺大世界上海音乐剧艺术中心(SM恰好是少年导演胡明希望观众看完能感觉人间值得专访作者丁楚乔编辑友子长大成人是一个过程,恰好是少年更符合一种活在当下的态度。当被数娱君问起节目改名缘由时,恰好是少年导演胡明言简意赅。7月4日晚,恰好是少年更新了第三篇番外。这档慢综深度起底微短剧市场抖音快手微视的短视频必争之地作者林洛编辑蟹老板您关注的快手小剧场更新了。如果你最早通过快手关注了微短剧领域,那么每天将会收到N多条这样的推送。在过去两年里,微短剧已经成为三大短视频平台竞相投入的主要内容赛道。剧本杀正在被捧杀?ampampquot不来钱,不热爱请别来ampampquot深度作者丁楚乔编辑友子世界上能挣快钱的路子有很多,如果你不是因为喜欢剧本杀而留在这一行,真心不建议你现在来干这种不挣钱的活。聊起剧本杀,曾经从业一年半全职DM(DungeonMaste尚气最后关头挽救舆情迪士尼与中国的新周期作者丁楚乔编辑友子两周后,漫威新片尚气与十环传奇将在海外公映,影片的中国档期依然没有消息。当地时间8月16日,尚气在洛杉矶首映。影片改编自漫威漫画,讲述功夫大师尚气(刘思慕饰)摆脱