一种集成多种通讯协议自由组合的微服务框架的实现方法技术

技术编号:20801162 阅读:22 留言:0更新日期:2019-04-06 14:59
本发明专利技术涉及微服务技术领域,特别是一种集成多种通讯协议自由组合的微服务框架的实现方法。本发明专利技术的方法是采用注解及接口形式定义服务,集成RPC和基于HTTP通讯协议的REST并分别提供服务,通过动态代理实现调用时自动在不同类型服务间负载均衡。本发明专利技术实现了自由组合服务来包装部署服务应用,能更好扩展服务吞吐量;能够随着业务发展以及负载情况随时调整服务部署方案,并很容易满足业务发展所产生的大量不同的需求;可以随时自由集成或更换通讯协议或服务模式,而不需要更改业务代码,大大减少实际更换工作量。

An Implementation Method of a Microservice Framework Integrating Free Combination of Multiple Communication Protocols

The invention relates to the field of micro-service technology, in particular to an implementation method of a micro-service framework integrating multiple communication protocols freely. The method of the invention is to define services in the form of annotations and interfaces, integrate RPC and REST based on HTTP communication protocol and provide services separately, and realize load balancing among different types of services automatically when invoked by dynamic proxy. The invention realizes the free composition service to package and deploy service application, and can better expand service throughput; can adjust service deployment scheme at any time with business development and load conditions, and can easily meet a large number of different requirements arising from business development; can freely integrate or replace communication protocols or service modes at any time, without changing business code, and greatly reduce the service throughput. Actual replacement workload.

【技术实现步骤摘要】
一种集成多种通讯协议自由组合的微服务框架的实现方法
本专利技术涉及微服务
,特别是一种集成多种通讯协议自由组合的微服务框架的实现方法。
技术介绍
随着微服务架构越来越流行,现在已经有越来越多的企业需求开始使用微服务架构代替以往的三层架构,将一个单体系统中的多个组件改造成单独的微服务,从而快速响应用户需求。现有开源的微服务框架也越来越多,但基本上只支持一种通讯协议,比如Dubbo是RPC、SpringCloud是基于HTTP的REST,没有出现同时支持两种通讯协议的框架。在项目的开发过程中,随着时间的推移,用户提出的需求会不断增加,项目的复杂程度也越来越大,项目在实际开发中单一通讯模式可能会达不到要求或者为了性能提升需要部分改变通讯协议等等情况,这将会造成需要大量时间来改造。
技术实现思路
本专利技术解决的技术问题在于提供一种集成多种通讯协议自由组合的微服务框架的实现方法;解决微服务对多通讯协议的需求。本专利技术解决上述技术问题的技术方案是:所述的方法是采用注解及接口形式定义服务,集成RPC和基于HTTP通讯协议的REST并分别提供服务,通过动态代理实现调用时自动在不同类型服务间负载均衡。所述的方法具体包括如下步骤:步骤1:通过服务接口发现,进行远程服务动态代理创建;步骤2:根据集成的不同协议发布服务并注册服务;步骤2:根据服务接口类自动获取服务调用处理类,并按规则分发;步骤3:根据集成的不同协议创建客户端代理对象,并调用对象方法。所述的服务包括服务注册与服务调用。所述的服务注册在启动时自动注册,不同协议的服务分别注册,并且同时注册服务信息与服务应用信息;可以自由选择使用那一种协议注册,并且可以同时选择。所述的服务注册流程是:1)、服务发现,在应用启动时遍历所有加载的Class文件,找到所有通过特定注解定义的服务接口类文件和服务实现类文件,并将其存入内存备用2)、判定是否本地服务,判断服务是否有对应的接口实现类,有实现类则为本地服务接口类,无实现类则为远程服务接口类;3)、发布服务,在本地服务器提供对外服务的接口路径,按不同协议则提供不同类型的服务;4)、注册服务,将发布的服务接口对外访问地址上传到服务注册中心;将上一步所发布的服务接口对外访问地址上传到服务注册中心5)、注册服务应用信息,注册的内容包括应用ID、应用名称、应用类型、应用服务IP、端口以及应用与服务的关联信息。所述的服务调用流程是:1)、服务发现,服务应用启动时自动发现服务接口类;2)、判断是否远程服务接口,判断服务是否有对应的接口实现类,有实现类则为本地服务接口类,无实现类则为远程服务接口类;3)、注册动态代理Bean,通过JAVA语言的Proxy.newProxyInstance()为远程服务接口注册动态代理实现类,并注册成为Spring框架的Bean;4)、注入服务接口,需要调用远程服务时,直接在需要的类文件内注入服务接口;本地服务注入的实体对象即接口对应实现类的实例化对象,远程服务注入的实体对象即注册的动态代理对象;5)调用服务方法。所述的调用服务方法是:1)、查找可用的远程服务调用处理类,通过服务接口类查找可用的服务处理类,并过滤服务注册中心中无可用服务的处理类;2)、随机或根据特定规则获取一个处理类;3)、根据处理类的类型进行不同处理;4)、通过服务接口获取服务信息,通过服务接口类上定义的注解信息获取到服务信息;5)、通过服务注册中心获取远程服务信息,将获取到的多个服务信息按规则进行负载均衡选取其中一个远程服务地址提供服务;6)、创建客户端代理对象,根据远程服务信息创建客户端对象,通过客户端对象来进行远程方法访问;7)、调用远程服务方法。采用的方法,能够自由组合服务来包装部署服务应用,能更好扩展服务吞吐量;能够随着业务发展以及负载情况随时调整服务部署方案,并很容易满足业务发展所产生的大量不同的需求。采用本专利技术实现的微服务框架,可以随时自由集成或更换通讯协议或服务模式,而不需要更改业务代码,大大减少实际更换工作量。附图说明下面结合附图对本专利技术进一步说明:图1是本专利技术实施例中远程服务注册流程图;图2是本专利技术实施例中远程服务调用流程图;图3是本专利技术实施例中远程服务调用子流程图;图4是本专利技术实施例中服务部署及请求调用示意图。具体实施方式本专利技术采用特定注解及接口形式来定义服务,集成RPC和基于HTTP通讯协议的REST并分别提供服务,通过动态代理实现调用时自动在不同类型服务间负载均衡。本专利技术实施例中主要集成RPC与REST两种服务模式,实际按此方法可以自由扩充以实现集成多种协议的微服务框架。本专利技术是在一种基于注解的灵活透明微服务框架的实现方法的基础上集成基于HTTP协议的REST服务方法,并且使用“接口即服务”概念,即一个服务接口就是一个服务,一个服务应用包含多个服务。本专利技术分为服务注册与服务调用两方面,在第一方面服务注册是在启动时自动注册,不同协议的服务分别注册,并且同时注册服务信息与服务应用信息;在服务模块可以自由选择使用那一种协议提供服务并注册,并且可以同时选择。图1是一个实施例中服务注册流程图,该方法包括:1)服务发现即在应用启动时自动发现服务接口Class,为了方便后续的服务注册/调用等操作,在JAVA应用启动时遍历所有加载的Class文件,找到所有通过特定注解定义的服务接口类文件和服务实现类文件,并将其存入内存备用。这里一个通用过程,即发现在服务信息存入内存后,不管是后续自动服务发布、注册、调用均需通过存入的信息遍历服务信息进行处理。2)判定是否本地服务这里的本地服务是指此应用作为服务提供者需要提供的服务。我们通过判断服务是否有对应的接口实现类(即服务接口实现类,指具体实现该接口的类文件),有实现类则为本地服务接口类,无实现类则为远程服务接口类。3)发布服务服务发布即在本地服务器提供对外服务的接口路径,按不同协议则提供不同类型的服务,下面按RPC和REST两种分别说明。本例中RPC采用JAVA语言的RMI协议通讯,即在本地服务器注册RMI服务。注册RMI服务需要配置主机地址、端口、服务名、服务接口类、服务实现类,比如主机地址/端口信息按配置或默认值进行设置(比如采用默认值为本机IP地址:1099),服务接口类和实现类从第一步的服务发现预存内存里面取出,服务名从接口类的注解信息中获取。注册RMI服务完成后,对外提供服务调用地址即为:rmi://ip:1099/serverName。本例中REST采用SpringWebMVC框架,服务发布即提供对外访问的APIURL地址,在服务接口类中使用@RequestMapping注解配置对外访问映射路径即可,应用启动成功后SpringWebMVC框架自动映射对外访问URL。注册REST服务完成后,对外提供服务调用的地址即为:http://ip:80/path,path即为@RequestMapping注解配置的路径。4)注册服务即将上一步所发布的服务接口对外访问地址上传到服务注册中心,由于REST路径信息可在服务接口类的注解信息里获取故仅需注册IP和端口信息。本例中采用Zookeeper作为服务注册中心,比如将服务信息保存在/services/{服务名}/{服务类型}/{服务应用ID}本文档来自技高网...

【技术保护点】
1.一种集成多种通讯协议自由组合的微服务框架的实现方法,其特征在于:所述的方法是采用注解及接口形式定义服务,集成RPC和基于HTTP通讯协议的REST并分别提供服务,通过动态代理实现调用时自动在不同类型服务间负载均衡。

【技术特征摘要】
1.一种集成多种通讯协议自由组合的微服务框架的实现方法,其特征在于:所述的方法是采用注解及接口形式定义服务,集成RPC和基于HTTP通讯协议的REST并分别提供服务,通过动态代理实现调用时自动在不同类型服务间负载均衡。2.根据权利要求1所述的方法,其特征在于:所述的方法具体包括如下步骤:步骤1:通过服务接口发现,进行远程服务动态代理创建;步骤2:根据集成的不同协议发布服务并注册服务;步骤2:根据服务接口类自动获取服务调用处理类,并按规则分发;步骤3:根据集成的不同协议创建客户端代理对象,并调用对象方法。3.根据权利要求1或2所述的方法,其特征在于:所述的服务包括服务注册与服务调用。4.根据权利要求3所述的方法,其特征在于:所述的服务注册在启动时自动注册,不同协议的服务分别注册,并且同时注册服务信息与服务应用信息;可以自由选择使用那一种协议注册,并且可以同时选择。5.根据权利要求3所述的方法,其特征在于:所述的服务注册流程是:1)、服务发现,在应用启动时遍历所有加载的Class文件,找到所有通过特定注解定义的服务接口类文件和服务实现类文件,并将其存入内存备用2)、判定是否本地服务,判断服务是否有对应的接口实现类,有实现类则为本地服务接口类,无实现类则为远程服务接口类;3)、发布服务,在本地服务器提供对外服务的接口路径,按不同协议则提供不同类型的服务;4)、注册服务,将发布的服务接口对外访问地址上传到服务注册中心;将上一步所发布的服务接口对外访问地址上传...

【专利技术属性】
技术研发人员:王攀锋季统凯
申请(专利权)人:国云科技股份有限公司
类型:发明
国别省市:广东,44

网友询问留言 已有0条评论
  • 还没有人留言评论。发表了对其他浏览者有用的留言会获得科技券。

1