SaaS服务模式下多租户的RPC调用方法技术

技术编号:25395948 阅读:17 留言:0更新日期:2020-08-25 23:01
本发明专利技术涉及一种SaaS服务模式下多租户的RPC调用方法,RPC调用方法运用于软件供应商内部,包括以下步骤:服务调用方在服务线程上下文设置租户信息;根据租户信息和应用得到namespace,并组合得到MQ队列名称;服务调用方发起调用;RabbitMQ中间件根据MQ队列名称进行路由找到服务提供方;服务提供方根据MQ队列名称中的服务内容提供服务和业务处理;RabbitMQ中间件根据MQ队列名称进行路由找到服务调用方;服务调用方获取并处理返回队列;服务调用方清理租户的信息,完成RPC调用。本发明专利技术RPC采用RabbitMQ作为基础组件,并将RabbitMQ作为中心结点,实现了服务注册、服务发现以及服务路由等基本RPC需求;同时RabbitMQ也提供支持多租户的功能;总体以较低的开发和运维成本解决了多租户场景下RPC的需求。

【技术实现步骤摘要】
SaaS服务模式下多租户的RPC调用方法
本专利技术涉及远程调用
,特别涉及一种SaaS服务模式下多租户的RPC调用方法。
技术介绍
SaaS,是Software-as-a-Service的缩写名称,意思为软件即服务,即通过网络提供软件服务。SaaS软件供应商将应用软件统一部署在租户的服务器上,租户可以根据工作实际需求,通过互联网向软件供应商定购所需的应用软件服务,按定购的服务多少和时间长短向软件供应商支付费用,并通过互联网获得Saas软件供应商提供的服务。租户是SaaS中的逻辑概念,一般对应独立的企业租户,租户是整体系统和应用服务功能集合的外部使用者。各租户的应用服务和数据会有逻辑/物理上的隔离,相互之间无影响。而对于SaaS软件供应商内部,就某个业务功能和流程而言,一个功能会有一条完整的调用链,当一个SaaS软件供应商面对多个租户获取业务功能和流程时,现有技术通常采用vhost功能,但vhost功能并不能完全满足现有要求,例如:首先,vhost与连接绑定,必须在初始化阶段显示配置和创建多个连接,每次新增租户都要调整配置和重启;其次,必须在服务端显示创建vhost,维护成本较高;再次,个别应用租户间版本可能有差异,需要单独实例部署;最后,部分租户存在子机构个性化服务的需求,vhost功能并不能满足个性化服务的需求。因此有必要提供一种SaaS服务模式下多租户的RPC调用方法,满足了“服务共享+独占”以及“子机构/租户”等多维度的灵活需求,还以较低的开发和运维成本解决了SaaS服务模式多租户场景下RPC的调用需求。
技术实现思路
本专利技术的目的在于提供一种SaaS服务模式下多租户的RPC调用方法,满足了“服务共享+独占”以及“子机构/租户”等多维度的灵活需求,还以较低的开发和运维成本解决了SaaS服务模式多租户场景下RPC的调用需求。为了解决现有技术中存在的问题,本专利技术提供了一种SaaS服务模式下多租户的RPC调用方法,所述RPC调用方法运用于软件供应商内部的调用过程中,软件供应商给一个租户提供一次服务为一个服务线程,一个服务线程的完成需要调用软件供应商内部多个功能模块的功能;所述SaaS服务模式下多租户的RPC调用方法包括以下步骤:当前的服务调用方在服务线程上下文中设置租户信息;所述服务调用方根据租户信息和应用得到namespace,由namespace和所述租户的服务内容组合得到完整的MQ队列名称;所述服务调用方根据所述完整的MQ队列名称发起调用;RabbitMQ中间件根据完整的MQ队列名称进行路由,找到服务提供方;所述服务提供方监听所述完整的MQ队列名称,在运行过程中收到调用请求,并根据完整的MQ队列名称中的服务内容提供服务和业务处理;RabbitMQ中间件根据所述完整的MQ队列名称进行路由,找到服务调用方,将所述服务提供方提供的服务和业务处理添加进返回队列返回到所述服务调用方;所述服务调用方获取并完成对所述返回队列中的服务和业务处理的处理;所述服务调用方清理当前租户的信息,完成一次RPC调用。可选的,在所述SaaS服务模式下多租户的RPC调用方法中,所述服务调用方为服务线程中当前需要调用功能模块中功能的调用方,所述服务提供方为服务线程中当前提供功能模块中功能的提供方。可选的,在所述SaaS服务模式下多租户的RPC调用方法中,所述租户的租户信息和服务内容从软件供应商对外的网关中获取。可选的,在所述SaaS服务模式下多租户的RPC调用方法中,在所述服务调用方根据所述完整的MQ队列名称发起调用时,还包括以下步骤:所述完整的MQ队列名称设置在调用请求信息的Header中进行传递。可选的,在所述SaaS服务模式下多租户的RPC调用方法中,所述服务提供方在运行过程中收到调用请求后,还包括以下步骤:解析Header信息,并将租户信息设置在服务线程的上下文中,以便在所述服务提供方作为新的服务调用方时能区分租户。可选的,在所述SaaS服务模式下多租户的RPC调用方法中,在所述服务调用方发起调用后,所述服务调用方监听返回队列,并暂停其他处理流程以等待所述返回队列。可选的,在所述SaaS服务模式下多租户的RPC调用方法中,所述服务调用方根据租户信息和应用得到namespace采用集中路由策略,包括以下步骤:建立“租户信息+应用”与namespace的映射关系;定制租户端以实现缓存与即时生效。可选的,在所述SaaS服务模式下多租户的RPC调用方法中,根据租户版本是否个性化,建立不同的映射关系。可选的,在所述SaaS服务模式下多租户的RPC调用方法中,所述RabbitMQ基于AMQP协议设置,以提供服务注册功能、服务发现功能以及服务路由功能。可选的,在所述SaaS服务模式下多租户的RPC调用方法中,所述RabbitMQ包括完整的运维工具。在本专利技术所提供的SaaS服务模式下多租户的RPC调用方法中,RPC选型采用RabbitMQ作为基础组件,并将RabbitMQ作为中心结点,可以实现服务注册、服务发现以及服务路由等基本的RPC需求;同时RabbitMQ也提供支持多租户的功能;本专利技术总体以较低的开发和运维成本解决了多租户场景下RPC的调用需求。附图说明图1为本专利技术实施例提供的SaaS服务模式下多租户的RPC调用方法的流程图。具体实施方式下面将结合示意图对本专利技术的具体实施方式进行更详细的描述。根据下列描述,本专利技术的优点和特征将更清楚。需说明的是,附图均采用非常简化的形式且均使用非精准的比例,仅用以方便、明晰地辅助说明本专利技术实施例的目的。在下文中,如果所述的方法包括一系列步骤,且本文所呈现的这些步骤的顺序并非必须是可执行这些步骤的唯一顺序,且一些所述的步骤可被省略和/或一些本文未描述的其他步骤可被添加到该方法。对于SaaS软件供应商内部,就某个业务功能和流程而言,一个功能会有一条完整的调用链,当一个SaaS软件供应商面对多个租户获取业务功能和流程时,现有技术通常采用vhost功能,但vhost功能并不能完全满足现有要求,例如:首先,vhost与连接绑定,必须在初始化阶段显示配置和创建多个连接,每次新增租户都要调整配置和重启;其次,必须在服务端显示创建vhost,维护成本较高;再次,个别应用租户间版本可能有差异,需要单独实例部署;最后,部分租户存在子机构个性化服务的需求,vhost功能并不能满足个性化服务的需求。因此有必要提供一种SaaS服务模式下多租户的RPC调用方法,所述RPC调用方法运用于软件供应商内部的调用过程中,软件供应商给一个租户提供一次服务为一个服务线程,一个服务线程的完成需要调用软件供应商内部多个功能模块的功能;如图1所示,图1为本专利技术实施例提供的SaaS服务模式下多租户的RPC调用方法的流程图,所述SaaS服务模式下多租户的RPC调用方法包括以下步骤:...

【技术保护点】
1.一种SaaS服务模式下多租户的RPC调用方法,其特征在于,/n所述RPC调用方法运用于软件供应商内部的调用过程中,软件供应商给一个租户提供一次服务为一个服务线程,一个服务线程的完成需要调用软件供应商内部多个功能模块的功能;/n所述SaaS服务模式下多租户的RPC调用方法包括以下步骤:/n当前的服务调用方在服务线程上下文中设置租户信息;/n所述服务调用方根据租户信息和应用得到namespace,由namespace和所述租户的服务内容组合得到完整的MQ队列名称;/n所述服务调用方根据所述完整的MQ队列名称发起调用;/nRabbitMQ中间件根据完整的MQ队列名称进行路由,找到服务提供方;/n所述服务提供方监听所述完整的MQ队列名称,在运行过程中收到调用请求,并根据完整的MQ队列名称中的服务内容提供服务和业务处理;/nRabbitMQ中间件根据所述完整的MQ队列名称进行路由,找到服务调用方,将所述服务提供方提供的服务和业务处理添加进返回队列返回到所述服务调用方;/n所述服务调用方获取并完成对所述返回队列中的服务和业务处理的处理;/n所述服务调用方清理当前租户的信息,完成一次RPC调用。/n...

【技术特征摘要】
1.一种SaaS服务模式下多租户的RPC调用方法,其特征在于,
所述RPC调用方法运用于软件供应商内部的调用过程中,软件供应商给一个租户提供一次服务为一个服务线程,一个服务线程的完成需要调用软件供应商内部多个功能模块的功能;
所述SaaS服务模式下多租户的RPC调用方法包括以下步骤:
当前的服务调用方在服务线程上下文中设置租户信息;
所述服务调用方根据租户信息和应用得到namespace,由namespace和所述租户的服务内容组合得到完整的MQ队列名称;
所述服务调用方根据所述完整的MQ队列名称发起调用;
RabbitMQ中间件根据完整的MQ队列名称进行路由,找到服务提供方;
所述服务提供方监听所述完整的MQ队列名称,在运行过程中收到调用请求,并根据完整的MQ队列名称中的服务内容提供服务和业务处理;
RabbitMQ中间件根据所述完整的MQ队列名称进行路由,找到服务调用方,将所述服务提供方提供的服务和业务处理添加进返回队列返回到所述服务调用方;
所述服务调用方获取并完成对所述返回队列中的服务和业务处理的处理;
所述服务调用方清理当前租户的信息,完成一次RPC调用。


2.如权利要求1所述的SaaS服务模式下多租户的RPC调用方法,其特征在于,所述服务调用方为服务线程中当前需要调用功能模块中功能的调用方,所述服务提供方为服务线程中当前提供功能模块中功能的提供方。


3.如权利要求1所述的SaaS服务模式下多租户的RPC调用方法,其特征在于,所述租户的租户信息和服务内容从软件供应商对外的网关中获取。


4....

【专利技术属性】
技术研发人员:任毅
申请(专利权)人:上海通联金融服务有限公司
类型:发明
国别省市:上海;31

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

1