一种基于微服务架构的SaaS应用构建方法技术

技术编号:14822649 阅读:1650 留言:0更新日期:2017-03-15 20:51
本发明专利技术提供一种基于微服务架构的SaaS应用构建方法,针对目前很多基于传统SOA架构的构建方法中存在的缺点,该方法包括:制定了开发微服务的设计原则和属性模型,并通过Docker容器实现微服务实例的部署;搭建了分布式的微服务元数据集群,对微服务、微服务提供者和微服务使用者的元数据进行统一管理;针对实时更新的状态数据和相对固定的属性数据分别设计了高可用的存储方案;针对元数据实时高并发的读写需求,设计了一套结合Redis主从服务器模型和读写分离架构的方案;针对微服务实例动态增删的情况,设计了基于一致性hash算法的负载均衡策略。本发明专利技术解决了微服务的开发、部署和管理方案,提高了开发SaaS应用的效率。

【技术实现步骤摘要】

本专利技术属于SaaS应用开发领域,具体涉及一种基于微服务架构的SaaS应用构建方法
技术介绍
云计算技术拥有强大的计算能力,高效的IT资源整合能力,带来互联网时代软件的开发和使用方式上的变革。SaaS应用开发模式正是在云计算技术广泛发展的背景下产生的一种全新的通过互联网提供软件服务的模式,用户可以根据自身的实际需求使用租用的方式灵活地使用软件。随着SaaS应用模式的发展,人们日益增长变化的需求导致软件功能需求频繁变化,使得软件的交付和迭代周期逐渐缩短,传统的长周期开发模式已经满足不了互联网时代的软件开发需求。而随着Docker容器技术发展而出现的微服务架构模式则可以很好地应对频繁交付的问题。微服务架构提倡将应用程序分割为多个独立的小服务,每个服务专注于自己的独立的功能,并运行在各自独立的进程中。服务与服务之间有比较明确的界限,互相之间通过一些比较轻量级的通信机制进行沟通。微服务的概念和SOA有相似之处,都提倡将复杂的应用程序按照不同的、可重用的功能划分为不同的服务,但是微服务的服务粒度更细,部署在独立进程中运行,并通过轻量级机制进行通讯,更加适合当前需求变更频繁、迭代速度快、交付周期短的互联网应用。因此对构成微服务架构的关键微服务的设计原则、属性模型和部署方法进行研究非常重要,需要明确设计与开发微服务过程中需要遵循的原则,在尽量符合这些原则的情况下进行开发部署可以更好地发挥出该架构所带来的优势。当开发者在云环境下运用微服务架构开发SaaS应用时,会出现微服务数量急剧增加、实时状态动态更新和节点动态增删等情况,我们需要一种能够有效针对微服务特点的管理方案,以便提高开发者使用微服务架构开发SaaS应用的效率。
技术实现思路
本专利技术所要解决的技术问题是根据微服务设计原则和属性模型开发微服务,并使用Docker容器部署多个微服务实例;将微服务实例的元数据实时更新到分布式元数据集群;元数据更新的同时触发负载均衡服务,通过一致性hash算法计算出实例分配情况的变化,并通知到实例的调用者;SaaS应用开发者通过负载均衡服务选取最优的微服务实例,并通过REST接口对微服务实例进行调用。为解决上述技术问题,本专利技术提供了一种针对微服务架构的高可用管理方法,其,包括:(1)微服务的属性模型设计:根据单一功能、独立部署、无状态、轻量级通信等微服务设计原则,制定了可以用来描述微服务的属性,包括名称、位置、版本、实时状态、身份验证信息、支持并发量、提供者信息等属性;(2)微服务部署:通过SpringBoot框架生成可执行的JAR包,使用基于Linux容器虚拟化技术的Docker容器来部署运行微服务实例;(3)微服务元数据更新:将实时更新的状态数据更新到Redis内存数据库中,将相对固定的属性数据更新到MySQL关系型数据库中,通过采用不同的存储方案实现不同类型元数据的更新功能;(4)微服务实例分配:一个微服务可以具有多个运行的实例,并且这些微服务实例可以进行动态的增加和删除,通过负载均衡服务对这些实例进行分配,以达到均匀地分配实例给不同的调用者。(5)微服务调用:SaaS应用开发者在通过负载均衡服务获取到最优的实例后,可以通过REST接口对微服务进行调用,通过组合不同的最优微服务实现高效地开发SaaS应用。与现有技术相比,本专利技术所述的基于微服务架构的SaaS应用构建方法,达到了如下效果:(1)本专利技术采用的SpringBoot框架生成可执行JAR包与Docker容器相结合的部署方法,有效实现了微服务实例的独立部署。(2)本专利技术实现的以海量微服务元数据统一管理为核心,包括高可用的微服务元数据存储、支持实时更新的读写分离和支持动态变化的负载均衡等一系列方案,有效地解决了开发者在云环境中使用微服务架构开发SaaS应用时遇到的微服务种类和数量急剧增多的问题。附图说明图1为微服务元数据统一管理方案架构逻辑示意图。图2为高可用的元数据存储方案架构示意图。图3为支持动态变化的负载均衡方案流程图。具体实施方式以下结合附图和实例对本专利技术的实施作进一步说明,但本专利技术的实施和保护不限于此。微服务设计原则与属性模型制定微服务架构作为一种软件开发模式,与传统的SOA面向服务的架构之间有着很多的相同点和不同点,而导致它们之间不同之处的原因关键在于它们所研究的对象的差异。所以对构成微服务架构的关键微服务的设计原则、属性模型进行研究非常重要,需要明确设计与开发微服务过程中需要遵循的原则,在尽量符合这些原则的情况下进行开发部署可以更好地发挥出该架构所带来的优势。本实例制定的微服务设计原则如下:(1)单一功能原则:单个微服务所负责处理的业务逻辑专注于某一具体的功能,并且该功能具有设计良好的对外接口,这些接口明确规定了功能之间的界限,规定哪些因素的变化才会导致此功能的变动。(2)独立部署原则:从物理属性的角度定义每个微服务在开发、测试、构建和部署的整个流程都是在物理上独立的环境中进行的,当对单个微服务进行修改、升级、重新部署运行都对其他微服务的运行没有影响。(3)无状态原则:微服务在接受处理外界的请求时不需要记录与外界使用者相关的通信信息,这样在某个微服务实例出现故障或者动态的扩展、缩减的时候,可以非常敏捷地添加或者缩减无状态的实例。(4)轻量级通信原则:采用一些与开发语言和开发平台不相关的机制进行交互。常用的轻量级通信协议有XML和JSON,这些协议具备对复杂信息的表达能力,能够实现跨平台的信息传输。根据以上设计原则,我们制定了微服务需要具备的属性模型,包括:名称属性、位置属性、版本属性、实时状态属性、身份验证属性、支持容量属性、服务者提供者属性。微服务元数据统一管理方案如图1所示,展示了针对海量、动态、实时更新的微服务实例状态进行统一地高可用、高性能管理,其关键特点如下:(1)多个微服务实例独立部署,海量的状态元数据和属性元数据需要实时更新到元数据集群;(2)微服务实例可以进行动态地扩展或者缩减,实例的增删变化实时更新到元数据集群;(3)负载均衡服务以集群的形式进行部署并提供服务,通过读取高可用的元数据集群获取微服务实例的位置信息和状态信息;(4)实例调用者首次订阅微服务时,访问负载均衡服务,结合微服务的状态信息和预设的负载均衡策略进行微服务实例的最优化选择,并将选择情况记录到调用者本地。(5)负载均衡服务记录调用者与所使用微服务实例的关系,若实例动态增减则及时通知调用者。(6)最终实例调用者通过实例提供的REST接口采用直接连接的方式与具体的微服务实例通信。高可用的元数据存储方案首先针对实时更新的状态数据,这类数据的特点是每次更新的数据量不大,并不需要很大的存储空间来处理单个更新的数据,但是其更新的频率较快而且更新的总体次数较多,所以需要一种相对较为简单并能够提供较高的数据读取性能的存储机制,选择Redis内存数据存储方案。利用Redis提供的丰富数据类型来设计状态数据的数据结构以便于分类存储和快速检索。比如微服务实例的状态属性的键的形式可以设置为字符串“microservice:instance:state:instanceId”,微服务实例实时的位置信息则可以设置为字符串“service_id:instance_id:url”。这种通过多个字段和本文档来自技高网
...
一种基于微服务架构的SaaS应用构建方法

【技术保护点】
一种基于微服务架构的SaaS应用构建方法,其特征在于包括:SaaS应用开发者根据微服务设计原则和属性模型开发微服务,并使用Docker容器部署多个微服务实例;然后将微服务实例的元数据实时更新到分布式元数据集群;元数据更新的同时触发负载均衡服务,通过一致性hash算法计算出实例分配情况的变化,并通知到实例的调用者;SaaS应用开发者通过负载均衡服务选取最优的微服务实例,并通过REST接口对微服务实例进行调用。

【技术特征摘要】
1.一种基于微服务架构的SaaS应用构建方法,其特征在于包括:SaaS应用开发者根据微服务设计原则和属性模型开发微服务,并使用Docker容器部署多个微服务实例;然后将微服务实例的元数据实时更新到分布式元数据集群;元数据更新的同时触发负载均衡服务,通过一致性hash算法计算出实例分配情况的变化,并通知到实例的调用者;SaaS应用开发者通过负载均衡服务选取最优的微服务实例,并通过REST接口对微服务实例进行调用。2.根据权利要求1所述的基于微服务架构的SaaS应用构建方法,其特征在于具体包括如下步骤:(1)微服务属性模型设计:根据单一功能、独立部署、无状态、轻量级通信的微服务设计原则,制定用来描述微服务的属性;(2)微服务独立部署:通过Sprin...

【专利技术属性】
技术研发人员:刘发贵李苏璇吴启亮
申请(专利权)人:华南理工大学
类型:发明
国别省市:广东;44

网友询问留言 已有0条评论
  • 还没有人留言评论。发表了对其他浏览者有用的留言会获得科技券。

1