本发明涉及计算机领域,更具体说,涉及一种多服务部署和通信的方法及系统。
背景技术:
1、在现有技术中,存在几种方式在服务器上部署多个服务。
2、1、一个服务器部署多个服务进程:例如linux服务器上通过java -jar运行多个不同的jar文件代表的多个服务。每一个服务分配一个独立的进程,在服务器运行多进程会浪费服务器的资源。不同进程之间需要使用不同的端口,使得前端的统一访问变得复杂,同时后台反向代理在管理多个不同的端口的情况也变得繁琐。此外,进程间通信的开销相对较高,多个进程之间的通信需要跨越进程边界,这会导致服务器性能大幅度降低。
3、2、一个运行容器部署多个服务包:例如tomcat在webapps目录下放置多个不同的war包,代表多个服务。容器中存在了多个服务的war包时,每个war包都包含自己的配置、依赖和资源,导致容器在启动和运行的的过程中需要进行复杂的解析操作,增加了系统的负担。其次为了区分不同的服务,容器往往要求它们使用不同的访问路径或运行端口,不利于前端的统一访问与后台反向代理的维护。此外,当这些服务需要进行通信时,需跨越不同的war包,这导致性能较低的服务间通信。相比于在同一进程中的服务通信,跨war包通信涉及更多的网络开销和复杂性。
4、3、人工调整服务代码做合并与拆分:例如手动将多个springboot服务代码合并,只保留一个application启动类。这种方式依赖人工部署,效率低下,浪费人力资源。
5、总体而言,现有技术的缺点主要包括服务器资源浪费、性能降低、访问路径或端口不统一以及服务间通信性能差等问题。因此,有必要提出一种新的技术或方法,以解决这些问题并提高服务器上多服务部署的效率和性能。
技术实现思路
1、本发明提供了一种多服务部署和通信的方法和系统,具体可以根据配置自动调整多个服务的部署方式和服务间通信策略,以提高服务器性能和灵活高效的部署。
2、第一方面,本发明提供了一种多服务部署和通信的方法,其中包括:
3、确定多服务的部署方式;
4、基于所述部署方式,将调用服务与被调服务的配置信息集成到同一服务器的配置文件中或分别写入不同服务器的配置文件中;
5、基于所述配置文件,在相应的服务器上部署服务;
6、当所述调用服务向所述被调服务发起通信来调用其中的至少一个被调方法时,所述调用服务所在的服务器判断所述部署方式;
7、所述调用服务所在的服务器基于判断的结果选择不同的通信方式来与所述被调服务通信。
8、第二方面,本发明提供了一种多服务部署和通信的系统,其中包括:
9、配置模块,用于基于多服务的部署方式,将调用服务与被调服务的配置信息集成到同一服务器的配置文件中或分别写入不同服务器的配置文件中;
10、部署模块,用于基于所述配置文件,在相应的服务器上部署服务;
11、通信模块,用于当所述调用服务向所述被调服务发起通信来调用其中的至少一个被调方法时,所述调用服务所在的服务器判断所述部署方式;所述调用服务所在的服务器基于判断的结果选择不同的通信方式来与所述被调服务通信。
12、本发明的有益技术效果如下:
13、首先,本发明提供了两种灵活的部署方式:合并部署和分拆部署。合并部署将多个服务放置在同一进程下,通过本地方法调用实现高效的服务间通信,最大化利用服务器资源并提高通信性能。分拆部署将不同的服务部署在不同的服务器上,实现微服务架构,便于根据需求水平扩展各个服务,调整副本数量,提高并发处理能力,并节省资源。
14、其次,服务器部署服务基于配置文件部署,配置文件决定了服务器上部署哪些服务。通过改变配置文件,可以自由切换合并部署和分拆部署方式。本发明通过将服务项目改造为maven模块,添加或删除maven的pom文件中的<module>标签来实现不同服务的分拆部署或合并部署。
15、最后,本发明服务间通信通过通信接口实现。每个服务都有多个方法,为每个方法提供对外暴露的接口。通过将所有服务的方法接口汇总成一个组件,其他服务可以通过该组件进行访问。由于存在一个共用的接口组件,切换部署方式时不会影响服务的具体逻辑代码执行,实现方便快捷的服务合并与拆分控制。
16、综上所述,本发明通过提供灵活的合并部署和分拆部署方式、基于配置文件的便捷部署管理以及统一的通信接口组件,解决了现有技术所存在的问题。它允许根据需求动态调整部署方式,简化了部署管理过程,同时确保了服务间通信的一致性,无需修改服务的具体逻辑代码,提高了整体系统的灵活性和可维护性。
1.一种多服务部署和通信的方法,其中包括:
2.根据权利要求1所述方法,其中所述部署方式包括分拆部署与合并部署。
3.根据权利要求2所述方法,其中所述基于所述部署方式,将调用服务与被调服务的配置信息集成到同一服务器的配置文件中或分别写入不同服务器的配置文件中还包括如下步骤:
4.根据权利要求1或3所述方法,其中所述配置文件为pom文件;
5.根据权利要求1所述方法,其中在选择部署模式之前,将每个服务改造为独立的maven模块,并上传至中央仓库。
6.根据权利要求5所述方法,其中所述基于所述配置文件,在相应的服务器上部署服务还包括如下步骤:
7.根据权利要求2所述方法,其中所述当所述调用服务向所述被调服务发起通信来调用其中的至少一个被调方法时,所述调用服务所在的服务器判断所述部署方式还包括如下步骤:
8.根据权利要求7所述方法,其中所述调用服务所在的服务器通过查找所述被调方法的实现类来判断所述部署方式还包括如下步骤:
9.根据权利要求8所述方法,其中所述调用服务所在的服务器基于判断的结果选择不同的通信方式来与所述被调服务通信还包括如下步骤:
10.一种多服务部署和通信的系统,其中包括: