解析微服务架构:微服务重构应用及ibm解决方案

慢慢走向CEO 慢慢走向CEO     2022-09-20     566

关键词:

解析微服务架构系列文章将分几篇描述微服务的定义、特点、应用场景、企业集成架构的演进以及微服务转型思路和技术决策考虑等内容,并以IBM技术为例介绍如何实现微服务架构转型。

上一篇文章介绍了融入微服务的企业集成架构的演进,并介绍交互式系统的微服务模式及技术决策例子。

本篇文章将介绍已有IT应用如何进行微服务重构的转型,以及IBM微服务相关解决方案的介绍。

 

微服务转型

采用微服务架构意味着以更复杂的运维环境为代价,实现更高速的应用交付及更快推出市场。因此企业需要在更快的交付与更复杂的运维之间进行权衡。

技术分享

大部分企业都有大量遗留的应用系统,因此对需要更快更好地满足业务需求成为迫切任务时,大部分情况下企业不会全新构建一个完整的应用,通常情况下是企业对已有应用进行重构或希望能尽量重用已有代码

向微服务架构演进通常包括以下几个阶段:

1.传统的SOA服务化改造;

2. 开始引入某些微服务原则,进行针对性重构,如“一个任务一个服务”;

3. 引入整套完整的微服务原则;

4. 实现微服务的规模化 – 添加服务发现、服务缩放能力等增强特性。

 

并非所有应用都需要完成上述的各个阶段,一个基本原则是重构解决针对性业务问题,需要避免为了“微服务”而“微服务”化。

 

需要注意的是并非所有应用都可以转变为微服务架构:

  • 部分系统无法重构为微服务架构:例如非常老旧又缺乏维护的系统,对此类系统可以采用“如果应用无法被打破,就不要试图解决它”的策略,其中SOA资产重用化应该是更佳的解决方案。

  • 原有应用无法改变数据存储方式:对这种情况,需要考虑如果数据仍然保持烟囱式或集中式存储,那对应用进行微服务化是否具有业务价值;需要考虑切分数据库是否会导致事务性保障的缺失并进而影响系统的稳定性;同时也可以考虑应用能否采用如BASE、CQRS等模式解决数据的一致性问题。

  • 原有系统如何融入微服务架构:在原有系统中剥离部分功能并重构为微服务时,如何实现微服务与原有系统在高可用性上的隔离,如果原有系统与微服务的扩展性不匹配又如何处理?这些问题也许要在进行微服务重构前考虑清楚。

 

微服务重构

重构应用方面,可通过以下方法梳理微服务:(1)每个REST服务是一个潜在的微服务;(2)每个SOAP web服务或EJB是一个潜在的微服务,特别是无状态的session bean,需要将面向功能的接口重新设计为面向资产的接口,并使接口转变为RESTful形式;(3)使用领域驱动设计(domain-driven design)发现企业资产,这些资产可能是微服务。

重构数据方面,需要考虑以下几个方面:(1)寻找与其他数据关联不大的数据孤岛,检查系统的实体-关系图;如果有与其他数据断开的数据,就是一个潜在的数据重构点;(2)数据表非规范化,对高规范化数据库中非规范化一些数据表以将数据重组为更大的逻辑块,其目的是增加数据冗余度使其更容易被打破;(3)反向批数据更新,对数据重构时需要考虑数据重构失败时可批量地将新数据反向导回旧的数据模式;(4)使用主数据管理,对被广泛使用的数据实体组成一个单一的一致性视图,并开发相应的微服务与主数据一起工作;(5)在SQL数据库中寻找存储在BLOB(二进制大对象)字段类型中的代码,转而将这些对象存储在NoSQL数据库中,例如以键值(Key-value)存储方式存储;(6)寻找活跃的记录模式,与其他无关的Flat对象,使用文档模式数据库进行存储,例如Cloudant或Mongo等。

微服务重构后还需要重新打包应用,包括:(1)分割应用的EAR文件并打包成独立的WAR文件;(2)应用“一个容器一个服务”,分别部署每个WAR文件至其自有的WebSphereLiberty实例运行时或Docker容器中;(3)分别构建、部署和管理,为每个WAR文件使用独立的DevOps管线,每个WAR文件独立伸缩和管理。

技术分享

 

微服务IBM解决方案

  • API Connect - 创建、运行、管理及保护API能力开放和微服务应用的企业级平台。

企业为了加速应用开发以满足不断增长的需求,需要开放内部的业务和数据能力并吸引合作伙伴及开发者基于其能力快速创新,IBM API Connect为企业提供了一个统一完整的API能力开放平台解决方案,实现API的创建、运行、管理、安全保证和微服务运行环境以满足企业参与API经济的需求。

IBM API Connect平台为数字化应用提供基础能力:(1)创建微服务并将为其提供对外的API接口;(2)管理、控制及保护REST和SOAP API;(3)为企业内外的应用开发者提供自服务的API门户;(4)将API接口发布到多个开发者门户;(4)分析API用量和性能指标。
技术分享

 

  • WAS Liberty+WXS - 基于OSGi内核,高模块化,高动态性的轻量级WebSphere应用服务器,以及具备企业级高可用性的缓存服务,助力快速交付的微服务应用

微服务应用要求与各微服务有独立的运行环境,因此传统的应用服务器容器显得过于笨重,因此企业需要使用轻量级的应用服务器容器,但同时还需要考虑完善的技术服务支持。

IBM WAS Liberty是IBM开发的基于Java的轻量级WebSphere应用服务器,既满足了创新型应用轻量级的要求,又为企业提供了有效的商业技术支持,避免企业由于使用开源软件而有可能出现的技术支持风险。


技术分享
技术分享
技术分享

 

   WXS(WebSphere eXtreme Scale)则提供高性能、可扩展的高速缓存框架和网格技术,通过多样化数据存储加速微服务应用访问效率。

技术分享

 

  • PureApp+ICO+UCD组成的混合云框架为企业提供私有云自动化部署的完整解决方案

微服务应用需要IT基础设施提供多种自动化能力以实现应用的快速上线和自动伸缩。IBM UrbanCode Deploy、IBM CloudOrchestrator和IBM PureApplication是三种可供企业客户组合搭配提供包括企业自动化部署加速应用持续交付、企业私有云自动化弹性伸缩环境和软硬一体化的私有云解决方案

技术分享

 

  • IBM Bluemix 创新应用开发平台

微服务架构提倡使用多样化的编程语言多样化的存储,以最适合的技术解决业务需求并实现快速上线自动伸缩。IBM Bluemix平台能够很好地满足此类需求。

Bluemix 是一个基于开放标准和云的平台,可以用于应用的快速构建、运行及管理。Bluemix 由三大关键的开放计算技术支撑:Cloud Foundry, Docker, 以及 OpenStack。在其上进行了大量服务(目前超过100多种,并且服务数量还在不断增长)的扩展,健壮的 DevOps 工具,集成能力,以及无缝的开发人员体验。

技术分享

Bluemix四大核心能力提升创新应用交付速度和价值:(1)Bluemix提供一体化运行环境,保证创新应用秒级上线;(2) Bluemix提供百余种流行的服务模块,构建应用简单快速;(3) Bluemix提供高效管理手段DevOps,保证应用强健稳定;(4) Bluemix可以放在本地,又可以无缝连接其公有云,具有多种部署模式,让企业具有更大的灵活性,形成更大的创新生态圈

技术分享

 

 

——本文转载





微服务架构及幂等性(代码片段)

...概念,旨在通过将功能分解到各个离散的服务中以实现对解决方案的解耦。它的主要作用是将功能分解到离散的各个服务当中,从而降低系统的耦合性,并提供更加灵活的服务支持。和微服务相对应的,这种方式一般被称为单体... 查看详情

微服务架构:什么是微服务

解析微服务架构系列文章将分几篇描述微服务的定义、特点、应用场景、企业集成架构的演进以及微服务转型思路和技术决策考虑等内容,并以IBM技术为例介绍如何实现微服务架构转型。为什么需要微服务架构“微服务”架构是... 查看详情

微服务是什么?

解析微服务架构系列文章将分几篇描述微服务的定义、特点、应用场景、企业集成架构的演进以及微服务转型思路和技术决策考虑等内容,并以IBM技术为例介绍如何实现微服务架构转型。为什么需要微服务架构“微服务”架构是... 查看详情

解析微服务架构:融入微服务的企业集成架构

上一篇文章介绍了微服务架构的起源、定义、通用特性、常见概念误区、微服务架构与SOA架构比较、微服务架构收益以及企业引入微服务架构的策略。本文将介绍融入微服务的企业集成架构的演进,并描述交互式系统的微服务模... 查看详情

微服务当中的4大设计原则及19个解决方案,你知道吗?

微服务架构现在是谈到企业应用架构时必聊的话题,微服务之所以火热也是因为相对之前的应用开发方式有很多优点,如更灵活、更能适应现在需求快速变更的大环境。本文将介绍微服务架构的演进、优缺点和微服务应用的设计... 查看详情

一文教你微服务当中的4大设计原则及19个解决方案!

微服务架构现在是谈到企业应用架构时必聊的话题,微服务之所以火热也是因为相对之前的应用开发方式有很多优点,如更灵活、更能适应现在需求快速变更的大环境。本文将介绍微服务架构的演进、优缺点和微服务应用的设计... 查看详情

一文读懂微服务架构的重构策略

...每天开发和部署应用程序的经历都很缓慢而且很痛苦。微服务看起来非常适合你的应用程序,但它也更像是一项遥不可及的必杀技。如何才能走上微服务架构的道路?下面将介绍一些策略,帮你摆脱单体地狱,而无须从头开始重... 查看详情

springcloud微服务-全栈技术与案例解析目录

第一部分:准备篇101SpringCloud与微服务概述101.1传统的单体老项目101.1.1单体应用101.1.2改进单体应用的架构101.1.3向微服务靠拢111.2什么是微服务121.2.1微服务介绍121.2.2使用微服务架构的好处121.2.3使用微服务架构的害处131.2.4重构前... 查看详情

软考论文案例-论微服务架构及其应用

...微服务架构模式后,在软件开发过程中遇到的实际问题和解决方案。经过项目组近一年的努力,本产品已顺利开发完成,目前,已在北京、郑州、云南等多省市上线使用,取得客户和公司领导的一致好评。正文(2700):2018年,... 查看详情

微服务架构引入的问题及解决方案

微服务间如何通讯?从通讯模式角度考虑一对一还是一对多?一对一同步:请求响应模式,最常见异步:通知/请求异步响应一对多异步:发布订阅/发布异步响应从通讯协议角度考虑RESTAPIRPCMQ如何选择RPC框架I/O、线程调度模型序... 查看详情

微服务架构探讨及甲骨文中间件微服务技术解决方案

...RmPuslR_JnXg 微服务架构探讨及甲骨文中间件微服务技术解决方案2017-04-12 胡平 甲骨文开发者社区随着传统企业受到互联网+的冲击,越来越多的企业都在面临业务转型,如何更好地贴近客户以获取更高的客户满意度,如... 查看详情

微服务架构特征及与单体架构的对比

...周打算关注一个很早就知道但一直没深入研究的主题~微服务架构。今天加班比较晚,就转一下刚看到的微信公众号新IT联盟一篇文章。微服务架构最主要的两个特征:细粒度和独立,简单来讲微服务就是细粒度的独立的服务。... 查看详情

微服务架构洁介绍及开源框架

微服务现在是一个很火的概念,尤其是搞IT的大多数都对其有所了解。到底火到什么程度呢?2016年有一个统计说,两千家企业里,30%在使用微服务,15%在实验开发和测试微服务架构,24%在学习微服务准备转型,只有剩下的30%的企... 查看详情

chrisrichardson微服务翻译:构建微服务之微服务架构的进程通讯

ChrisRichardson微服务系列翻译全7篇链接:微服务介绍构建微服务之使用API网关构建微服务之微服务架构的进程通讯(本文)微服务架构中的服务发现微服务之事件驱动的数据管理微服务部署重构单体应用为微服务原文链接:Building... 查看详情

用友云服务治理平台助力企业微服务架构落地

...要问题,微服务落地实施过程中所遇到的关键问题和对应解决方案。同时,文章也介绍用友云旗下的微服务治理平台的核心功能和技术架构,以及微服务治理平台在用友云一些产品下的实践,下一步的发展计划和趋势。用友云微... 查看详情

微服务

...服务(Microservice)是一个架构模式,而不是一个特定的技术解决方案。其并不会将开发中的各个难点全部转移,而只是允许通过更为合适的技术来适当简化单个子服务的开发,或者绕过开发中可能遇到的部分难点。微服务(Microservice... 查看详情

单体应用产生的痛苦,微服务并不能解决……

本文作者通过分析微服务的常见优点能解决的问题,提出如何使用单体应用来缓解这些问题,最终指出采用微服务还是单体架构要根据团队实际情况,而不是为了微服务而微服务。作者最后给出建议,中小团队和新型团队,建议... 查看详情

阿里巴巴微服务架构到底有多牛逼?

...加稳定、可用。理论结合实战,透彻理解分布式架构及其解决方案。面向人群1、工作1-5年需要突破瓶颈2、传统行业转型进入互联网行业的人群在技术深度和技术广度上得到飞跃的提升。成为互联网行业所需要的IT型人才微框架1... 查看详情