CN109117198B - 一种基于成本评估的超高速并行自调优的服务调用方法 - Google Patents

一种基于成本评估的超高速并行自调优的服务调用方法 Download PDF

Info

Publication number
CN109117198B
CN109117198B CN201710486354.5A CN201710486354A CN109117198B CN 109117198 B CN109117198 B CN 109117198B CN 201710486354 A CN201710486354 A CN 201710486354A CN 109117198 B CN109117198 B CN 109117198B
Authority
CN
China
Prior art keywords
service
calling
generating
type
class
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
CN201710486354.5A
Other languages
English (en)
Other versions
CN109117198A (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.)
China National Software & Service Co ltd
Original Assignee
China National Software & Service 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 China National Software & Service Co ltd filed Critical China National Software & Service Co ltd
Priority to CN201710486354.5A priority Critical patent/CN109117198B/zh
Publication of CN109117198A publication Critical patent/CN109117198A/zh
Application granted granted Critical
Publication of CN109117198B publication Critical patent/CN109117198B/zh
Active legal-status Critical Current
Anticipated expiration legal-status Critical

Links

Images

Classifications

    • 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/46Multiprogramming arrangements
    • G06F9/48Program initiating; Program switching, e.g. by interrupt
    • G06F9/4806Task transfer initiation or dispatching
    • G06F9/4843Task transfer initiation or dispatching by program, e.g. task dispatcher, supervisor, operating system
    • G06F9/485Task life-cycle, e.g. stopping, restarting, resuming execution
    • G06F9/4856Task life-cycle, e.g. stopping, restarting, resuming execution resumption being on a different machine, e.g. task migration, virtual machine migration
    • G06F9/4862Task life-cycle, e.g. stopping, restarting, resuming execution resumption being on a different machine, e.g. task migration, virtual machine migration the task being a mobile agent, i.e. specifically designed to migrate
    • 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/44505Configuring for program initiating, e.g. using registry, configuration files

Landscapes

  • Engineering & Computer Science (AREA)
  • Software Systems (AREA)
  • Theoretical Computer Science (AREA)
  • Physics & Mathematics (AREA)
  • General Engineering & Computer Science (AREA)
  • General Physics & Mathematics (AREA)
  • Debugging And Monitoring (AREA)

Abstract

本发明公开了一种基于成本评估的超高速并行自调优的服务调用方法。本方法为:1)将应用系统内的服务生成与硬编码等同效率的服务代理对象,并将其放入对应的服务管理容器;然后将该服务代理对象注册到服务管理器上;2)当该服务管理器收到调用该服务的请求时,查找该服务对应的服务代理对象,然后通过该服务代理对象触发执行该服务;服务执行引擎记录该服务的调用开始时间、调用结束时间和调用结果首次访问时间;3)根据步骤2)记录的信息,计算服务执行时间成本和首次获取结果间隔时间成本;4)当服务执行时间成本÷控制阈值≤首次获取结果间隔时间成本≤服务执行时间成本×控制阈值时,标记该服务可并行执行,否则标记为不可并行执行。

Description

一种基于成本评估的超高速并行自调优的服务调用方法
技术领域
本发明涉及一种服务调用方法,尤其涉及一种基于成本评估的超高速并行自调优的服务调用方法,属于网络技术领域。
技术背景
本发明是为解决大型应用系统中高并发请求,保证系统的高可用性,可扩展性,安全性而设计。
大型应用系统往往拥有庞大的用户量,当用户集中办理业务,这时系统并发很高,需要解决这种高并发的请求,保证系统的高可用性。高可用性应用系统需要高性能的服务来支撑。
大型应用系统往往包含多个业务系统,多个业务系统之间又存在复杂的业务交叉,这样就难免在业务系统之间存在相互调用的需求。为了减少系统耦合,提高代码的复用性,需要高效的服务供其它业务系统调用。
业务需求的变更,对业务系统提供的服务也是一个挑战,这就需要服务提供良好的扩展性。
目前,传统的SOA体系架构设计,将应用程序的服务通过在这些服务之间定义良好的接口和契约联系起来,为了适应异构系统之间的服务调用,传统的服务采用统一和通用的方式进行交互。但是传统SOA存在以下问题:
1.服务安全问题
在SOA环境中,由于一个应用软件的组件很容易与不同域的其他组件进行对话,所以确保相互连接的系统之间安全访问就变得很困难。
2.服务部署问题
在SOA环境中,服务参数的调整会导致与之依赖的其他相关服务都要调整,或者增加一个新的服务作为当前服务的扩展服务,这两种方式都会大大增加应用的运维工作量。
3.服务调用性能问题
在SOA环境中,服务的调用不能依据服务实际的调用情况来执行并行或者串行调用,在大型应用系统中严重影响系统的运行效率。
发明内容
为了解决现有的通用服务总线模块内部全服务调用存在的不足,本发明提供一种基于成本评估的超高速并行自调优服务调用的方法。
本发明解决其技术问题所采用的技术方案是:
1、内部服务管理
1)应用系统内服务声明信息包含服务名、是否允许自动化单元测试框架收集此服务的调用信息、描述、版本、是否已不再支持更新调整维护、自由路由共享、服务仅允许直接同步调用、用于定义服务的安全等级。其中是否允许自动化单元测试框架收集此服务的调用信息可在后续服务调用中分析服务调用情况及调用性能,方便分析服务调用效率;服务的安全等级可定义服务的安全级别,在后续服务调用安全检查时使用。
2)应用系统启动或系统内服务首次被调用时,使用字节码算法,在内存中直接生成与硬编码等同效率的服务代理对象,并将其放入对应的服务管理容器,以便重用(如图1)。将该服务的服务代理对象注册到服务管理器上。
服务代理对象生成算法如下:
a)根据服务定义服务代理类接口定义源文件
b)分析服务方法的类路径、方法名、参数信息和返回值信息;
c)创建服务代理类主体声明的字节码;
d)根据服务代理类接口定义,生成服务代理类的服务调用方法头声明的字节码;
e)根据配置文件中的配置参数中是否输出调试日志,如果服务调用发生时输出调试日志信息,则自动增加调试信息的字节码;
f)分析服务方法各参数类型,生成服务调用参数入栈操作的字节码;如果服务参数为基本类型时,算法将自动增加对象类型到基本类型的转换代码;Java语言的类型分为基本类型和对象类型,服务调用时统一对象类型,但服务方法定义的参数可能是基本类型,此时需要将对象类型转为对应的基本类型;
g)判断服务方法是否为静态方法,当服务方法为静态方法时,生成静态方法调用的字节码;当服务方法为非静态方法时,生成类方法调用的字节码;
h)分析服务返回值的类型,如果服务返回参数类型为基本类型时,生成基本类型转换为相应对象类型的字节码,否则直接生成返回对象类型的字节码;
i)生成服务代理类的服务调用方法结束的字节码;
j)生成服务代理类结束的字节码。
2、服务调用性能优化和执行调度优化
当该服务管理器收到调用服务A的请求时,查找该服务A对应的服务代理对象a,然后通过该服务代理对象a触发执行该服务A;服务执行引擎会自动择机跟踪服务的调用开始时间、调用结束时间和调用结果首次访问时间(即服务调用结束后产生的结果第一次被访问的时间)及记录服务间调用关系,并通过如下计算公式判断服务是满足合并行执行条件:
1)服务执行时间成本=调用结束时间-调用开始时间。
2)首次获取结果间隔时间成本=结果首次访问时间-调用结束时间。
3)控制阈值,默认值为16。
4)当“服务执行时间成本÷控制阈值”<=“首次获取结果间隔时间成本”<=“服务执行时间成本×控制阈值”时,标记服务A可并行执行,否则标记服务A为不可并行执行。
3、内部服务血缘分析
在服务调用过程中,分析服务调用之间的关系,根据服务间调用关系生成对应的服务血缘关系拓扑树,方便了解内部服务存在的关联关系。
服务血缘关系主要包含两方面内容:
1.服务调用关系:可用于分析服务变化影响范围,快速确定回归测试范围,也可用于分析服务调用路径是否最优,是否存在嵌套调用等用途。
2.服务调用耗时:主要用于分析服务性能分析,可为服务成本分析提供数据。
4、服务参数默认值
在服务使用过程中,服务参数需要调整增加或者减少,在不影响调用当前服务的基础上,通过服务参数的默认值,实现服务参数的调整,而不影响原有服务的调用。如服务A入参有3个,在服务上线使用一段时间后,该服务参数因为需求调整,要求增加新的参数。此时可在服务A的3个参数后增加第4个参数,并设置服务参数默认值。然后将服务重新上线。上线后的服务不仅不影响原有服务的调用,还可以支持新服务4个参数的调用。
5、热部署,当服务发生变化调整时,可通过配置热部署组件,实现服务的热部署,而不需要重启应用系统。
6、服务调用安全检查和审计
服务声明信息中可设置服务的安全级别,当服务被非对应安全级别的调用方调用时,会被拦截器拦截,无需担心该服务被非安全调用方调用。在调用服务完成时,记录服务调用相关信息,方便服务审计。
7、服务资源管理
在首次调用服务时,跟踪服务的调用开始到调用结束占用的资源情况,以及整个系统的资源使用情况。自动释放服务调用完成还未释放的资源,节省系统的成本消耗。
本发明的有益效果是为系统的服务触发执行提供高效的执行性能保障:
1、服务查找效率:服务管理器内部使用哈希表管理注册在其上的服务相关对象,并根据系统的服务注册情况,自动计算哈希表的大小,降低服务查找时因哈希Code冲突造成的对象比较的开销,提升Hash查找效率。
2、服务方法调用效率:服务方法调用有很多种实现方式,各有优劣,如表1:
表1为效率对比表
Figure BDA0001330568060000041
为了保证服务方法的调用效率,根据系统启动过程中收集的服务信息,在系统启动或服务首次调用时使用字节码算法在内存中直接生成与硬编码等同效率的服务代理对象,并将其放入对应的服务管理容器,以便重用。
附图说明
图1为本发明的方法整体技术结构图。
具体实施方式
下面对本发明的具体实施方式进行进一步详细描述。
1、配置工作
使用此方法,必须使用配置文件sword.xml,配置文件名称不可更改。配置文件格式如下
Figure BDA0001330568060000042
Figure BDA0001330568060000051
配置文件主要存储三类配置信息:基本信息设置、服务组件配置和平台事件配置。其中基本信息设置是指该系统的基本信息设置,设置包含服务器名称、服务节点名称、服务器描述以及服务器运行模式。
第二类配置信息主要是服务组件配置,主要包含控制服务代理类的生成时机以及服务类是否需要有参构造函数。服务代理类的生成时机分为两种,服务器启动时生成(startup)和首次调用时生成(running)。服务类创建方式分为两种,默认的创建新的服务类实例和使用IoC组件创建服务类,其中IoC容器支持Spring和Google Guice两种框架。
第三类配置信息是平台事件配置,主要是配置类扫描框架,在使用IoC时,需要在此处配置IoC扫描器,配置内容如下
Figure BDA0001330568060000052
2、服务声明
服务声明代码如下
服务容器类代码:
Figure BDA0001330568060000061
服务类代码:
Figure BDA0001330568060000062
Figure BDA0001330568060000071
服务默认参数类代码
Figure BDA0001330568060000072
Figure BDA0001330568060000081
服务声明示例代码如下
需要引用以下两个类
Figure BDA0001330568060000082
@ServiceContainer(必需):类注解
@Service(必需):方法注解,需要作为服务的方法。没指定serviceName参数时,默认以方法名作为服务名
@Parameter(非必需):默认服务参数,在服务参数发生变更时使用,且必须放在服务参数的末尾。
服务类使用默认服务参数调用示例代码如下:
Figure BDA0001330568060000083
Figure BDA0001330568060000091
服务类生方式是否使用IoC,参考配置工作部分。
服务类使用IoC示例代码如下
示例:接口定义
public interface ICalculator{
publicintcalc(inta,intb)throws SwordBaseCheckedException;
}。
示例:接口实现
接口实现:加法
Figure BDA0001330568060000092
接口实现:减法
Figure BDA0001330568060000093
示例:注入类
服务:加法
Figure BDA0001330568060000094
Figure BDA0001330568060000101
服务:减法
Figure BDA0001330568060000102
示例:测试
Figure BDA0001330568060000103
3、服务调用
服务调用示例代码如下
Figure BDA0001330568060000104
Figure BDA0001330568060000111

Claims (9)

1.一种基于成本评估的超高速并行自调优的服务调用方法,其步骤为:
1)将应用系统内的服务生成与硬编码等同效率的服务代理对象,并将其放入该服务对应的服务管理容器;然后将该服务的服务代理对象注册到服务管理器上;
2)当该服务管理器收到调用该服务的请求时,查找该服务对应的服务代理对象,然后通过该服务代理对象触发执行该服务;服务执行引擎记录该服务的调用开始时间、调用结束时间和调用结果首次访问时间;
3)根据步骤2)记录的信息,计算服务执行时间成本和首次获取结果间隔时间成本;所述服务执行时间成本=调用结束时间-调用开始时间;所述首次获取结果间隔时间成本=调用结果首次访问时间-调用结束时间;
4)当服务执行时间成本÷控制阈值≤首次获取结果间隔时间成本≤服务执行时间成本×控制阈值时,标记该服务可并行执行,否则标记该服务为不可并行执行。
2.如权利要求1所述的方法,其特征在于,所述步骤2)中,还记录服务被调用过程的服务间的调用关系;根据该调用关系生成该服务的服务血缘关系拓扑树。
3.如权利要求2所述的方法,其特征在于,根据该服务的服务血缘关系拓扑树确定该服务的对应的回归测试范围。
4.如权利要求2所述的方法,其特征在于,根据该服务的服务血缘关系拓扑树的服务调用关系确定该服务的调用路径是否最优以及是否存在嵌套调用。
5.如权利要求2所述的方法,其特征在于,根据该服务的服务血缘关系拓扑树的服务调用耗时为服务成本分析提供数据。
6.如权利要求1~5任一所述的方法,其特征在于,应用系统内每一服务设有一服务声明信息,包括服务名、是否允许收集此服务的调用信息和服务的安全等级。
7.如权利要求6所述的方法,其特征在于,当该服务被非对应安全级别的调用方调用时,会被拦截器拦截。
8.如权利要求1所述的方法,其特征在于,生成所述服务代理对象的方法为:
1)根据该服务定义服务代理类接口;根据该服务的类路径、方法名、参数信息和返回值信息,创建服务代理类主体声明的字节码;
2)根据服务代理类接口定义,生成服务代理类的服务调用方法头声明的字节码;
3)根据该服务配置文件中的配置参数中是否输出调试日志,如果有调试日志输出,则增加调试信息的字节码;根据该服务的参数信息的参数类型,生成服务调用参数入栈操作的字节码;如果参数类型为基本类型时,增加对象类型到基本类型的转换代码;
4)判断该服务的服务方法是否为静态方法,如果为静态方法,则生成静态方法调用的字节码;如果为非静态方法,则生成类方法调用的字节码;
5)根据该服务返回值的类型,如果服务返回参数类型为基本类型,则生成基本类型转换为相应对象类型的字节码,否则直接生成返回对象类型的字节码;
6)生成服务代理类的服务调用方法结束的字节码和服务代理类结束的字节码。
9.如权利要求1所述的方法,其特征在于,所述控制阈值为16。
CN201710486354.5A 2017-06-23 2017-06-23 一种基于成本评估的超高速并行自调优的服务调用方法 Active CN109117198B (zh)

Priority Applications (1)

Application Number Priority Date Filing Date Title
CN201710486354.5A CN109117198B (zh) 2017-06-23 2017-06-23 一种基于成本评估的超高速并行自调优的服务调用方法

Applications Claiming Priority (1)

Application Number Priority Date Filing Date Title
CN201710486354.5A CN109117198B (zh) 2017-06-23 2017-06-23 一种基于成本评估的超高速并行自调优的服务调用方法

Publications (2)

Publication Number Publication Date
CN109117198A CN109117198A (zh) 2019-01-01
CN109117198B true CN109117198B (zh) 2021-05-11

Family

ID=64733424

Family Applications (1)

Application Number Title Priority Date Filing Date
CN201710486354.5A Active CN109117198B (zh) 2017-06-23 2017-06-23 一种基于成本评估的超高速并行自调优的服务调用方法

Country Status (1)

Country Link
CN (1) CN109117198B (zh)

Families Citing this family (1)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
CN111461902B (zh) * 2020-03-31 2023-12-15 泰康保险集团股份有限公司 保费处理方法、装置、设备及计算机可读存储介质

Citations (2)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
CN102866924A (zh) * 2012-09-12 2013-01-09 北京航空航天大学 内容整合引擎调度方法及装置
CN103916395A (zh) * 2014-04-09 2014-07-09 北京京东尚科信息技术有限公司 一种服务调用方法、设备及系统

Patent Citations (2)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
CN102866924A (zh) * 2012-09-12 2013-01-09 北京航空航天大学 内容整合引擎调度方法及装置
CN103916395A (zh) * 2014-04-09 2014-07-09 北京京东尚科信息技术有限公司 一种服务调用方法、设备及系统

Non-Patent Citations (1)

* Cited by examiner, † Cited by third party
Title
bluyuw2.1.0sword core-总体说明.《https://www.docin.com/p-1083994226.html》.2015, *

Also Published As

Publication number Publication date
CN109117198A (zh) 2019-01-01

Similar Documents

Publication Publication Date Title
US8997070B2 (en) Extension mechanism for scripting language compiler
US8135732B2 (en) System and method for providing network-based services to users with high availability
WO2017041657A1 (zh) 一种应用接口管理方法和装置
CN110908641B (zh) 基于可视化的流计算平台、方法、设备和存储介质
KR100918116B1 (ko) 에스시에이 기반 시스템 그리고 그의 파일 파싱 방법 및애플리케이션 생성 방법
Walter et al. An expandable extraction framework for architectural performance models
JP2004199330A (ja) 情報処理装置、トレース処理方法、プログラム及び記録媒体
CN111949650A (zh) 一种多语言融合查询方法及多模数据库系统
CN103116513B (zh) 一种异构多核处理器编译器
WO2012051844A1 (zh) 智能网平台、业务执行方法和分析业务异常的方法
CN103473034A (zh) 一种动态发布Web 服务的方法和装置
US9411618B2 (en) Metadata-based class loading using a content repository
Bezirgiannis et al. ABS: A high-level modeling language for cloud-aware programming
CN109117198B (zh) 一种基于成本评估的超高速并行自调优的服务调用方法
CN116204239A (zh) 业务处理方法、装置和计算机可读存储介质
CN111966718B (zh) 用于应用系统的数据传播追踪的系统及方法
CN110795344B (zh) 面向分布式高性能计算集群调试系统
CN113761079A (zh) 数据访问方法、系统和存储介质
Fortier et al. Dyninka: a FaaS framework for distributed dataflow applications
Merzky et al. Application level interoperability between clouds and grids
Woodside From annotated software designs (UML SPT/MARTE) to model formalisms
Zarrin et al. Towards separation of concerns in flow-based programming
WO2015196524A1 (zh) 软件升级处理方法、装置、终端及服务器
CN112130849B (zh) 代码自动生成方法及装置
CN111124610B (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
CB03 Change of inventor or designer information

Inventor after: Zhang Jiuxu

Inventor after: Wang Biao

Inventor after: Wang Jingqiang

Inventor after: Zhao Xuguang

Inventor after: Ju Jiajia

Inventor after: Xu Shoulin

Inventor before: Zhang Jiuxu

Inventor before: Wang Biao

Inventor before: Wang Jingqiang

Inventor before: Zhao Xuguang

Inventor before: Ju Jiajia

Inventor before: Xu Shoulin

CB03 Change of inventor or designer information