CN103152433A - 一种分布式服务端框架及其使用、交互、请求处理方法 - Google Patents
一种分布式服务端框架及其使用、交互、请求处理方法 Download PDFInfo
- Publication number
- CN103152433A CN103152433A CN2013101011403A CN201310101140A CN103152433A CN 103152433 A CN103152433 A CN 103152433A CN 2013101011403 A CN2013101011403 A CN 2013101011403A CN 201310101140 A CN201310101140 A CN 201310101140A CN 103152433 A CN103152433 A CN 103152433A
- Authority
- CN
- China
- Prior art keywords
- message
- framework
- invocation
- procedure
- response
- 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
Links
- 238000003672 processing method Methods 0.000 title claims description 4
- 230000003993 interaction Effects 0.000 title 1
- 238000000034 method Methods 0.000 claims description 45
- 230000004044 response Effects 0.000 claims description 26
- 230000008878 coupling Effects 0.000 claims description 10
- 238000010168 coupling process Methods 0.000 claims description 10
- 238000005859 coupling reaction Methods 0.000 claims description 10
- 238000004458 analytical method Methods 0.000 claims description 6
- 238000005538 encapsulation Methods 0.000 claims description 6
- 230000002452 interceptive effect Effects 0.000 claims description 5
- 230000015572 biosynthetic process Effects 0.000 claims description 4
- 230000000712 assembly Effects 0.000 abstract description 3
- 238000000429 assembly Methods 0.000 abstract description 3
- 238000000926 separation method Methods 0.000 abstract 1
- 238000005516 engineering process Methods 0.000 description 8
- 230000008859 change Effects 0.000 description 2
- 238000010276 construction Methods 0.000 description 2
- 238000010586 diagram Methods 0.000 description 2
- 230000000694 effects Effects 0.000 description 2
- 239000003795 chemical substances by application Substances 0.000 description 1
- 230000000052 comparative effect Effects 0.000 description 1
- 230000007812 deficiency Effects 0.000 description 1
- 230000018109 developmental process Effects 0.000 description 1
- 230000002708 enhancing effect Effects 0.000 description 1
- 230000006870 function Effects 0.000 description 1
- 238000002347 injection Methods 0.000 description 1
- 239000007924 injection Substances 0.000 description 1
- 230000007246 mechanism Effects 0.000 description 1
- 230000008569 process Effects 0.000 description 1
- 239000000243 solution Substances 0.000 description 1
- 230000033772 system development Effects 0.000 description 1
Images
Landscapes
- Stored Programmes (AREA)
Abstract
本发明涉及服务端技术领域,特别涉及互联网络服务体系结构的一种基于消息队列的分布式服务端框架。本发明利用控制反转,实现对客户端请求和存储服务进行动态绑定;另一方面,利用面向切片编程,实现应用逻辑组件和通用服务组件的分离,从而大大提高该框架的灵活性、移植性和可扩展性。本发明解决了现有服务端为前台客户端与存储接口所量身定制,通用性、可扩展性都比较差的问题;可以用于服务端架构中。
Description
技术领域
本发明涉及服务端技术领域,特别涉及互联网络服务体系结构的一种基于消息队列的分布式服务端框架。
背景技术
在传统的服务端中,往往都是为前台客户端与存储接口所量身定制的。因此,该类服务端的通用性、可扩展性都比较差,而且维护的成本比较高。一旦出现新的需求与服务,就要花费不少的时间去维护与修改原来的代码。
现在,需求的快速变更以及服务的多元化越来越普遍。原来传统单一的服务端已经难以满足社会的需求了。相反,通用的高扩展性松耦合结构的服务端将会逐渐成为服务端技术领域的主流。解决前述技术问题最有效的方法就是设计一种通用的服务端框架,取消服务端对前台客户端和存储接口的依赖关系,把它从中脱离出来。
IoC(Inversion of Control),直观地讲,就是容器控制程序之间的关系,而非传统实现中,由程序代码直接操控。这也就是所谓“控制反转”的概念所在。IoC还有另外一个名字DI——“依赖注入(Dependency Injection)”。相对IoC 而言,“依赖注入”更加准确地描述了IoC的设计理念。所谓依赖注入,即组件之间的依赖关系由容器在运行期决定,形象地说,即由容器动态地将某种依赖关系注入到组件之中。从本质上来说,IoC和DI都是将组件和组件的之间的关系的依赖由原来的依赖“目标组件”改变为现在的依赖于“容器”。
AOP(Aspect-Oriented Programming),面向切面编程,当前已经成为一种比较成熟的编程技术,可以用来很好地解决应用***中分布于各个模块的交叉关注点问题。换句话说,就是可以通过预编译方式和运行期动态代理实现在不修改源代码的情况下给程序动态统一添加功能的一种技术。其机理来自于代理模式,目的就是让对象与对象(模块与模块)之间的关系没有通过代码来关联,都是通过配置类说明管理的。
在控制反转和面向切面编程技术的使用上,Spring框架无疑是最典型的成功例子,用于管理对象。
发明内容
本发明解决的技术问题之一在于针对服务端组件的可移植性和可重用度低,灵活性和可扩展性不足的问题,提供一种松耦合通用的分布式服务端框架。实现对客户端请求和存储服务进行动态绑定、逻辑组件和通用服务组件的分离,从而大大提高该框架的灵活性、移植性和可扩展性。
本发明解决的技术问题之二在于提供一种实现松耦合通用的分布式服务端框架的使用方法。
本发明解决的技术问题之三在于提供一种实现松耦合通用的分布式服务端框架与其他应用和服务之间的交互模式方法。
本发明解决的技术问题之四在于提供一种实现松耦合通用的分布式服务端框架内部请求处理方法。
本发明解决上技术问题之一的技术方案是:
所述的框架由动态依赖绑定、消息处理、过程调用构成;
所述的动态依赖绑定,包括配置信息类以及依赖绑定类;通过依赖注入将操作请求者、参数的定位信息、响应定位信息、服务提供者四个元素动态地联系起来,形成一个新的整体;
所述的消息处理,包括过程调用前的消息解析以及过程调用后的响应封装两个模块,该两模块作为应用逻辑组件被分离出来,根据动态依赖绑定提供的依赖关***一进行消息处理;
所述的过程调用,主要涉及代理模式、单态模式和反射调用;代理模式分别是通用接口、代理、真实对象,代理、真实对象实现同一接口,将真实对象作为代理的一个属性,向客户端公开代理;当客户端调用代理时,代理结合反射调用,调用真实对象方法,在调用之前之后提供相关的服务。
本发明解决上技术问题之二的技术方案是:将请求操作与服务方法之间的依赖关系以及参数的定位信息都写入到框架的配置信息之后,服务端就以请求消息为参数调用框架的消息处理部分的消息解析模块,返回解析结果;服务端以解析结果为参数调用框架的过程调用部分,反射调用相应的服务方法,返回调用结果;服务端以调用结果为参数调用框架的消息处理部分的响应封装模块,返回响应结果;框架的每一个部分都会自动读取配置信息,从而作出正确的处理。
本发明解决上技术问题之三的技术方案是:采用异步消息的松耦合交互模式;客户端需要调用服务时,向消息中心发送操作消息,消息订阅客户端从队列中获取消息,消息订阅客户端通过调用本框架的接口实现消息解析、过程调用和响应封装这三个步骤,最后将框架中所返回的响应发送回消息中心。
本发明解决上技术问题之四的技术方案是:请求消息先经过消息处理部分的消息解析模块进行解析,解析过后交给过程调用部分来调用相应服务接口,再将调用结果交给消息处理部分的响应封装模块,把结果封装成请求所想要得到的形式,最后返回封装过后的响应结果;另外,由动态依赖绑定部分向其他两个部分提供依赖关系配置信息。
本发明基于通用服务端消息调用框架的思路,将服务端从传统一一对应的模式中脱离出来,成为一种轻量型通用的松耦合结构的编程框架。该框架提供一种“消息处理和过程调用”的技术,以一种通用的方式对不同类型的操作消息进行统一的消息处理和过程调用。并且能够动态的修改请求与服务之间的依赖关系,使服务端能够迅速响应不同的需求变更。在架构方面,提高了组件的可移植性和可重用度,因为依赖注入机制减轻了组件之间的依赖关系;在实现方面,能够更简洁的编程实现。本发明的框架不仅可以管理对象,还可以用来做消息解析、执行分布式过程调用等工作,属于一个分布式的编程框架。本发明本框架和方法的主要特点是:解耦,主要有两个形式的体现:
第一个体现是:框架中的各个部分之间,包括框架的核心类代码之间和框架与所在的框架平台之间,尽量形成一种松耦合的结构,使得框架有更多的灵活性,从而达到如果替换某个层而不影响整体架构。
第二个体现是:框架与其所在的上层应用***的解耦。
在实现这两种形式的体现方面,框架内部的类之间的解耦主要通过控制反转的技术来实现,框架与上层应用***的解耦借助面向切面的技术来实现。
本框架通过“动态依赖绑定”这个部分的配置来对一个个切面进行定义,至于“消息处理”部分就属于面向切片编程中的增强,他定义了切面了中的实际逻辑,比如消息解析和响应封装的实际代码。最后在“过程调用”部分,通过代理来执行切面逻辑,其中代理是指实际业务对象的代理对象。
附图说明
下面结合附图对本发明进一步说明:
图1是本发明框架总体结构图;
图2是本发明框架与其他应用和服务之间的交互方法框图;
图3是本发明框架内部请求执行的数据流程框图。
具体实施方式
见图1所示,表示了本框架的总体结构图,通用消息处理和过程调用框架由动态依赖绑定、消息处理、过程调用这三个部分构成。其中动态依赖绑定包括配置信息类以及依赖绑定类;消息处理包括消息解析和响应封装。另外,本框架与其他组件共同构成一个消息订阅客户端。
本框架进行设计和开发时遵循的以下3条基本原则:
1.在代码中不直接创建目标对象,但是描述创建它们的方式。
2.在代码中不直接与服务对象连接,但使用配置数据来描述哪一个组件需要哪一项服务。
3.程序在运行时,由容器负责将这些对象关联在一起。
动态依赖绑定:
该部分通过依赖注入将操作请求者、参数的定位信息、响应定位信息、服务提供者这四个元素动态地联系起来,形成一个新的整体。因为依赖注入机制减轻了组件之间的依赖关系,这也是J2EE平台倡导“松藕合”的***开发要求。这样将能够大大地减少对象的请求者对服务提供者的特定实现逻辑的依赖,因为我们已经将依赖的具体 “定位信息”从请求者中分离出来。有关示例说明如下表所示:
消息处理:
该部分包括过程调用前的消息解析以及过程调用后的响应封装两个模块,根据面向切面编程的思想来设计,都属于被分离出来的应用逻辑组件。它们最主要的作用就是根据动态依赖绑定部分提供的依赖关系来统一进行消息处理,从而减少重复代码,构建优雅解决方案。
过程调用:
该部分的主要涉及是代理模式、单态模式和JAVA反射调用技术。代理模式有三个角色分别是通用接口、代理、真实对象。代理、真实对象实现的是同一接口,将真实对象作为代理的一个属性,向客户端公开的是代理,当客户端调用代理的方法时,代理结合JAVA的反射调用技术,调用真实对象方法,在调用之前之后提供相关的服务。至于单态模式是为了保证整个框架中只存在一个代理的实例。
使用本发明的方法是:将请求操作与服务方法之间的依赖关系以及参数的定位信息都写入到框架的配置信息之后,服务端就以请求消息为参数调用框架的消息处理部分的消息解析模块,返回解析结果。服务端以解析结果为参数调用框架的过程调用部分,反射调用相应的服务方法,返回调用结果。服务端以调用结果为参数调用框架的消息处理部分的响应封装模块,返回响应结果。框架的每一个部分都会自动读取配置信息,从而作出正确的处理,这就是控制反转和面向切片技术的核心体现。
见图2所示,表示本框架与其他应用和服务之间的交互模式,采用异步消息的松耦合交互模式。客户端需要调用服务时,向消息中心发送操作消息,消息订阅客户端从队列中获取消息,消息订阅客户端通过调用本框架的接口就可以实现消息解析、过程调用和响应封装这三个步骤,最后只需要把框架中所返回的响应发送回消息中心,就完成了一次请求与服务之间的交互活动。至于框架内部的操作都是自动读取配置信息中的依赖关系来执行。
见图3所示,表示本框架内部请求执行的数据流程。请求消息先经过消息处理部分的消息解析模块进行解析,解析过后交给过程调用部分来调用相应服务接口,再将调用结果交给消息处理部分的响应封装模块,把结果封装成请求所想要得到的形式,最后返回封装过后的响应结果。另外,动态依赖绑定部分向其他两个部分提供依赖关系配置信息。
Claims (4)
1.一种基于消息队列的分布式服务端框架,其特征在于:所述的框架由动态依赖绑定、消息处理、过程调用构成;
所述的动态依赖绑定,包括配置信息类以及依赖绑定类;通过依赖注入将操作请求者、参数的定位信息、响应定位信息、服务提供者四个元素动态地联系起来,形成一个新的整体;
所述的消息处理,包括过程调用前的消息解析以及过程调用后的响应封装两个模块,该两模块作为应用逻辑组件被分离出来,根据动态依赖绑定提供的依赖关***一进行消息处理;
所述的过程调用,主要涉及代理模式、单态模式和反射调用;代理模式分别是通用接口、代理、真实对象,代理、真实对象实现同一接口,将真实对象作为代理的一个属性,向客户端公开代理;当客户端调用代理时,代理结合反射调用,调用真实对象方法,在调用之前之后提供相关的服务。
2.权利要求1所述的框架的使用方法,其特征在于:将请求操作与服务方法之间的依赖关系以及参数的定位信息都写入到框架的配置信息之后,服务端就以请求消息为参数调用框架的消息处理部分的消息解析模块,返回解析结果;服务端以解析结果为参数调用框架的过程调用部分,反射调用相应的服务方法,返回调用结果;服务端以调用结果为参数调用框架的消息处理部分的响应封装模块,返回响应结果;框架的每一个部分都会自动读取配置信息,从而作出正确的处理。
3.权利要求1所述的框架与其他应用和服务之间的交互方法,其特征在于:采用异步消息的松耦合交互模式;客户端需要调用服务时,向消息中心发送操作消息,消息订阅客户端从队列中获取消息,消息订阅客户端通过调用本框架的接口实现消息解析、过程调用和响应封装这三个步骤,最后将框架中所返回的响应发送回消息中心。
4.权利要求1所述的框架的请求处理方法,其特征在于:请求消息先经过消息处理部分的消息解析模块进行解析,解析过后交给过程调用部分来调用相应服务接口,再将调用结果交给消息处理部分的响应封装模块,把结果封装成请求所想要得到的形式,最后返回封装过后的响应结果;另外,由动态依赖绑定部分向其他两个部分提供依赖关系配置信息。
Priority Applications (1)
Application Number | Priority Date | Filing Date | Title |
---|---|---|---|
CN201310101140.3A CN103152433B (zh) | 2013-01-14 | 2013-03-26 | 一种分布式服务端的使用、交互和请求处理方法 |
Applications Claiming Priority (4)
Application Number | Priority Date | Filing Date | Title |
---|---|---|---|
CN2013100135216 | 2013-01-14 | ||
CN201310013521 | 2013-01-14 | ||
CN201310013521.6 | 2013-01-14 | ||
CN201310101140.3A CN103152433B (zh) | 2013-01-14 | 2013-03-26 | 一种分布式服务端的使用、交互和请求处理方法 |
Publications (2)
Publication Number | Publication Date |
---|---|
CN103152433A true CN103152433A (zh) | 2013-06-12 |
CN103152433B CN103152433B (zh) | 2017-12-05 |
Family
ID=48550292
Family Applications (1)
Application Number | Title | Priority Date | Filing Date |
---|---|---|---|
CN201310101140.3A Active CN103152433B (zh) | 2013-01-14 | 2013-03-26 | 一种分布式服务端的使用、交互和请求处理方法 |
Country Status (1)
Country | Link |
---|---|
CN (1) | CN103152433B (zh) |
Cited By (6)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
CN104423982A (zh) * | 2013-08-27 | 2015-03-18 | 阿里巴巴集团控股有限公司 | 请求的处理方法和处理设备 |
CN107070782A (zh) * | 2017-05-02 | 2017-08-18 | 山东浪潮通软信息科技有限公司 | 一种基于消息队列可扩展的接口集成方法、服务器及*** |
CN107908397A (zh) * | 2017-10-09 | 2018-04-13 | 上海壹账通金融科技有限公司 | 基于ios***的软件框架的建立方法及应用服务器 |
CN108154026A (zh) * | 2017-12-28 | 2018-06-12 | 成都卫士通信息产业股份有限公司 | 基于Android***的免Root无侵入的安全通信方法及*** |
WO2019227623A1 (zh) * | 2018-05-30 | 2019-12-05 | 平安科技(深圳)有限公司 | 呼叫平台的数据处理方法、装置、设备及存储介质 |
WO2020015170A1 (zh) * | 2018-07-18 | 2020-01-23 | 平安科技(深圳)有限公司 | 接口调用方法、装置及计算机可读存储介质 |
Citations (4)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
CN1744037A (zh) * | 2005-08-26 | 2006-03-08 | 南京邮电大学 | 避免网格计算应用依赖底层开发工具箱的方法 |
US20070050756A1 (en) * | 2005-08-24 | 2007-03-01 | Nokia Corporation | Component architecture |
CN1967485A (zh) * | 2006-06-20 | 2007-05-23 | 华为技术有限公司 | 一种实现j2ee应用的方法及*** |
CN102566992A (zh) * | 2010-12-17 | 2012-07-11 | 卓望数码技术(深圳)有限公司 | 一种基于***运行的依赖注入方法及装置 |
-
2013
- 2013-03-26 CN CN201310101140.3A patent/CN103152433B/zh active Active
Patent Citations (4)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
US20070050756A1 (en) * | 2005-08-24 | 2007-03-01 | Nokia Corporation | Component architecture |
CN1744037A (zh) * | 2005-08-26 | 2006-03-08 | 南京邮电大学 | 避免网格计算应用依赖底层开发工具箱的方法 |
CN1967485A (zh) * | 2006-06-20 | 2007-05-23 | 华为技术有限公司 | 一种实现j2ee应用的方法及*** |
CN102566992A (zh) * | 2010-12-17 | 2012-07-11 | 卓望数码技术(深圳)有限公司 | 一种基于***运行的依赖注入方法及装置 |
Cited By (8)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
CN104423982A (zh) * | 2013-08-27 | 2015-03-18 | 阿里巴巴集团控股有限公司 | 请求的处理方法和处理设备 |
CN104423982B (zh) * | 2013-08-27 | 2018-03-06 | 阿里巴巴集团控股有限公司 | 请求的处理方法和处理设备 |
CN107070782A (zh) * | 2017-05-02 | 2017-08-18 | 山东浪潮通软信息科技有限公司 | 一种基于消息队列可扩展的接口集成方法、服务器及*** |
CN107908397A (zh) * | 2017-10-09 | 2018-04-13 | 上海壹账通金融科技有限公司 | 基于ios***的软件框架的建立方法及应用服务器 |
CN108154026A (zh) * | 2017-12-28 | 2018-06-12 | 成都卫士通信息产业股份有限公司 | 基于Android***的免Root无侵入的安全通信方法及*** |
CN108154026B (zh) * | 2017-12-28 | 2022-01-11 | 成都卫士通信息产业股份有限公司 | 基于Android***的免Root无侵入的安全通信方法及*** |
WO2019227623A1 (zh) * | 2018-05-30 | 2019-12-05 | 平安科技(深圳)有限公司 | 呼叫平台的数据处理方法、装置、设备及存储介质 |
WO2020015170A1 (zh) * | 2018-07-18 | 2020-01-23 | 平安科技(深圳)有限公司 | 接口调用方法、装置及计算机可读存储介质 |
Also Published As
Publication number | Publication date |
---|---|
CN103152433B (zh) | 2017-12-05 |
Similar Documents
Publication | Publication Date | Title |
---|---|---|
Baldini et al. | The serverless trilemma: Function composition for serverless computing | |
CN107526624B (zh) | 一种基于Java虚拟机的智能合约执行引擎 | |
CN109002362B (zh) | 一种服务方法、装置、***以及电子设备 | |
CN109284197B (zh) | 基于智能合约的分布式应用平台及实现方法 | |
US8572236B2 (en) | Distributing services in graph-based computations | |
CN112988499B (zh) | 数据处理方法、装置、电子设备和存储介质 | |
CN107729139B (zh) | 一种并发获取资源的方法和装置 | |
Schel et al. | Manufacturing service bus: an implementation | |
CN103152433A (zh) | 一种分布式服务端框架及其使用、交互、请求处理方法 | |
EP1693765B1 (en) | A data processing system and method | |
CN105765578B (zh) | 分布式文件***中的数据的并行访问 | |
US20150178055A1 (en) | Methods and systems for utilizing bytecode in an on-demand service environment including providing multi-tenant runtime environments and systems | |
WO2016123921A1 (zh) | 基于Http协议的多数据源的数据处理方法及*** | |
US20170364844A1 (en) | Automated-application-release-management subsystem that supports insertion of advice-based crosscutting functionality into pipelines | |
US10089084B2 (en) | System and method for reusing JavaScript code available in a SOA middleware environment from a process defined by a process execution language | |
US20130151571A1 (en) | Interface defined virtual data fields | |
CN110764752A (zh) | 基于微服务架构实现Restful服务图形化服务编排的***及其方法 | |
CN101727475A (zh) | 一种获取数据库访问过程的方法、装置及*** | |
US20150317133A1 (en) | Cobol reference architecture | |
US10803413B1 (en) | Workflow service with translator | |
US20130159966A1 (en) | Application function library framework | |
CN102945264A (zh) | 智能启用分布式事务的方法 | |
US10268496B2 (en) | System and method for supporting object notation variables in a process defined by a process execution language for execution in a SOA middleware environment | |
US10223143B2 (en) | System and method for supporting javascript as an expression language in a process defined by a process execution language for execution in a SOA middleware environment | |
CN109597611A (zh) | 前端数据流控制组件开发***、方法、设备及存储介质 |
Legal Events
Date | Code | Title | Description |
---|---|---|---|
C06 | Publication | ||
PB01 | Publication | ||
C10 | Entry into substantive examination | ||
SE01 | Entry into force of request for substantive examination | ||
GR01 | Patent grant | ||
GR01 | Patent grant |