CN109729149A - 一种基于注解的微服务框架实现方法 - Google Patents
一种基于注解的微服务框架实现方法 Download PDFInfo
- Publication number
- CN109729149A CN109729149A CN201811466062.6A CN201811466062A CN109729149A CN 109729149 A CN109729149 A CN 109729149A CN 201811466062 A CN201811466062 A CN 201811466062A CN 109729149 A CN109729149 A CN 109729149A
- Authority
- CN
- China
- Prior art keywords
- service
- class
- interface
- micro services
- refers
- 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.)
- Withdrawn
Links
Landscapes
- Stored Programmes (AREA)
Abstract
本发明涉及云计算技术领域,特别是一种基于注解的微服务框架实现方法。本发明的方法包括服务提供和服务调用;服务提供由服务提供者实现,具体为:定义服务接口类并注释服务定义注解,启动时自动发现定义的接口类,然后自动创建远程服务对象并注册到服务中心;服务调用由服务调用者实现,具体为:自动发现服务提供者定义的服务接口类,创建代理实现类获取远程服务,注入服务接口类获取服务代理实现类对象,然后直接调用代理实现类对象方法实现调用远程服务方法并返回结果。本发明的微服务框架使业务开发无需关注微服务实现的方法、原理以使用,可以自由组成各种部署方案而无需修改代码、自由修改框架服务协议的具体实现方法;适用于各种不同规模或类型的应用。
Description
技术领域
本发明涉及云计算技术领域,特别是一种基于注解的微服务框架实现方法。
背景技术
随着微服务架构越来越流行,现在已经有越来越多的企业开始使用微服务架构代替以往的三层架构。原来一个系统中多个组件全部改造成单独的微服务,从而可以快速响应用户需求。随着微服务的数量越来越庞大,各个服务器之间交叉调用就越来越频繁。而从开发人员角度来看,随着项目的增大业务的复杂,各业务间调用越多,各种配置也就越繁杂。
发明内容
本发明解决的技术问题在于提供一种基于注解的高灵活微服务框架的实现方法;服务提供者只需要通过一个简单注解的配置来标记服务接口,而服务调用者只需要简单注入即可,使业务开发还原到单体应用开发模式。
本发明解决上述技术问题的技术方案是:
所述的方法包括服务提供和服务调用;
所述的服务提供由服务提供者实现,具体为:定义服务接口类并注释服务定义注解,启动时自动发现定义的接口类,然后自动创建远程服务对象并注册到服务中心;
所述的服务调用由服务调用者实现,具体为:自动发现服务提供者定义的服务接口类,创建代理实现类获取远程服务,注入服务接口类获取服务代理实现类对象,然后直接调用代理实现类对象方法实现调用远程服务方法并返回结果。
所述的服务提供者,是指提供服务的微服务模块。
所述的服务调用者,是指需要调用服务提供者提供的服务的微服务模块,每一个微服务模块即可以是服务提供者也可以服务调用者。
所述的服务即微服务,是指一个接口类提供的服务,即接口即服务;
所述的微服务模块,即服务模块或服务应用,是指包含服务接口的JAR应用或其他形式应用。
所述的注解,是指JAVA程序中的@interface类型所定义的类文件;
所述的服务定义注解,是指定义的用来给服务接口类标识的包含服务信息的注解。
所述的服务接口类,是指微服务框架中服务提供者所定义的该服务所能提供的供其他服务调用者调用的方法组成的接口文件,服务调用者使用此接口类注入后直接调用;
所述的服务实现类,是指实现服务接口类的具体业务实现的代码类文件,包括具体业务逻辑和数据操作;
所述的服务代理类,是指框架通过JAVA动态代理方式自动生成的对服务接口类的服务代理。
所述的接口文件,是指Java程序中的interface类型所定义的类文件,文件中定义所提供的方法;
所述的注入,是指在使用Spring框架中的@Autowired注解后,框架自动生成基于接口的实现Bean;可以使用@Autowired注解同时也提供类似的注解。
本发明方案的有益效果如下:
1、本发明的高灵活性微服务框架的实现方法,使业务开发无需关注微服务实现的方法、原理以使用。
2、本发明的方法可以自由适用于各种不同规模或类型的应用,可以随时拆分或组合服务模块。
3、本发明的方法可以自由组成各种部署方案而无需修改代码。
4、本发明的方法可以自由修改框架服务协议的具体实现方法。
附图说明
下面结合附图对本发明进一步说明:
图1为本发明的服务注册流程图;
图2为本发明的服务调用流程图。
具体实施方式
请参见图1和图2,分别为本发明实施所提供的一种基于注解的高灵活微服务框架的实现方法的服务注册与服务调用流程图。
本发明框架分为服务注册和服务调用两部分,服务注册首先在服务提供者的服务接口定义类上注释服务定义注解,然后在服务提供者服务模块启动时自动发现服务接口定义类及其实现类,然后自动创建服务接口定义类对应实现类的实例化对象,然后根据服务接口类和实现类对象创建远程服务,然后根据服务接口类的注解信息和远程服务信息将服务注册到服务中心;服务调用者服务模块启动时自动发现在服务提供者服务接口类,然后自动创建服务接口类的代理实现类,然后服务调用者在需要的类上注入服务提供者的服务接口类,然后在具体方法直接调用注入成功的服务接口类对象的方法,然后代理实现类通过服务接口类的注解信息到服务中心获取远程服务信息,然后代理实现类通过远程服务信息调用服务方法并返回结果。
下面分别对其各个流程具体实现进行描述。
服务注册流程:
1)定义注解方法:
2)启动时自动发现服务接口类:
通过自动服务发现模块来发现服务接口类并存入内存以备用。
3)自动实例化服务:
4)创建远程服务,本例使用RMI协议提供服务:
5)将服务注册到服务中心:
这里使用curator组件注册到远程Zookeeper服务。
6)到此完成服务提供者注册流程。
服务调用流程:
1)服务调用者需要调用服务时,只需要在对应的业务代码内注入接口:
使用Spring框架自带的注入方法。
2)服务应用启动自动发现服务接口类:
这一步同上面服务注册流程,有所不同的是发现服务提供者的服务接口类。
3)注册代理Bean:
通过Spring框架Bean服务注册一个服务接口的动态代理类
4)获取远程服务信息:
5)调用远程服务方法并返回结果:
故此基于此方法可以实现一种高灵活透明的微服务基础框架,并能达到各种各样业务应用的需要。
本发明的微服务框架业务模块代码不受外部因素变更影响,能够灵活地应用到各种不同的复杂场景,而不会需要修改业务模块代码或配置文件内容,比如改变部署方式为单体应用部署或多个业务模块组合一个微服务模块等等。
本发明的微服务框架随时可以调整或切换远程服务的创建、调用的实现方式,而不影响到业务代码的正常调用。
本发明的微服务的创建、注册、调用等过程针对业务模块代码的开发人员是透明的,开发人员只需要按单体应用的方式开发实现业务服务接口类和实现类并定义注解即可,不需要其他任何微服务所需的技术和知识。远程服务的调用在业务开发人员看来与本地模块调用完全一致。
以上描述的实施例仅仅是本发明一部分实施例,而不是全部的实施例。基于本发明中的实施例,本领域普通技术人员在没有做出实质性创造所获得的方案,都属于本发明保护的范围。
Claims (8)
1.一种基于注解的微服务框架实现方法,其特征在于,所述的方法包括服务提供和服务调用;
所述的服务提供由服务提供者实现,具体为:定义服务接口类并注释服务定义注解,启动时自动发现定义的接口类,然后自动创建远程服务对象并注册到服务中心;
所述的服务调用由服务调用者实现,具体为:自动发现服务提供者定义的服务接口类,创建代理实现类获取远程服务,注入服务接口类获取服务代理实现类对象,然后直接调用代理实现类对象方法实现调用远程服务方法并返回结果。
2.根据权利要求1所述的方法,其特征在于,
所述的服务提供者,是指提供服务的微服务模块。
所述的服务调用者,是指需要调用服务提供者提供的服务的微服务模块,每一个微服务模块即可以是服务提供者也可以服务调用者。
3.根据权利要求2所述的方法,其特征在于,
所述的服务即微服务,是指一个接口类提供的服务,即接口即服务;
所述的微服务模块,即服务模块或服务应用,是指包含服务接口的JAR应用。
4.根据权利要求1、2或3所述的方法,其特征在于,
所述的注解,是指JAVA程序中的@interface类型所定义的类文件;
所述的服务定义注解,是指定义的用来给服务接口类标识的包含服务信息的注解。
5.根据权利要求1、2或3所述的方法,其特征在于,
所述的服务接口类,是指微服务框架中服务提供者所定义的该服务所能提供的供其他服务调用者调用的方法组成的接口文件,服务调用者使用此接口类注入后直接调用;
所述的服务实现类,是指实现服务接口类的具体业务实现的代码类文件,包括具体业务逻辑和数据操作;
所述的服务代理类,是指框架通过JAVA动态代理方式自动生成的对服务接口类的服务代理。
6.根据权利要求4所述的方法,其特征在于,
所述的服务接口类,是指微服务框架中服务提供者所定义的该服务所能提供的供其他服务调用者调用的方法组成的接口文件,服务调用者使用此接口类注入后直接调用;
所述的服务实现类,是指实现服务接口类的具体业务实现的代码类文件,包括具体业务逻辑和数据操作;
所述的服务代理类,是指框架通过JAVA动态代理方式自动生成的对服务接口类的服务代理。
7.根据权利要求5所述的方法,其特征在于,
所述的接口文件,是指Java程序中的interface类型所定义的类文件,文件中定义所提供的方法;
所述的注入,是指在使用Spring框架中的@Autowired注解后,框架自动生成基于接口的实现Bean;可以使用@Autowired注解同时也提供类似的注解。
8.根据权利要求6所述的方法,其特征在于,
所述的接口文件,是指Java程序中的interface类型所定义的类文件,文件中定义所提供的方法;
所述的注入,是指在使用Spring框架中的@Autowired注解后,框架自动生成基于接口的实现Bean;可以使用@Autowired注解同时也提供类似的注解。
Priority Applications (1)
Application Number | Priority Date | Filing Date | Title |
---|---|---|---|
CN201811466062.6A CN109729149A (zh) | 2018-12-03 | 2018-12-03 | 一种基于注解的微服务框架实现方法 |
Applications Claiming Priority (1)
Application Number | Priority Date | Filing Date | Title |
---|---|---|---|
CN201811466062.6A CN109729149A (zh) | 2018-12-03 | 2018-12-03 | 一种基于注解的微服务框架实现方法 |
Publications (1)
Publication Number | Publication Date |
---|---|
CN109729149A true CN109729149A (zh) | 2019-05-07 |
Family
ID=66294812
Family Applications (1)
Application Number | Title | Priority Date | Filing Date |
---|---|---|---|
CN201811466062.6A Withdrawn CN109729149A (zh) | 2018-12-03 | 2018-12-03 | 一种基于注解的微服务框架实现方法 |
Country Status (1)
Country | Link |
---|---|
CN (1) | CN109729149A (zh) |
Cited By (18)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
CN110245030A (zh) * | 2019-05-29 | 2019-09-17 | 北京字节跳动网络技术有限公司 | 一种数据服务提供方法、装置、介质和电子设备 |
CN110381135A (zh) * | 2019-07-18 | 2019-10-25 | 北京奇艺世纪科技有限公司 | 接口创建方法、服务请求方法、装置、计算机设备和介质 |
CN110381056A (zh) * | 2019-07-17 | 2019-10-25 | 钛马信息网络技术有限公司 | 基于Netty的私有协议编解码方法及装置 |
CN110489207A (zh) * | 2019-07-11 | 2019-11-22 | 平安科技(深圳)有限公司 | 参数验证方法、装置及计算机可读存储介质 |
CN110944018A (zh) * | 2019-12-27 | 2020-03-31 | 浪潮通用软件有限公司 | 一种基于注解和动态代理的rpc通信方法及设备、介质 |
CN110968296A (zh) * | 2019-12-03 | 2020-04-07 | 政采云有限公司 | 一种数据获取方法、装置、设备及可读存储介质 |
CN111142860A (zh) * | 2019-12-31 | 2020-05-12 | 广州酷狗计算机科技有限公司 | 用于实现接口调用的方法及装置 |
CN111400070A (zh) * | 2020-03-24 | 2020-07-10 | 广州华多网络科技有限公司 | 终端设备及其跨进程接口调用实现和执行方法 |
CN111414194A (zh) * | 2020-03-19 | 2020-07-14 | 政采云有限公司 | 一种接口信息生成方法、系统、电子设备及存储介质 |
CN112764723A (zh) * | 2021-01-21 | 2021-05-07 | 奇秦科技(北京)股份有限公司 | 一种基于Spring无侵入修改标准产品业务系统和方法 |
WO2021190469A1 (zh) * | 2020-03-24 | 2021-09-30 | 广州华多网络科技有限公司 | 终端设备及其应用程序接口调用控制方法 |
CN113515379A (zh) * | 2021-07-08 | 2021-10-19 | 北京元年科技股份有限公司 | 提供微服务架构系统的方法和该微服务架构系统 |
CN113626225A (zh) * | 2021-10-11 | 2021-11-09 | 中航金网(北京)电子商务有限公司 | 程序调用方法、终端设备及介质 |
CN113742105A (zh) * | 2021-09-01 | 2021-12-03 | 欧电云信息科技(江苏)有限公司 | 微服务框架的适配方法、设备和介质 |
CN114138259A (zh) * | 2021-11-29 | 2022-03-04 | 广州云徙科技有限公司 | 适配多云平台的多微服务分布式框架的构建系统及方法 |
CN115729526A (zh) * | 2022-11-29 | 2023-03-03 | 北京京航计算通讯研究所 | 一种单体和微服务一体化软件开发方法 |
US11768665B2 (en) | 2021-11-18 | 2023-09-26 | Red Hat, Inc. | Generation of service-level objective specifications using java annotation |
CN117573395A (zh) * | 2024-01-13 | 2024-02-20 | 杭州杰竞科技有限公司 | 一种微服务间远程调度方法和系统 |
Citations (4)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
CN106453288A (zh) * | 2016-09-29 | 2017-02-22 | 上海和付信息技术有限公司 | 一种支持异步模式的分布式微服务框架系统及其实现方法 |
EP3312724A1 (en) * | 2016-10-21 | 2018-04-25 | Fujitsu Limited | Microservice-based data processing apparatus, method, and program |
CN108156022A (zh) * | 2017-12-04 | 2018-06-12 | 北京奇艺世纪科技有限公司 | 一种服务调用方法、装置及电子设备 |
CN108446111A (zh) * | 2018-03-26 | 2018-08-24 | 国家电网公司客户服务中心 | 一种基于Spring cloud的微服务构建方法 |
-
2018
- 2018-12-03 CN CN201811466062.6A patent/CN109729149A/zh not_active Withdrawn
Patent Citations (4)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
CN106453288A (zh) * | 2016-09-29 | 2017-02-22 | 上海和付信息技术有限公司 | 一种支持异步模式的分布式微服务框架系统及其实现方法 |
EP3312724A1 (en) * | 2016-10-21 | 2018-04-25 | Fujitsu Limited | Microservice-based data processing apparatus, method, and program |
CN108156022A (zh) * | 2017-12-04 | 2018-06-12 | 北京奇艺世纪科技有限公司 | 一种服务调用方法、装置及电子设备 |
CN108446111A (zh) * | 2018-03-26 | 2018-08-24 | 国家电网公司客户服务中心 | 一种基于Spring cloud的微服务构建方法 |
Cited By (28)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
CN110245030B (zh) * | 2019-05-29 | 2021-11-12 | 北京字节跳动网络技术有限公司 | 一种数据服务提供方法、装置、介质和电子设备 |
CN110245030A (zh) * | 2019-05-29 | 2019-09-17 | 北京字节跳动网络技术有限公司 | 一种数据服务提供方法、装置、介质和电子设备 |
CN110489207A (zh) * | 2019-07-11 | 2019-11-22 | 平安科技(深圳)有限公司 | 参数验证方法、装置及计算机可读存储介质 |
CN110381056B (zh) * | 2019-07-17 | 2021-08-03 | 钛马信息网络技术有限公司 | 基于Netty的私有协议编解码方法及装置 |
CN110381056A (zh) * | 2019-07-17 | 2019-10-25 | 钛马信息网络技术有限公司 | 基于Netty的私有协议编解码方法及装置 |
CN110381135A (zh) * | 2019-07-18 | 2019-10-25 | 北京奇艺世纪科技有限公司 | 接口创建方法、服务请求方法、装置、计算机设备和介质 |
CN110381135B (zh) * | 2019-07-18 | 2021-09-28 | 北京奇艺世纪科技有限公司 | 接口创建方法、服务请求方法、装置、计算机设备和介质 |
CN110968296A (zh) * | 2019-12-03 | 2020-04-07 | 政采云有限公司 | 一种数据获取方法、装置、设备及可读存储介质 |
CN110968296B (zh) * | 2019-12-03 | 2023-07-25 | 政采云有限公司 | 一种数据获取方法、装置、设备及可读存储介质 |
CN110944018A (zh) * | 2019-12-27 | 2020-03-31 | 浪潮通用软件有限公司 | 一种基于注解和动态代理的rpc通信方法及设备、介质 |
CN111142860A (zh) * | 2019-12-31 | 2020-05-12 | 广州酷狗计算机科技有限公司 | 用于实现接口调用的方法及装置 |
CN111142860B (zh) * | 2019-12-31 | 2023-05-23 | 广州酷狗计算机科技有限公司 | 用于实现接口调用的方法及装置 |
CN111414194B (zh) * | 2020-03-19 | 2023-08-11 | 政采云有限公司 | 一种接口信息生成方法、系统、电子设备及存储介质 |
CN111414194A (zh) * | 2020-03-19 | 2020-07-14 | 政采云有限公司 | 一种接口信息生成方法、系统、电子设备及存储介质 |
CN111400070A (zh) * | 2020-03-24 | 2020-07-10 | 广州华多网络科技有限公司 | 终端设备及其跨进程接口调用实现和执行方法 |
CN111400070B (zh) * | 2020-03-24 | 2023-05-19 | 广州华多网络科技有限公司 | 终端设备及其跨进程接口调用实现和执行方法 |
WO2021190469A1 (zh) * | 2020-03-24 | 2021-09-30 | 广州华多网络科技有限公司 | 终端设备及其应用程序接口调用控制方法 |
CN112764723A (zh) * | 2021-01-21 | 2021-05-07 | 奇秦科技(北京)股份有限公司 | 一种基于Spring无侵入修改标准产品业务系统和方法 |
CN112764723B (zh) * | 2021-01-21 | 2021-09-17 | 奇秦科技(北京)股份有限公司 | 一种基于Spring无侵入修改标准产品业务系统和方法 |
CN113515379A (zh) * | 2021-07-08 | 2021-10-19 | 北京元年科技股份有限公司 | 提供微服务架构系统的方法和该微服务架构系统 |
CN113742105A (zh) * | 2021-09-01 | 2021-12-03 | 欧电云信息科技(江苏)有限公司 | 微服务框架的适配方法、设备和介质 |
CN113742105B (zh) * | 2021-09-01 | 2024-03-12 | 欧电云信息科技(江苏)有限公司 | 微服务框架的适配方法、设备和介质 |
CN113626225A (zh) * | 2021-10-11 | 2021-11-09 | 中航金网(北京)电子商务有限公司 | 程序调用方法、终端设备及介质 |
US11768665B2 (en) | 2021-11-18 | 2023-09-26 | Red Hat, Inc. | Generation of service-level objective specifications using java annotation |
CN114138259A (zh) * | 2021-11-29 | 2022-03-04 | 广州云徙科技有限公司 | 适配多云平台的多微服务分布式框架的构建系统及方法 |
CN115729526A (zh) * | 2022-11-29 | 2023-03-03 | 北京京航计算通讯研究所 | 一种单体和微服务一体化软件开发方法 |
CN117573395A (zh) * | 2024-01-13 | 2024-02-20 | 杭州杰竞科技有限公司 | 一种微服务间远程调度方法和系统 |
CN117573395B (zh) * | 2024-01-13 | 2024-04-02 | 杭州杰竞科技有限公司 | 一种微服务间远程调度方法和系统 |
Similar Documents
Publication | Publication Date | Title |
---|---|---|
CN109729149A (zh) | 一种基于注解的微服务框架实现方法 | |
CN109246251B (zh) | 一种微服务调用方法、装置、系统、设备及可读存储介质 | |
CN109002362B (zh) | 一种服务方法、装置、系统以及电子设备 | |
EP3731161A1 (en) | Model application method and system, and model management method and server | |
CN103530097B (zh) | 一种跨中间件平台的组件的实现方法和装置 | |
CN104683386A (zh) | 可定制响应的桩服务实现方法及装置 | |
CN102622237B (zh) | 一种业务功能流程化的配置方法及系统 | |
CN109710235B (zh) | 一种基于Java智能合约业务逻辑的事务实现系统及方法 | |
CN111324343B (zh) | 代码生成方法以及装置 | |
CN110245029A (zh) | 一种数据处理方法、装置、存储介质和服务器 | |
CN103164207A (zh) | 基于安卓系统的跨硬件平台的应用程序开发方法和系统 | |
Kim | Challenges and future directions of cyber-physical system software | |
Selic | Tutorial: real-time object-oriented modeling (ROOM) | |
CN104503768A (zh) | 一种应用程序编程接口调用方法及设备 | |
CN109726021A (zh) | 一种微服务接口定义类自发现的实现方法 | |
CN102523128B (zh) | 一种远程数据传输中的数据同步方法 | |
CN109614096B (zh) | 一种基于uml需求建模过程用例与活动转换的方法 | |
CN111580797A (zh) | 基于dubbo和spring框架的动态路由分组的方法 | |
CN101639775B (zh) | 一种组件构建方法和装置 | |
CN102520929A (zh) | 系统资源的管理方法及装置 | |
CN105260179A (zh) | 一种实现flex与servlet交互的方法 | |
Banerjee et al. | Telecom mashups: enabling web 2.0 for telecom services | |
CN109840093A (zh) | 一种任意函数适配器实现方法 | |
Hahn et al. | Modeling data transformations in data-aware service choreographies | |
CN107291455B (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 | ||
WW01 | Invention patent application withdrawn after publication | ||
WW01 | Invention patent application withdrawn after publication |
Application publication date: 20190507 |