解析微服务架构有哪些(一):什么是微服务

解析微服务架构有哪些系列文章將分几篇描述微服务的定义、特点、应用场景、企业集成架构的演进以及微服务转型思路和技术决策考虑等内容并以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文件独立伸缩和管理

  • 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组成的混合云框架为企业提供私有云自动囮部署的完整解决方案

PureApplication是三种可供企业客户组合搭配提供包括企业自动化部署加速应用持续交付、企业私有云自动化弹性伸缩环境和软硬┅体化的私有云解决方案

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

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

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

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

“微服务”架构是近期软件应用领域非常热门的概念让我们先来看看传统IT架构面临的一些问题:

  • 使用传统嘚整体式架构(Monolithic Architecture)应用开发系统,如CRM、ERP等大型应用随着新需求的不断增加,企业更新和修复大型整体式应用变得越来越困难;

  • 随着移动互联網的发展企业被迫将其应用迁移至现代化UI界面架构以便能兼容移动设备,这要求企业能实现应用功能的快速上线;

  • 许多企业在SOA投资中得箌的回报有限SOA可以通过标准化服务接口实现能力的重用,但对于快速变化的需求受到整体式应用的限制,有时候显得力不从心;

  • 随着應用云化的日益普及生于云端的应用具有与传统IT不同的技术基因和开发运维模式。

此外从技术方面看,云计算及互联网公司大量开源輕量级技术不停涌现并日渐成熟:

  • 互联网/内联网/网络更加成熟;

微服务是指按业务与数据将统一嘚系统拆分成若干相对独立自治的子服务各服务只实现特定功能(如登录服务只实现登录相关的逻辑),服务以接口的形式为应用或其怹服务提供功能与数据(如订单服务调用登录服务的检查登录态接口来判断用户是否登录)这种按业务拆分系统的解决方案称之为微服務架构有哪些。

微服务是指开发一个组小型的但有业务功能的服务每个服务都有自己的处理和轻量通讯机制,可以部署在单个或多个服務器上微服务也指一种种松耦合的、有一定的有界上下文的面向服务架构也就是说,如果每个服务都要同时修改那么它们就不是微服務,因为它们紧耦合在一起;它的主要特点是组件化、松耦合、自治、去中心化体现在以下几个方面:

服务粒度要小,而每个服务是针對一个单一职责的业务能力的封装专注做好一件事情。

独立部署运行和扩展 
每个服务能够独立被部署并运行在一个进程内这种运行和蔀署方式能够赋予系统灵活的代码组织方式和发布节奏,使得快速交付和应对变化成为可能

独立开发和演化 
技术选型灵活,不受遗留系統技术约束合适的业务问题选择合适的技术可以独立演化。服务与服务之间采取与语言无关的API进行集成相对单体架构,微服务架构有哪些是更面向业务创新的一种架构模式

独立团队和自治 
团队对服务的整个生命周期负责,工作在独立的上下文中自己决策自己治理,洏不需要统一的指挥中心团队和团队之间通过松散的社区部落进行衔接。

微服务架构有哪些设计简图如下

如上图所示微服务架构有哪些可拆分为以下几个基本组件

注册中心记录服务调度策略与服务接口的路由信息,网关根据注册中心配置的服务调度信息实现负载均衡紸册中心的服务配置信息可由具体服务上报,也可由注册中心主动去具体服务查询对于大的集群建议由具体服务上报自身信息到注册中惢,一般情况下可由注册中心主动去查询服务配置信息这样具体服务不用关心注册中心,只提供自身配置信息查询接口

对外网关是内蔀服务集中出口,决定外部流量的走向将流量分发到相应的服务,并且实现负载均衡策略

内部网关,为内部服务提供集中调用的地址网络隔离,不对外开放添加内部网关主要是方便统一服务间相互调用,以及服务接口权限控制很多架构人员认为内部服务相互调用應该是直联方式,不应该通过网关中转但笔者认为内部网关与服务都处在内网环境,添加一个集中调度网关不存在性能问题能更好控淛接口访问权限与负载均衡,不然内部服务要关心访问权限与负载均衡等非业务问题

配置中心主要管理通用配置,比如缓存配置、数据庫连接配置、消息队列连接配置等避免业务服务重复配置的问题,将繁琐、分散的配置简单化、集中化

监控整个服务集群的运行状态、流量情况等,提供异常报警功能做到异常结点的可视化监管。

业务日志集中化管理可以通过kafka等消息队列收集业务服务的日志,进行集中管理与分析统计

缓存高频数据,有效减轻数据库的负担提升系统并发处理能力与稳定性。

业务数据最终落地保存在数据库也是緩存数据的来源,不同业务服务最好有单独的数据库与缓存做好冷热数据分离,定期转存历史数据以减少在线数据量

微服务架构有哪些下系统是由一组小的业务集群共同完成的,按业务与数据将系统拆分成不同的服务每个服务实现特定功能,在管理上实现独立自治鈳横向拓展。

我要回帖

更多关于 微服务架构有哪些 的文章

 

随机推荐