CN109271143B - 基于云服务的微服务架构 - Google Patents

基于云服务的微服务架构 Download PDF

Info

Publication number
CN109271143B
CN109271143B CN201810948558.0A CN201810948558A CN109271143B CN 109271143 B CN109271143 B CN 109271143B CN 201810948558 A CN201810948558 A CN 201810948558A CN 109271143 B CN109271143 B CN 109271143B
Authority
CN
China
Prior art keywords
layer
service
micro
aggregation
architecture
Prior art date
Legal status (The legal status is an assumption and is not a legal conclusion. Google has not performed a legal analysis and makes no representation as to the accuracy of the status listed.)
Active
Application number
CN201810948558.0A
Other languages
English (en)
Other versions
CN109271143A (zh
Inventor
席旭亮
Current Assignee (The listed assignees may be inaccurate. Google has not performed a legal analysis and makes no representation or warranty as to the accuracy of the list.)
Ping An Life Insurance Company of China Ltd
Original Assignee
Ping An Life Insurance Company of China Ltd
Priority date (The priority date is an assumption and is not a legal conclusion. Google has not performed a legal analysis and makes no representation as to the accuracy of the date listed.)
Filing date
Publication date
Application filed by Ping An Life Insurance Company of China Ltd filed Critical Ping An Life Insurance Company of China Ltd
Priority to CN201810948558.0A priority Critical patent/CN109271143B/zh
Publication of CN109271143A publication Critical patent/CN109271143A/zh
Application granted granted Critical
Publication of CN109271143B publication Critical patent/CN109271143B/zh
Active legal-status Critical Current
Anticipated expiration legal-status Critical

Links

Classifications

    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F8/00Arrangements for software engineering
    • G06F8/20Software design
    • G06F8/24Object-oriented
    • YGENERAL TAGGING OF NEW TECHNOLOGICAL DEVELOPMENTS; GENERAL TAGGING OF CROSS-SECTIONAL TECHNOLOGIES SPANNING OVER SEVERAL SECTIONS OF THE IPC; TECHNICAL SUBJECTS COVERED BY FORMER USPC CROSS-REFERENCE ART COLLECTIONS [XRACs] AND DIGESTS
    • Y02TECHNOLOGIES OR APPLICATIONS FOR MITIGATION OR ADAPTATION AGAINST CLIMATE CHANGE
    • Y02DCLIMATE CHANGE MITIGATION TECHNOLOGIES IN INFORMATION AND COMMUNICATION TECHNOLOGIES [ICT], I.E. INFORMATION AND COMMUNICATION TECHNOLOGIES AIMING AT THE REDUCTION OF THEIR OWN ENERGY USE
    • Y02D10/00Energy efficient computing, e.g. low power processors, power management or thermal management

Abstract

本申请涉及云服务领域,揭示了一种基于云服务的微服务架构,包括:资源层,用于对外提供资源;应用服务层,用于事物排版;领域模型层,用于领域服务,设置有聚合以及仓库;端口层,用于对接外部;其中,所述资源层接收外部命令,根据外部命令调用所述应用服务层;应用服务层根据所述外部命令进行对应的业务排版,然后将外部命令发送给所述领域模型层进行对应的业务处理,并将处理结果反馈给所述应用服务层,然后由应用服务层发送给所述端口层,由端口层将所述处理结果进行相应的处理。本申请的基于云服务的微服务架构,结构简单,领域模型层中设置有聚合,加强了领域和聚合的概念,使得业务划分更加清晰,达到高内聚低耦合的目的。

Description

基于云服务的微服务架构
技术领域
本申请涉及到云服务领域,特别是涉及到一种基于云服务的微服务架构。
背景技术
基于云服务的微服务架构是一项在云中部署应用和服务的新技术。
微服务可以在“自己的程序”中运行,并通过“轻量级设备与HTTP型API进行沟通”。关键在于该服务可以在自己的程序中运行,通过这一点就可以将服务公开与基于云服务的微服务架构(在现有系统中分布一个API)区分开来。在服务公开中,许多服务都可以被内部独立进程所限制。如果其中任何一个服务需要增加某种功能,那么就必须缩小进程范围。在基于云服务的微服务架构中,只需要在特定的某种服务中增加所需功能,而不影响整体进程。
现有很多系统都进行了微服务的落地,在整体框架上都进行了微服务化,但是在设计思想上还没有明确的标准,架构相对复杂。
发明内容
本申请的主要目的为提供一种结构简单的基于云服务的微服务架构。
为了实现上述发明目的,本申请提出一种基于云服务的微服务架构,包括:
资源层,用于对外提供资源;
应用服务层,用于事物排版;
领域模型层,用于领域服务,设置有聚合以及仓库;
端口层,用于对接外部;
其中,所述资源层接收外部命令,根据外部命令调用所述应用服务层;所述应用服务层根据所述外部命令进行对应的业务排版,然后将所述外部命令发送给所述领域模型层进行对应的业务处理,并将处理结果反馈给所述应用服务层,然后由所述应用服务层发送给所述端口层,由所述端口层将所述处理结果进行相应的处理。
进一步地,所述基于云服务的微服务架构还包括:
上下文映射层,用于微服务之间的数据交互。
进一步地,所述基于云服务的微服务架构还包括:
防腐层,用于将微服务之间的交互数据进行过滤,并将过滤后的数据发送给资源层。
进一步地,所述领域模型层内设置有至少一个聚合,当所述应用服务层调用领用模型层的某一个聚合时,通过调用所述聚合的聚合根完成。
进一步地,所述聚合的内容通过仓库获取。
进一步地,所述应用服务层中设置CQRS命令查询模型,用于将所述应用服务层的查询端和命令端分开,且所述查询端用于只读功能。
进一步地,所述基于云服务的微服务架构还包括:
用户界面层,用于负责向用户显示信息和解释用户命令。
进一步地,所述基于云服务的微服务架构还包括:
基础实施层,用于向所述资源层、所述应用服务层、所述领域模型层和所述端口层提供通用的技术能力。
进一步地,所述基于云服务的微服务架构还包括:
事件发布层,用于发布供其它微服务使用的事件。
进一步地,所述领域模型层中的各领域之间通过事件和rest进行交互。
本申请的基于云服务的微服务架构,其代码结构只需要上述的资源层、应用服务层、领域模型层和端口层,结构简单,其中,领域模型层中设置有聚合,加强了领域和聚合的概念,使得业务划分更加清晰,达到高内聚低耦合的目的。
附图说明
图1为本申请一实施例的基于云服务的微服务架构的结构示意框图;
图2为本申请一实施例的基于云服务的微服务架构的结构示意框图。
本申请目的的实现、功能特点及优点将结合实施例,参照附图做进一步说明。
具体实施方式
为了使本申请的目的、技术方案及优点更加清楚明白,以下结合附图及实施例,对本申请进行进一步详细说明。应当理解,此处描述的具体实施例仅仅用以解释本申请,并不用于限定本申请。
参照图1,本申请提供一种基于云服务的微服务架构,包括:
资源层10,用于对外提供资源;
应用服务层20,用于事物排版;
领域模型层30,用于领域服务,设置有聚合以及仓库;
端口层40,用于对接外部;
其中,所述资源层接收外部命令,根据外部命令调用所述应用服务层;所述应用服务层根据所述外部命令进行对应的业务排版,然后将所述外部命令发送给所述领域模型层进行对应的业务处理,并将处理结果反馈给所述应用服务层,然后由所述应用服务层发送给所述端口层,由端口层将所述处理结果进行相应的处理。
在本实施例中,上述资源层10包括所有对外提供的资源,包括所有的API(Application Programming Interface,应用程序编程接口)。上述应用服务层20,其没有任何的业务逻辑代码,它很简单,主要为程序提供任务处理,即,主要是事务排版,不涉及具体业务,用于多进程管理及调度,多线程管理及调度,多协程调度和状态机管理等。上述领域模型层30,包括了领域服务,其设置聚合以及仓库,这一层包含有关领域的信息,是业务的核心,领域模型的状态都直接或间接(持久化至仓库)存储在这一层,领域模型的实现,包括领域对象的确立,这些对象的生命周期管理及关系,领域服务的定义,领域事件的发布等。通常,领域模型通过对象模型来实现,这些对象同时包含了数据和行为,并且表达了准确的业务含义。端口层40,包括对接外部服务的接口、翻译层和仓库持久化实现等。上述资源层10、应用服务层20、领域模型层30和端口层40之间为松耦合结构,因此只要消息符合协商的架构,则各层的修改实现就可以根据需要进行更改,而不必担心会对其它层产生破坏。
参照图2,在一个实施例中,上述基于云服务的微服务架构还包括:
上下文映射层50,用于微服务之间的数据交互。
本申请中,各位服务团队会先建立通用语言UL(Ubiquitous Languag)和模式BC(Bounded Context,限界上下文)。UL是团队共享的语言。不管团队中的角色如何,只要是团队的一员,都将使用UL。由于UL的重要性,所以需要让每个概念在各自的上下文中是清晰无歧义的。而BC中的每个概念都有唯一的含义。一个业务领域划分成若干个BC,它们之间通过上下文映射层(Context Map)进行集成。BC是一个显式的边界,领域模型层便存在于这个边界之内,软件模型层中包含有多个领域模型,领域模型是关于某个特定业务领域的软件模型。
在一个实施例中,上述基于云服务的微服务架构还包括:
防腐层60,用于将微服务之间的交互数据进行过滤,并将过滤后的数据发送给上述资源层10。
本申请中,微服务在通过上下文映射层50集成的过程中,可以通过防腐层60进行交互数据的过滤,将与对应微服务不相关的数据过滤掉。比如,上述上下文映射层50中接收了多个微服务任务,防腐层50会将与其所在的微服务相关的任务放行,而其它的则会过滤掉。
在一个实施例中,上述领域模型层30内设置有至少一个聚合,当所述应用服务层20调用领用模型层的某一个聚合时,通过调用所述聚合的聚合根完成。
聚合,它定义了模型的关系和边界。每个聚合都有一个根,根是一个实体,并且是唯一可被外界访问的。正是如此,聚合可以保证多个模型单元的不变性,因为其它模型都参考聚合的根。所以要想改变其他对象,只能通过聚合的根去操作。聚合根如果没有了,那么聚合中的其他对象也将不存在。上述实体与面向对象中的概念类似,在这里它是领域模型的基本元素。在领域模型中,实体应该具有唯一的标识符,从设计的一开始就应该考虑实体,决定是否建立一个实体也是十分重要的。值对象,它仅仅是没有唯一标识符的实体,比如有两个收货地址的信息完全一样,那它就是值对象,并不是实体。值对象在领域模型中是可以被共享的,是“不可变的”(只读的),当有其它地方需要用到值对象时,可以将它的副本作为参数传递。上述聚合的内容通过仓库获取,而仓库封装了获取对象的逻辑,领域对象无须和底层数据库交互,它只需要从仓库中获取对象即可。仓库可以存储对象的引用,当一个对象被创建后,它可能会被存储到仓库中,那么下次就可以从仓库取。如果用户请求的数据没在仓库中,则会从数据库里取,这就减少了底层交互的次数。
在一个实施例中,上述应用服务层中设置CQRS命令查询模型,用于将所述应用服务层的查询端和命令端分开,且所述查询端用于只读功能。
上述CQRS本身只是一个读写分离的思想,全称是:Command QueryResponsibility Segregation,即命令查询职责分离。一个命令表示一种意图,表示命令系统做什么修改,命令的执行结果通常不需要返回;一个查询表示向系统查询数据并返回。CQRS架构的核心出发点是将整个系统的架构分割为读和写两部分,从而方便对读写两端进行分开优化;采用CQRS命令查询模型的一个前提是,你的系统要接受系统使用者查询到的数据可能不是最新的,而是有几个毫秒的延迟。之所以会有这个前提,是因为CQRS架构考虑到,作为一个多用户同时访问的互联网应用,当在高并发修改数据的情况下,比如秒杀、12306购票等场景,用户UI上看到的数据总是旧的。比如你秒杀时提交订单前看到库存还大于0,但是当你提交订单时,系统提示你宝贝卖完了。这个就说明,在这种高并发修改同一资源的情况下,任何人看到的数据总是Stale的,即旧的。
在一个实施例中,上述基于云服务的微服务架构还包括:
用户界面层70,用于负责向用户显示信息和解释用户命令。上述的用户可以是另一个计算机系统,不一定是使用用户界面的人;
基础实施层80,用于向所述资源层、应用服务层、领域模型层和端口层提供通用的技术能力。比如,基础实施层为应用服务层传递消息,为领域模型层提供持久化机制等,为用户界面层绘制屏幕组件,等等。基础设施层80还能够通过架构框架来支持本申请中其它各层之间的交互模式;
事件发布层90,用于发布供其它微服务使用的事件。
在一个具体实施例中,上述领域模型层中的各领域之间通过事件和rest进行交互。使各领域之间处于低耦合状态。
本申请实时的基于云服务的微服务架构,通过上下文定义和通用语言的建立,能加强团队内的协作;加强领域和聚合的概念,建模的思想,使得业务划分更加清晰,达到高内聚低耦合的目的。
上所述仅为本申请的优选实施例,并非因此限制本申请的专利范围,凡是利用本申请说明书及附图内容所作的等效结构或等效流程变换,或直接或间接运用在其他相关的技术领域,均同理包括在本申请的专利保护范围内。

Claims (8)

1.一种基于云服务的微服务架构,其特征在于,包括:
资源层,用于对外提供资源;
应用服务层,用于事物排版;
领域模型层,用于领域服务,设置有聚合以及仓库;
端口层,用于对接外部;
其中,所述资源层接收外部命令,根据外部命令调用所述应用服务层;所述应用服务层根据所述外部命令进行对应的业务排版,然后将所述外部命令发送给所述领域模型层进行对应的业务处理,并将处理结果反馈给所述应用服务层,然后由所述应用服务层发送给所述端口层,由所述端口层将所述处理结果进行相应的处理;
上下文映射层,用于微服务之间的数据交互;其中,各位服务团队会先建立通用语言UL和模式BC;一个业务领域划分成若干个BC,它们之间通过上下文映射层进行集成;BC表示限界上下文;
防腐层,用于将微服务之间的交互数据进行过滤,将与对应微服务不相关的数据过滤掉,并将过滤后的数据发送给所述资源层;其中,若上下文映射层中接收了多个微服务任务,防腐层会将与其所在的微服务相关的任务放行,而其它的则会过滤掉。
2.根据权利要求1所述的基于云服务的微服务架构,其特征在于,所述领域模型层内设置有至少一个聚合,当所述应用服务层调用所述领用模型层的某一个聚合时,通过调用所述聚合的聚合根完成。
3.根据权利要求2所述的基于云服务的微服务架构,其特征在于,所述聚合的内容通过仓库获取。
4.根据权利要求1所述的基于云服务的微服务架构,其特征在于,所述应用服务层中设置CQRS命令查询模型,用于将所述应用服务层的查询端和命令端分开,且所述查询端用于只读功能。
5.根据权利要求1-4中任一项所述的基于云服务的微服务架构,其特征在于,还包括:
用户界面层,用于负责向用户显示信息和解释用户命令。
6.根据权利要求1-4中任一项所述的基于云服务的微服务架构,其特征在于,还包括:
基础实施层,用于向所述资源层、所述应用服务层、所述领域模型层和所述端口层提供通用的技术能力。
7.根据权利要求1-4中任一项所述的基于云服务的微服务架构,其特征在于,还包括:
事件发布层,用于发布供其它微服务使用的事件。
8.根据权利要求1-4中任一项所述的基于云服务的微服务架构,其特征在于,所述领域模型层中的各领域之间通过事件和rest进行交互。
CN201810948558.0A 2018-08-20 2018-08-20 基于云服务的微服务架构 Active CN109271143B (zh)

Priority Applications (1)

Application Number Priority Date Filing Date Title
CN201810948558.0A CN109271143B (zh) 2018-08-20 2018-08-20 基于云服务的微服务架构

Applications Claiming Priority (1)

Application Number Priority Date Filing Date Title
CN201810948558.0A CN109271143B (zh) 2018-08-20 2018-08-20 基于云服务的微服务架构

Publications (2)

Publication Number Publication Date
CN109271143A CN109271143A (zh) 2019-01-25
CN109271143B true CN109271143B (zh) 2023-07-18

Family

ID=65153907

Family Applications (1)

Application Number Title Priority Date Filing Date
CN201810948558.0A Active CN109271143B (zh) 2018-08-20 2018-08-20 基于云服务的微服务架构

Country Status (1)

Country Link
CN (1) CN109271143B (zh)

Families Citing this family (1)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
CN112596929B (zh) * 2020-12-28 2022-02-11 恒生电子股份有限公司 基于命令事件转换的微服务注册、调用方法及相关装置

Citations (1)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
CN107862572A (zh) * 2017-11-06 2018-03-30 北京中电普华信息技术有限公司 一种电力营销业务应用系统

Family Cites Families (2)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
US10656971B2 (en) * 2014-01-31 2020-05-19 Dell Products L.P. Agile framework for vertical application development and delivery
US11281499B2 (en) * 2017-02-05 2022-03-22 Intel Corporation Microservice provision and management

Patent Citations (1)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
CN107862572A (zh) * 2017-11-06 2018-03-30 北京中电普华信息技术有限公司 一种电力营销业务应用系统

Non-Patent Citations (1)

* Cited by examiner, † Cited by third party
Title
基于微服务的智慧校园消息中心构建研究;刘波等;河北软件职业技术学院学报(第03期);第7-10、22页 *

Also Published As

Publication number Publication date
CN109271143A (zh) 2019-01-25

Similar Documents

Publication Publication Date Title
US11507583B2 (en) Tuple extraction using dynamically generated extractor classes
US8751437B2 (en) Single persistence implementation of business objects
US9146955B2 (en) In-memory, columnar database multidimensional analytical view integration
US9208212B2 (en) Field extensibility in a multi-tenant environment with columnar database support
US8356288B2 (en) Method and apparatus for monitoring runtime of persistence applications
US8156137B2 (en) Data processing systems and methods
US8307015B2 (en) Decorated model architecture for efficient model-driven application development
WO2016123920A1 (zh) 支持多类型数据库操作的集成接口的实现方法及系统
WO2016123921A1 (zh) 基于Http协议的多数据源的数据处理方法及系统
US8924914B2 (en) Application creation tool toolkit
US10120886B2 (en) Database integration of originally decoupled components
US8904363B2 (en) Projecting software and data onto client
KR20140038989A (ko) 자동화된 사용자 인터페이스 객체 변환 및 코드 생성
US20120150792A1 (en) Data extraction framework
US9557880B2 (en) Shared user interface services framework
US20110252049A1 (en) Function execution using sql
CN115934855A (zh) 一种全链路字段级血缘解析方法、系统、设备及存储介质
CN111143451A (zh) 用于分层架构设计的ssm框架设计方法
US20140114916A1 (en) Code generation and implementation method, system, and storage medium for delivering bidirectional data aggregation and updates
US9513879B2 (en) Model augmentation in a model-driven application development environment
CN109271143B (zh) 基于云服务的微服务架构
US9298473B2 (en) System and method for a generic object access layer
Balsamo Designing a Microservice-oriented application running on a Serverless architecture
Team Microservice Application Design
US20070256049A1 (en) Systems and methods for providing a status management service

Legal Events

Date Code Title Description
PB01 Publication
PB01 Publication
SE01 Entry into force of request for substantive examination
SE01 Entry into force of request for substantive examination
GR01 Patent grant
GR01 Patent grant