CN111176662A - 可在分布式与单体环境自由组装部署的架构实现方法及部署方法 - Google Patents

可在分布式与单体环境自由组装部署的架构实现方法及部署方法 Download PDF

Info

Publication number
CN111176662A
CN111176662A CN202010063913.3A CN202010063913A CN111176662A CN 111176662 A CN111176662 A CN 111176662A CN 202010063913 A CN202010063913 A CN 202010063913A CN 111176662 A CN111176662 A CN 111176662A
Authority
CN
China
Prior art keywords
distributed
service
deployment
generating
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.)
Granted
Application number
CN202010063913.3A
Other languages
English (en)
Other versions
CN111176662B (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.)
Xiamen Biebeyun Co ltd
Original Assignee
Xiamen Biebeyun Co 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 Xiamen Biebeyun Co ltd filed Critical Xiamen Biebeyun Co ltd
Priority to CN202010063913.3A priority Critical patent/CN111176662B/zh
Publication of CN111176662A publication Critical patent/CN111176662A/zh
Application granted granted Critical
Publication of CN111176662B publication Critical patent/CN111176662B/zh
Active legal-status Critical Current
Anticipated expiration legal-status Critical

Links

Images

Classifications

    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F8/00Arrangements for software engineering
    • G06F8/60Software deployment
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F9/00Arrangements for program control, e.g. control units
    • G06F9/06Arrangements for program control, e.g. control units using stored programs, i.e. using an internal store of processing equipment to receive or retain programs
    • G06F9/44Arrangements for executing specific programs
    • G06F9/445Program loading or initiating
    • G06F9/44521Dynamic linking or loading; Link editing at or after load time, e.g. Java class loading
    • G06F9/44526Plug-ins; Add-ons

Abstract

本发明提出一种可在分布式与单体环境自由组装部署的架构实现方法及部署方法,包括以下步骤:步骤S1:抽取公共接口,包括:步骤S11:获取当前登录人接口;步骤S12:全局统一异常处理;步骤S13:生成Http请求日志收集工具;步骤S2:隔离业务功能,包括:步骤S21:对业务领域边界进行划分;步骤S22:对每一个业务领域生成API与Server实现;步骤S23:业务边界间的交互,通过API或观察者模式进行调用;步骤S3:生成分布式部署插件。其通过合理的架构与领域划分,减少其中单体架构的重复开发工作,从而降低了成本投入。

Description

可在分布式与单体环境自由组装部署的架构实现方法及部署 方法
技术领域
本发明涉及软件部署和架构领域,尤其涉及一种可在分布式与单体环境自由组装部署的架构实现方法及部署方法装置。
背景技术
软件架构可分为单体架构与分布式架构,技术架构描述如下:
1、单体架构
在单体架构中,可将所有的业务功能部署成一个服务,适用于并发量少,维护投入低的项目。
2、分布式架构
在分布式架构下,将业务功能拆分部署在多个应用服务器,通过横向扩容的方式提供更高的并发量,但在一定程度上增加了维护成本的投入。
当面临业务需求相同的情况下,需投入开发两套代码,一方面耗费人力物力,另一方还需管理与维护,则无形中增加了投入成本。
发明内容
为了解决现有技术存在的缺陷和不足的问题,本发明提供了一种可实现业务系统在分布式与单体环境自由组装部署的架构设计。其具体采用以下技术方案:
一种可在分布式与单体环境自由组装部署的架构实现方法,其特征在于,包括以下步骤:
步骤S1:抽取公共接口,包括:
步骤S11:获取当前登录人接口;
步骤S12:全局统一异常处理;
步骤S13:生成Http请求日志收集工具;
步骤S2:隔离业务功能,包括:
步骤S21:对业务领域边界进行划分;
步骤S22:对每一个业务领域生成API与Server实现;
步骤S23:业务边界间的交互,通过API或观察者模式进行调用;
步骤S3:生成分布式部署插件,包括:
步骤S31:生成分布式架构下当前登录人信息传递插件,包括:
RPC注入当前登录人;RPC解析当前登录人;基于RPC模式实现获取当前登录人接口;
步骤S32:生成单体观察者模式与分布式观察者模式互相转换插件,包括:
将单体观察者发布的消息转换为分布式消息发送;接收分布式消息转换成单体观察者消息并发布。
优选地,本发明方案在SpringBoot和SpringCloud下实现。
优选地,步骤S1:抽取公共接口,具体包括:
步骤S11:提供获取当前登录人接口:
包含获取用户Id、获取用户信息、序列化与反序列化用户信息的功能;
步骤S12:全局统一异常处理:
步骤S121:定义异常基类,所有业务异常全部继承自该基类并初始化必填参数;
步骤S122:定义异常基类的捕获与处理类,在业务异常无针对性处理的情况下全部采用异常基类处理,提供统一的异常返回值;
步骤S13:生成Http请求日志收集工具:
步骤S131:使用拦截器拦截Http请求,将请求参数、Ip、时间、响应结果的数据收集并通过领域事件进行发布;
步骤S132:定义领域事件监听器,接收Http日志数据并进行业务处理。
优选地,步骤S2:隔离业务功能,具体包括:
步骤S21:基于DDD方法,对业务领域进行拆分;
步骤S22:基于FeignClient注解定义API接口文档,利用Spring的自动装配与依赖注入功能实现分布式与单体部署时的对象控制反转;
步骤S23:使用Spring的事件模型实现领域事件功能。
优选地,步骤S3:生成分布式部署插件,具体包括:
步骤S31:生成分布式架构下当前登录人信息传递插件,包括:
步骤S311:在网关模块解析session之后将用户信息放入向下传递的Http请求头中;
步骤S312:在业务模块中,通过用户信息解析拦截器,从请求头中解析用户信息并实现获取当前登录人接口,利用Spring的依赖注入功能将当前登录人接口的实现注入到业务调用处,从而获取正确的用户信息;
步骤S313:判断是否存在下游模块,若还存在下游模块,重新将用户信息放入向下传递的Http请求头中,并返回步骤步骤S312;
步骤S32:生成单体观察者模式与分布式观察者模式互相转换插件,包括:
步骤S321:单体模式的领域事件通过Spring的ApplicationEvent实现;
步骤S322:分布式环境下,先监听领域事件,将其通过MQ的方式发送到MQ中间件中,再消费MQ转换成ApplicationEvent发布,从而被领域事件消费者消费。
优选地,在部署方法方面:在单体部署的业务场景中,将所有的业务组件打包成一个SpringBoot的启动jar包,直接运行该启动jar包即完成单体部署。
在分布式部署的业务场景中,按照业务服务的划分,选择业务模块,加入通用的分布式部署插件一起打包成一个SpringBoot的启动jar包,得到一个微服务;将所有的业务模块都打包成微服务jar包后,在服务器启动微服务jar包即完成分布式方式的部署。
在现有的开发过程中,分布式架构与单体架构是两套程序,从而带来了高昂的开发与维护成本。本发明可以解决这一痛点,通过合理的架构与领域划分,减少其中单体架构的重复开发工作,从而降低了成本投入。
本发明及其优选方案主要通过在SpringBoot与SpringCloud技术背景下,基于DDD设计思想,合理地抽象与分解业务边界,提供业务组件与通用组件,以低成本的方式组装系统,从而在分布式与单体之间自由组装。
附图说明
下面结合附图和具体实施方式对本发明进一步详细的说明:
图1为本发明实施例单体部署架构示意图;
图2为本发明实施例单体部署打包过程示意图;
图3为本发明实施例分布式部署架构示意图;
图4为本发明实施例分布式部署打包过程示意图。
具体实施方式
为让本专利的特征和优点能更明显易懂,下文特举实施例,并配合附图,作详细说明如下:
如图1、图3所示,本实施例在SpringBoot和SpringCloud下实现,具体包括以下步骤:
步骤S1:抽取公共接口,具体包括:
步骤S11:提供获取当前登录人接口:
包含获取用户Id、获取用户信息、序列化与反序列化用户信息等功能;
步骤S12:全局统一异常处理:
步骤S121:定义异常基类,所有业务异常全部继承自该基类并初始化必填参数;
步骤S122:定义异常基类的捕获与处理类,在业务异常无针对性处理的情况下全部采用异常基类处理,提供统一的异常返回值;
步骤S13:生成Http请求日志收集工具:
步骤S131:使用拦截器拦截Http请求,将请求参数、Ip、时间、响应结果等数据收集并通过领域事件进行发布;
步骤S132:定义领域事件监听器,接收Http日志数据并进行业务处理。
步骤S2:隔离业务功能,具体包括:
步骤S21:基于DDD(领域驱动设计Domain-DrivenDesign)方法,对业务领域进行拆分;
步骤S22:基于FeignClient注解定义API接口文档,利用Spring的自动装配与依赖注入功能实现分布式与单体部署时的对象控制反转;
步骤S23:使用Spring的事件模型实现领域事件功能。
步骤S3:生成分布式部署插件,具体包括:
步骤S31:生成分布式架构下当前登录人信息传递插件,包括:
步骤S311:由于分布式架构下,只有网关模块能接收到来自客户端的session,因此,在网关模块解析session之后将用户信息放入向下传递的Http请求头中;
步骤S312:在业务模块中,通过用户信息解析拦截器,从请求头中解析用户信息并实现获取当前登录人接口,利用Spring的依赖注入功能将当前登录人接口的实现注入到业务调用处,从而获取正确的用户信息;
步骤S313:判断是否存在下游模块,若还存在下游模块,重新将用户信息放入向下传递的Http请求头中,并返回步骤步骤S312;
步骤S32:生成单体观察者模式与分布式观察者模式互相转换插件,包括:
步骤S321:单体模式的领域事件通过Spring的ApplicationEvent实现;
步骤S322:分布式环境下,先监听领域事件,将其通过MQ的方式发送到MQ中间件中,再消费MQ转换成ApplicationEvent发布,从而被领域事件消费者消费。
如图1、图2所示,通过以上架构的构建,在单体部署的业务场景中,将所有的业务组件打包成一个SpringBoot的启动jar包,直接运行该启动jar包即完成单体部署,操作十分方便。
如图3、图4所示,在分布式部署的业务场景中,按照分布式业务服务的划分,选择某一部分业务模块,加入通用的分布式部署插件一起打包成一个SpringBoot的启动jar包,得到一个微服务;将所有的业务模块都打包成微服务jar包后,在服务器启动微服务jar包即完成分布式方式的部署,从而提高业务的并发能力与吞吐量。
本专利不局限于上述最佳实施方式,任何人在本专利的启示下都可以得出其它各种形式的可在分布式与单体环境自由组装部署的架构实现方法及部署方法,凡依本发明申请专利范围所做的均等变化与修饰,皆应属本专利的涵盖范围。

Claims (7)

1.一种可在分布式与单体环境自由组装部署的架构实现方法,其特征在于,包括以下步骤:
步骤S1:抽取公共接口,包括:
步骤S11:获取当前登录人接口;
步骤S12:全局统一异常处理;
步骤S13:生成Http请求日志收集工具;
步骤S2:隔离业务功能,包括:
步骤S21:对业务领域边界进行划分;
步骤S22:对每一个业务领域生成API与Server实现;
步骤S23:业务边界间的交互,通过API或观察者模式进行调用;
步骤S3:生成分布式部署插件,包括:
步骤S31:生成分布式架构下当前登录人信息传递插件,包括:
RPC注入当前登录人;RPC解析当前登录人;基于RPC模式实现获取当前登录人接口;
步骤S32:生成单体观察者模式与分布式观察者模式互相转换插件,包括:
将单体观察者发布的消息转换为分布式消息发送;接收分布式消息转换成单体观察者消息并发布。
2.根据权利要求1所述可在分布式与单体环境自由组装部署的架构实现方法,其特征在于:在SpringBoot和SpringCloud下实现。
3.根据权利要求2所述可在分布式与单体环境自由组装部署的架构实现方法,其特征在于:步骤S1:抽取公共接口,具体包括:
步骤S11:提供获取当前登录人接口:
包含获取用户Id、获取用户信息、序列化与反序列化用户信息的功能;
步骤S12:全局统一异常处理:
步骤S121:定义异常基类,所有业务异常全部继承自该基类并初始化必填参数;
步骤S122:定义异常基类的捕获与处理类,在业务异常无针对性处理的情况下全部采用异常基类处理,提供统一的异常返回值;
步骤S13:生成Http请求日志收集工具:
步骤S131:使用拦截器拦截Http请求,将请求参数、Ip、时间、响应结果的数据收集并通过领域事件进行发布;
步骤S132:定义领域事件监听器,接收Http日志数据并进行业务处理。
4.根据权利要求3所述可在分布式与单体环境自由组装部署的架构实现方法,其特征在于:步骤S2:隔离业务功能,具体包括:
步骤S21:基于DDD方法,对业务领域进行拆分;
步骤S22:基于FeignClient注解定义API接口文档,利用Spring的自动装配与依赖注入功能实现分布式与单体部署时的对象控制反转;
步骤S23:使用Spring的事件模型实现领域事件功能。
5.根据权利要求3所述可在分布式与单体环境自由组装部署的架构实现方法,其特征在于:步骤S3:生成分布式部署插件,具体包括:
步骤S31:生成分布式架构下当前登录人信息传递插件,包括:
步骤S311:在网关模块解析session之后将用户信息放入向下传递的Http请求头中;
步骤S312:在业务模块中,通过用户信息解析拦截器,从请求头中解析用户信息并实现获取当前登录人接口,利用Spring的依赖注入功能将当前登录人接口的实现注入到业务调用处,从而获取正确的用户信息;
步骤S313:判断是否存在下游模块,若还存在下游模块,重新将用户信息放入向下传递的Http请求头中,并返回步骤步骤S312;
步骤S32:生成单体观察者模式与分布式观察者模式互相转换插件,包括:
步骤S321:单体模式的领域事件通过Spring的ApplicationEvent实现;
步骤S322:分布式环境下,先监听领域事件,将其通过MQ的方式发送到MQ中间件中,再消费MQ转换成ApplicationEvent发布,从而被领域事件消费者消费。
6.根据权利要求2-5其中任一所述可在分布式与单体环境自由组装部署的架构实现方法的部署方法,其特征在于:在单体部署的业务场景中,将所有的业务组件打包成一个SpringBoot的启动jar包,直接运行该启动jar包即完成单体部署。
7.根据权利要求2-5其中任一所述可在分布式与单体环境自由组装部署的架构实现方法的部署方法,其特征在于:在分布式部署的业务场景中,按照业务服务的划分,选择业务模块,加入通用的分布式部署插件一起打包成一个SpringBoot的启动jar包,得到一个微服务;将所有的业务模块都打包成微服务jar包后,在服务器启动微服务jar包即完成分布式方式的部署。
CN202010063913.3A 2020-01-20 2020-01-20 可在分布式与单体环境自由组装部署的架构实现方法及部署方法 Active CN111176662B (zh)

Priority Applications (1)

Application Number Priority Date Filing Date Title
CN202010063913.3A CN111176662B (zh) 2020-01-20 2020-01-20 可在分布式与单体环境自由组装部署的架构实现方法及部署方法

Applications Claiming Priority (1)

Application Number Priority Date Filing Date Title
CN202010063913.3A CN111176662B (zh) 2020-01-20 2020-01-20 可在分布式与单体环境自由组装部署的架构实现方法及部署方法

Publications (2)

Publication Number Publication Date
CN111176662A true CN111176662A (zh) 2020-05-19
CN111176662B CN111176662B (zh) 2020-12-01

Family

ID=70647573

Family Applications (1)

Application Number Title Priority Date Filing Date
CN202010063913.3A Active CN111176662B (zh) 2020-01-20 2020-01-20 可在分布式与单体环境自由组装部署的架构实现方法及部署方法

Country Status (1)

Country Link
CN (1) CN111176662B (zh)

Cited By (3)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
CN111930415A (zh) * 2020-06-22 2020-11-13 山东浪潮通软信息科技有限公司 一种大型软件产品的构造部署方法及装置
CN112527337A (zh) * 2020-12-30 2021-03-19 成都四方伟业软件股份有限公司 一种基于插件式异构数据源热插拔加载引擎方法及装置
CN114579194A (zh) * 2022-03-08 2022-06-03 杭州每刻科技有限公司 一种基于Spring远程调用的异常处理方法和系统

Citations (7)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
US20130086202A1 (en) * 2011-09-29 2013-04-04 Comcast Cable Communications, Llc Multiple Virtual Machines in a Mobile Virtualization Platform
CN104951529A (zh) * 2015-06-16 2015-09-30 焦点科技股份有限公司 一种针对网站日志的交互式分析方法
CN106157166A (zh) * 2015-04-13 2016-11-23 刘胜利 智能化供电采集服务系统
CN106656630A (zh) * 2017-01-13 2017-05-10 北京中电普华信息技术有限公司 一种电力营销业务应用系统及其构建方法、平台
CN106815699A (zh) * 2015-12-01 2017-06-09 崔翔 分布式云架构智能物流配送系统
CN109618119A (zh) * 2018-10-31 2019-04-12 视联动力信息技术股份有限公司 业务处理方法和装置
CN109783132A (zh) * 2019-01-04 2019-05-21 智恒科技股份有限公司 一种可适应系统单体化及分布式化的实现方法及装置

Patent Citations (8)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
US20130086202A1 (en) * 2011-09-29 2013-04-04 Comcast Cable Communications, Llc Multiple Virtual Machines in a Mobile Virtualization Platform
US20180373518A1 (en) * 2011-09-29 2018-12-27 Comcast Cable Communications, Llc Multiple Virtual Machines in a Mobile Virtualization Platform
CN106157166A (zh) * 2015-04-13 2016-11-23 刘胜利 智能化供电采集服务系统
CN104951529A (zh) * 2015-06-16 2015-09-30 焦点科技股份有限公司 一种针对网站日志的交互式分析方法
CN106815699A (zh) * 2015-12-01 2017-06-09 崔翔 分布式云架构智能物流配送系统
CN106656630A (zh) * 2017-01-13 2017-05-10 北京中电普华信息技术有限公司 一种电力营销业务应用系统及其构建方法、平台
CN109618119A (zh) * 2018-10-31 2019-04-12 视联动力信息技术股份有限公司 业务处理方法和装置
CN109783132A (zh) * 2019-01-04 2019-05-21 智恒科技股份有限公司 一种可适应系统单体化及分布式化的实现方法及装置

Non-Patent Citations (1)

* Cited by examiner, † Cited by third party
Title
刘颖: "基于分布式系统的微服务架构演进", 《通讯世界》 *

Cited By (4)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
CN111930415A (zh) * 2020-06-22 2020-11-13 山东浪潮通软信息科技有限公司 一种大型软件产品的构造部署方法及装置
CN112527337A (zh) * 2020-12-30 2021-03-19 成都四方伟业软件股份有限公司 一种基于插件式异构数据源热插拔加载引擎方法及装置
CN114579194A (zh) * 2022-03-08 2022-06-03 杭州每刻科技有限公司 一种基于Spring远程调用的异常处理方法和系统
CN114579194B (zh) * 2022-03-08 2024-04-05 杭州每刻科技有限公司 一种基于Spring远程调用的异常处理方法和系统

Also Published As

Publication number Publication date
CN111176662B (zh) 2020-12-01

Similar Documents

Publication Publication Date Title
CN111176662B (zh) 可在分布式与单体环境自由组装部署的架构实现方法及部署方法
CN103927218B (zh) 事件分发方法及系统
CN111414416B (zh) 数据处理方法、装置、设备和存储介质
US8135827B2 (en) Distributed capture and aggregation of dynamic application usage information
CN109165024A (zh) 一种运维平台自动部署和监控服务器系统的方法
CN113630372A (zh) 一种边缘计算的云边协同系统
CN112612629A (zh) 一种组件式的数据接口实现方法与系统
CN103607476A (zh) 海量消息的分布式多阶段持久化的系统及方法
CN102752770B (zh) 一种对业务系统进行巡检的方法及装置
CN108206864B (zh) 基于微信的车辆信息同步实时查询系统和信息同步方法
CN109614253A (zh) 一种实现远程过程调用的方法及装置
CN112818064A (zh) 多系统数据同步方法、装置、设备及存储介质
CN112260883A (zh) 一种卫星测试报告生成方法、装置、设备和存储介质
CN113806110A (zh) 基于事件驱动的消息处理方法、装置、设备及存储介质
CN113658591A (zh) 一种面向智能家居的语音交互适配系统
CN116974948B (zh) 业务系统测试方法、系统、设备和介质
CN109040086A (zh) 一种工业控制系统ddos攻击仿真方法及装置
CN102281584A (zh) 一种物联网能力的实现方法及系统
CN115696415A (zh) 一种天地一体化网络终端仿真模拟系统及方法
CN111935316B (zh) 一种前端设备目录获取方法及装置
CN114390033A (zh) 基于可扩展通信协议的回路状态巡检仪采集系统及方法
CN110740151B (zh) 一种微服务调整方法、装置、服务器及计算机存储介质
CN108668306B (zh) 一种移动操作系统内置的数据采集系统
CN114124508B (zh) 一种应用登录方法及系统
CN111198721A (zh) 应用程序运行方法和装置

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
PE01 Entry into force of the registration of the contract for pledge of patent right
PE01 Entry into force of the registration of the contract for pledge of patent right

Denomination of invention: Architecture implementation method and deployment method for free assembly and deployment in distributed and single environment

Effective date of registration: 20210316

Granted publication date: 20201201

Pledgee: Xiamen finance Company limited by guarantee

Pledgor: Xiamen Biebeyun Co.,Ltd.

Registration number: Y2021980001726

PC01 Cancellation of the registration of the contract for pledge of patent right
PC01 Cancellation of the registration of the contract for pledge of patent right

Date of cancellation: 20220325

Granted publication date: 20201201

Pledgee: Xiamen finance Company limited by guarantee

Pledgor: Xiamen Biebeyun Co.,Ltd.

Registration number: Y2021980001726

PE01 Entry into force of the registration of the contract for pledge of patent right
PE01 Entry into force of the registration of the contract for pledge of patent right

Denomination of invention: Architecture implementation method and deployment method that can be freely assembled and deployed in distributed and single environment

Effective date of registration: 20220328

Granted publication date: 20201201

Pledgee: Xiamen SME Financing Guarantee Co.,Ltd.

Pledgor: Xiamen Biebeyun Co.,Ltd.

Registration number: Y2022980003345