对于企业应用来说,软件架构是企业应用当中最重要的基础和组成部分,随着互联网技术的高速发展,企业应用架构在新技术的推动下,自身也经历了多次的更新和迭代。从最初的单体架构,发展为第二代基于ESB(企业服务总线)的SOA架构,直到最近快速兴起的微服务架构。可以说技术的革新一直推动着设计的改变,软件架构的设计模式也朝着更简单、更易用的方向快速前进。从这点可以看出,微服务架构也是互联网技术发展的必然产物,是未来软件架构的发展趋势。

如上图,微服务架构是一种分布式架构,它提倡将单体架构的应用程序划分成由很多小的服务组成的分布式系统,通过服务之间互相协调、互相配合来完成复杂的业务功能。每个服务运行在其独立的进程中,服务与服务间采用轻量级的通信机制互相沟通(通常是基于HTTP协议的RESTful API)。每个服务相当于分布式架构中的一个具体功能模块,能够被独立的开发、测试、部署。

和传统单体架构相比,微服务架构拥有更好的灵活性、扩展性、伸缩性以及高可用性。与此同时,以Docker为代表的容器虚拟化技术的盛行,将大大降低微服务实施的成本,为微服务落地以及大规模使用提供了坚实的基础和保障。

为什么要发布这样一款产品

目前,从国内企业应用软件架构现状来看,绝大部分公司内部的系统还是在使用第一代或第二代的企业应用架构模式,和第三代的微服务架构相比,第一代和第二代架构的设计模式存在诸多技术瓶颈,已经难以帮助企业提高信息化的价值。

和微服务架构相比,传统的企业应用架构在灵活性、扩展性、稳定性、可维护性等方面都无法令人满意。企业用户也认识到了问题的严重性,并试图改进公司内部系统的架构,但是无奈的是,国内成熟的微服务架构解决方案并不多,无法给企业用户带来实质性的帮助。针对这种情况,东软深入调研并全面实践了微服务架构,在融合了东软开发平台和DevOps自动化工具的基础上,推出了SaCa ACAP敏捷云支撑平台,为企业用户提供微服务架构的一站式解决方案。

那么SaCa ACAP是如何帮助企业实践微服务架构?产品本身又具有什么亮点?

下面,让我们从企业用户的角度出发,一步一步的来了解SaCa ACAP。

传统企业应用架构的不足

对企业用户来说,当前的大部分项目都在使用传统应用架构,在这类项目的开发和实施过程中,传统应用架构的缺点也被充分的暴露出来,下面让我们通过交付成本、水平伸缩和资产复用三个方面,来分析传统企业应用架构的不足。

交付成本

单体架构下,随着应用功能的不断扩展,代码会越来越复杂,团队规模也在逐渐扩大。与此同时,项目的开发成本、管理成本、沟通成本、人员协调成本必然会显著增加。而且随着项目不断的迭代,应用越来越复杂,开发、测试、部署的周期也越来越长,最后导致项目的交付周期不断延长,这就使项目开发的投入成本比计划成本的要多得多,甚至成倍增长,致使项目的可控性持续下降,实施风险越来越大。

水平伸缩

单体架构的应用程序代码都集中在一处,业务代码和架构代码高度耦合在一起,功能模块之间也没有清晰的界限,导致项目完全成为了一个高耦合,低内聚的“顽石”,无论是开发、测试、部署,都需要整个项目重新构建并运行,随着应用的不断扩展,系统的可靠性越来越低。同时应用的水平伸缩只能基于整个系统进行扩展,无法针对某一个功能模块按需扩展,实现弹性伸缩十分困难。

资产复用

单体架构系统倾向于采用统一的技术平台或方案来解决所有问题。通常,技术栈由团队的架构师、技术经理完成评估后,项目使用的开发语言、中间件、持久化存储等方面就会完全的固定下来,团队中的每个成员都会使用相同的环境,不能有差错。然而,互联网的技术日新月异,很多更轻量、更高效的技术和框架不断出现,单体架构下的系统很难对现有的技术栈进行升级。同时,由于系统的高度耦合性,想要设计出通用的功能模块和业务模块十分困难,如果在其他项目中有类似的功能,却无法复用现有系统的模块,就会形成资产浪费。

通过上述三方面的分析,我们可以看出,单体架构不但本身存在诸多问题,而且技术更新困难、交付成本高、弹性伸缩和资产复用无法实现,已经很难满足企业快速创新的需求。

那么和传统的单体架构相比,微服务架构是如何解决传统企业应用架构存在的问题呢?

微服务架构的核心优势

快速交付、持续交付

在微服务架构下,复杂的单体架构应用被拆分成为轻量级、分布式的微服务应用,每个微服务应用都是一个高内聚的功能模块,复杂的业务逻辑分派到多个微服务应用之上,通过微服务应用之间的协作来完成,实现了业务的解耦。而且微服务应用是单独开发、测试和部署,应用的规模在可控范围之内,通过组建小规模DevOps团队即可轻松管理和运维。而且微服务应用规模小、功能明确,使应用的持续集成、持续交付变得非常方便,可以快速的响应业务需求的变化。

水平扩展、弹性伸缩

单体架构系统由于单进程的局限性,水平扩展时只能基于整个系统进行扩展,无法针对某一个功能模块按需扩展,而微服务架构则可以完美地解决应用的伸缩性问题,系统可以根据实际的负载情况实现高效的按需扩展。通过Docker等容器化技术快速实现微服务应用的水平扩展,在并发需求不高的情况下,可以减少容器数量,节约资源;在高并发需求的情况下,可以快速实现千台容器级别的动态扩容,满足负载需求。

资产复用、快速组装

微服务架构下的每个微服务都是一个独立的应用程序,一些具有“原子性”的微服务功能模块可以统一管理,进行复用,比如:支付交易模块、总线通信模块、消息队列模块等,都可以通过功能模块的形式实现资产复用,当其他的项目或业务流程中有相同的功能需求时,可以直接使用具有相关功能的可复用模块,实现项目的快速组装。

从上述三方面的对比分析来看,微服务架构相比单体架构具有诸多优势,可以实现项目的快速交付、持续交付;实现项目的水平扩展、弹性伸缩;实现模块的资产复用、快速组装。由此看出,使用微服务架构可以帮助企业快速搭建高可用的分布式服务体系。

需要解决哪些技术难题

微服务架构由于分布式的特点,相比传统的单体架构会更加复杂和灵活,在实现微服务架构的过程中,会有很多技术上的细节需要考虑,这些技术是实现微服务架构的先决条件,那么实现微服务架构需要的关键技术涉及哪几个方面呢?

如何实现分布式服务调用?分布式服务调用是微服务框架的核心技术,微服务之间需要通过分布式服务调用去实现通信。一套稳定,高性能的分布式服务框架,是实现微服务架构的重要组成部分。

如何保证数据最终一致性?在微服务架构下,数据会经过多个微服务应用的处理,它是一个并发、异步的处理过程。在这个处理过程中,如何保证数据的一致性和正确性,是必须要解决的问题。

如何定位分布式系统问题?在分布式系统中,一次完整的业务流程可能会经过多个微服务的处理,如何去跟踪和监控服务调用的过程,关系到整体系统的稳定。

如何运维大量微服务应用?基于Docker等虚拟化技术的微服务应用可以实现秒级的弹性伸缩,在大数据、高并发量需求的情况下,有可能一次扩容上千台服务器,再加上系统中其他功能的微服务应用,如此大量的微服务应用,如何去运维和管理,都需要考虑。

SaCa ACAP 敏捷云支撑平台是东软企业互联网架构解决方案的核心产品,在融合了东软平台多年的企业架构设计经验的基础上,全面提供了对微服务架构的支持,力图帮助企业用户快速、高效、高质量的搭建微服务架构体系。

关键组件支撑

分布式服务框架,SaCa ACAP分布式服务框架基于RPC框架实现。相比ESB架构,RPC框架实现了服务调用的“去中心化”,使微服务之间的通信“点对点”的完成,并优化了服务调用的性能。SaCa ACAP 分布式服务框架有效的解决了分布式服务之间的调用问题。支持REST风格远程调用,统一了标准。同时对于特殊的业务需求,REST可以灵活的替换成RPC,Thrift,HTTP/PB等,具有高度的可扩展性;支持基于Hessian的高效序列化实现,保证了在大数据,高并发的情况下数据的传输性能;支持配置推送,采用Spring配置方式,透明化接入应用,对应用没有任何API侵入;提供服务注册中心,支持REST/RPC/SOAP等服务类型,还包含服务发现、服务注册、服务版本控制、服务查询分析等功能;提供服务监控中心,实现可视化的服务监控管理界面,实时查看注册服务的详细信息;支持服务的自动弹性伸缩,基于Docker容器化技术,快速实现微服务的扩展和收缩。

API网关,SaCa ACAP提供对API网关的支持,API负责服务请求路由、组合及协议转换。客户端的所有请求都首先经过API网关,然后由它将请求路由到合适的微服务。API网关内部包含各种处理流程,用户可以定制API网关流程,实现客户需要的业务。支持多种通讯协议,包括REST、RPC、HTTP等;支持多种数据格式,包括XML、JSON等;提供图形化服务编排工具,通过工具快速设计API网关的服务流程;支持服务限流,提供对微服务应用数据并发量的控制,当超出预设值时,自动执行限流操作;支持服务降级,当服务器压力剧增的情况下,根据当前业务情况及流量对一些服务有策略的降级,以此释放服务器资源以保证核心任务的正常运行;支持集成不同的安全框架,根据用户对信息安全的需求,可以灵活的嵌入系统,如:Apache Shiro、Spring Security;支持负载均衡,通过Nginx等负载均衡技术,可以快速实现API网关的负载均衡;支持输出各类日志用于服务监控。在API网关中,支持输出本地日志和远程日志,为服务的监控提供数据支持。

分布式链路跟踪,SaCa ACAP 基于 Google Dapper 概念,设计并研发了基于微服务架构的分布式链路跟踪系统,通过集成可视化分析产品,对微服务架构各个环节进行主动监控、主动分析。支持服务调用链的跟踪,对流程经过的微服务应用进行链式记录,方便进行跟踪分析;支持服务搜索功能,快速的发现、定位关键问题;支持服务的状态展示和分析;可视化的分析报表,包括吞吐量、性能、业务指标,拓扑图、服务调用链等。

分布式实时监控,SaCa ACAP 提供对微服务的实施监控功能,包括对微服务业务日志的监控和分析、对微服务所在服务器或虚拟环境的监控和分析。支持微服务应用的业务日志的监控;支持微服务运行环境的监控和分析;可视化的监控界面;支持自定义监控看板,用户可以自定监控看板的功能,设置定时刷新;支持监控跟踪和推动报警;支持大数据检索功能,通过查询,可以进行数据分析和预测。

DevOps持续交付,为了应对不断变化、快速发展的互联网环境,应用的持续集成、持续交付变得越来越重要,敏捷开发、精益方法的理念更是深入人心。SaCa ACAP基于容器化技术和DevOps文化,为企业应用的快速交付,持续交付提供了自动化的处理流程,帮助企业优化工作流程,提高效率。基础设施自动化,自动创建微服务虚拟环境,实现服务器的弹性伸缩;版本测试自动化,可以对应用版本的各个分支进行管理,同时对应用的代码进行自动打包,自动测试(代码检查);测试自动化,包括功能测试、单元测试、压力测试和安全测试;生产版本自动化,对于通过测试的应用程序版本,会自动发布到生产环境的代码库中,等待自动化的部署操作;生产环境热部署,通过热部署工具可以将应用程序自动的发布到服务器或Docker虚拟环境中,完成应用的部署操作,同时支持应用版本的管理,包括版本升级、版本回滚、版本同步。

在技术的道路上,我们从未落后

SaCa ACAP 敏捷云支撑平台通过对微服务架构的深入理解和实践,实现了微服务设计、开发、测试、维护、监控的一站式管理,帮助企业快速搭建分布式应用服务体系,同时为传统企业的互联网转型提供了优秀的解决方案。
 

相关产品