一种微服务系统和微服务系统中的服务调用方法技术方案

技术编号:24572745 阅读:16 留言:0更新日期:2020-06-20 23:57
本发明专利技术实施例公开了一种微服务系统和微服务系统中的服务调用方法。系统包括:业务表现层、业务中台层和基础服务层;表现层用于通过对外暴露的接口接收用户的请求消息,并根据用户的请求消息调用所述业务中台层对外暴露的接口和/或所述基础服务层对外暴露的接口;业务中台层对所述用户的请求消息进行业务处理,并根据业务处理结果调用所述基础服务层对外暴露的接口;基础服务层用于访问持久化层,对所述请求消息对应的数据和/或业务处理结果对应的数据进行处理。本实施例通过调用接口的方式将请求消息不断向下传递,提高程序的可维护性,减少冗余代码。

A service invocation method in microservice system and microservice system

【技术实现步骤摘要】
一种微服务系统和微服务系统中的服务调用方法
本专利技术实施例涉及计算机
,尤其涉及一种微服务系统和微服务系统中的服务调用方法。
技术介绍
微服务最早由MartinFowler与JamesLewis于2014年共同提出,微服务架构风格是一种使用一套小服务来开发单个应用的方式途径,每个服务运行在自己的进程中,并使用轻量级机制通信。目前,一个大型复杂软件应用由一个或多个微服务组成。系统中的各个微服务可被独立部署,各个微服务之间是松耦合的。每个微服务仅关注于完成一件任务并很好地完成该任务。在对用户的请求进行响应时,需要通过微服务之间的接口调用,执行对应的微服务。在实际业务场景中,由于业务常常变化,微服务的调用接口需要重新定义,导致很多的接口定义重复,出现了很多功能类似的接口;而且,大量的重复代码带来了严重的代码维护问题,经常出现代码漏改的问题。
技术实现思路
本专利技术实施例提供一种微服务系统和微服务系统中的服务调用方法,以提高程序的可维护性,减少冗余代码。第一方面,本专利技术实施例提供了一种微服务系统,其特征在于,包括:表现层、业务中台层和基础服务层;所述表现层,用于通过对外暴露的接口接收用户的请求消息,并根据所述用户的请求消息调用所述业务中台层对外暴露的接口和/或所述基础服务层对外暴露的接口;所述业务中台层,用于对所述用户的请求消息进行业务处理,并根据业务处理结果调用所述基础服务层对外暴露的接口;所述基础服务层,用于访问持久化层,对所述请求消息对应的数据和/或业务处理结果对应的数据进行处理。本专利技术实施例提供的微服务系统包括表现层、业务中台层和基础服务层,分层级对系统进行控制,简化微服务系统的复杂度,规范设计过程,加快项目的交付速度;表现层可以调用业务中台层,也可以跨层调用基础服务层,满足多样化的业务需求;各层之间采用预先定义的接口进行交互,通过调用接口的方式将请求消息不断向下传递;当业务发生变化时,本实施例提供的接口调用方式依然不变,无需增加接口,也无需修改接口定义,提高程序的可维护性,减少冗余代码。第二方面,本专利技术实施例还提供了一种微服务系统中的服务调用方法,所述微服务系统包括:表现层、业务中台层和基础服务层;所述方法包括:通过所述表现层通过对外暴露的接口接收用户的请求消息,并根据所述用户的请求消息调用所述业务中台层对外暴露的接口和/或所述基础服务层对外暴露的接口;通过业务中台层对所述用户的请求消息进行业务处理,并根据业务处理结果调用所述基础服务层对外暴露的接口;通过所述基础服务层访问持久化层,对所述请求消息对应的数据和/或业务处理结果对应的数据进行处理。附图说明图1为本专利技术实施例一提供的微服务系统的架构图;图2为本专利技术实施例五提供的一种微服务系统中的服务调用方法的流程图。具体实施方式下面结合附图和实施例对本专利技术作进一步的详细说明。可以理解的是,此处所描述的具体实施例仅仅用于解释本专利技术,而非对本专利技术的限定。另外还需要说明的是,为了便于描述,附图中仅示出了与本专利技术相关的部分而非全部结构。实施例一图1为本专利技术实施例一提供的微服务系统的架构图,相比于现有包括多个服务的微服务框架,本实施例提供的系统为领域驱动设计下的3层结构,按照由上至下的顺序分别为表现层(Present层)、业务中台层(Bmp层)、基础服务层(Basic层)。其中,表现层、业务中台层和基础服务层实质为通过相应的逻辑代码实现的单元,每个单元包括多个业务模块,用于实现对应的功能。其中,表现层面向用户和界面(UI),负责和用户进行交互,包括全球广域网(WorldWideWeb,Web)页面、手机软件页面、供第三方调用的接口等,适应灵活多变的业务体系。业务中台层主要用来处理对业务的封装和沉淀,主要面向对业务的沉淀和积累。业务中台层还包括异步的消息队列(MQ)消费者。在高并发分布式环境下,由于来不及同步处理,请求往往发生堵塞,比如说,大量的insert、update之类的请求同时到达数据库,直接导致无所的行锁和表锁,甚至最后请求会堆积过多,从而触发很多连接错误。通过使用MQ,消息从队列推送至消费者后,消息被消费,并从队列中移除。这样可以异步处理请求,从而缓解系统的压力。基础服务层面向持久化层,主要用来作数据的存储和更新保存,面向数据结构。持久化层包括数据库(DB)。可选地,对于手机软件或者使用超文本标记语言(HyperTextMarkupLanguage,HTML)直接实现的客户端,或者是.net实现的桌面客户端,由于这些客户端是单独开发的,没有控制层,因此需要增加一层“应用程序编程接口(ApplicationProgrammingInterface,API)网关”(以下简称网关)作为这些客户端的控制层,以便接入微服务系统。如图1所示,微服务系统还包括网关,作为系统的统一入口,外部通过统一的网关接入微服务系统,同时处理一些功能。可选地,网关处理的功能包括但不限于:授权、接口权限控制和限流。其中,网关增加了基于一种开放的协议(Oauth)的4种授权模式:授权码模式,密码模式,简化模式,客户端凭证。接口权限控制可以分为三个部分:用户认证,服务权限,用户权限。限流可以保障API服务对所有用户的可用性,也可以防止网络攻击。限流策略包括:限制总并发数(比如数据库连接池、线程池)、限制瞬时并发数、限制时间窗口内的平均速率(如Guava的RateLimiter、nginx的limit_req模块,限制每秒的平均速率);其他还有如限制远程接口调用速率、限制MQ的消费速率。另外还可以根据网络连接数、网络流量、CPU或内存负载等来限流。本实施例中,表现层、业务中台层和基础服务层分别对外暴露对应的接口。具体的,表现层对外暴露的接口为实际业务场景的接口,业务中台层对外暴露的接口为对实际业务场景进行抽象化的抽象业务场景的接口,基础服务层对外暴露的接口为多种实际业务场景或多种抽象业务场景对应的数据操作类型的接口。在一示例中,实际业务场景的接口包括手机号的接口、用户名的接口、密码的接口、变更密码的接口和变更昵称的接口等。对手机号的接口、用户名的接口和密码进行抽象化,得到注册场景的接口,对变更密码和变更昵称进行抽象化,得到变更用户信息的接口。虽然业务场景有很多,但是多种业务场景对应的数据操作类型是有限的,例如增加数据、更改数据等。在微服务系统支持多租户的应用场景中,基础服务层对外暴露的接口包括:根据租户标识查询租户的接口、根据租户标识集合查询租户集合的接口、根据租户名称模糊查询租户集合、根据条件查询租户集合、业务下拉接口等。可以理解的是,由于业务中台层对实际业务场景进行了抽象,则表现层对外暴露的接口数量大于业务中台层对外暴露的接口数量。业务中台层对外暴露的接口数量大于基础服务层对外暴露的接口数量,从而接口逐级收敛。基于各层对外暴露的接口,在微服务系统中进行服务调用时,用户通过客户端向微服务系统发送请求消息本文档来自技高网...

【技术保护点】
1.一种微服务系统,其特征在于,包括:表现层、业务中台层和基础服务层;/n所述表现层,用于通过对外暴露的接口接收用户的请求消息,并根据所述用户的请求消息调用所述业务中台层对外暴露的接口和/或所述基础服务层对外暴露的接口;/n所述业务中台层,用于对所述用户的请求消息进行业务处理,并根据业务处理结果调用所述基础服务层对外暴露的接口;/n所述基础服务层,用于访问持久化层,对所述请求消息对应的数据和/或业务处理结果对应的数据进行处理。/n

【技术特征摘要】
1.一种微服务系统,其特征在于,包括:表现层、业务中台层和基础服务层;
所述表现层,用于通过对外暴露的接口接收用户的请求消息,并根据所述用户的请求消息调用所述业务中台层对外暴露的接口和/或所述基础服务层对外暴露的接口;
所述业务中台层,用于对所述用户的请求消息进行业务处理,并根据业务处理结果调用所述基础服务层对外暴露的接口;
所述基础服务层,用于访问持久化层,对所述请求消息对应的数据和/或业务处理结果对应的数据进行处理。


2.根据权利要求1所述的系统,其特征在于,
所述表现层对外暴露的接口为实际业务场景的接口,所述业务中台层对外暴露的接口为对实际业务场景进行抽象化的抽象业务场景的接口,所述基础服务层对外暴露的接口为多种所述实际业务场景或多种抽象业务场景对应的数据操作类型的接口。


3.根据权利要求1所述的系统,其特征在于,
所述表现层、业务中台层和基础服务层之间,采用远程过程调用进行网络连接;
所述表现层、业务中台层和基础服务层之间,传输通用的传输对象,所述通用的传输对象用于传输通用的业务对象至调用的接口。


4.根据权利要求3所述的系统,其特征在于,
所述通用的传输对象为数据结构对象,并采用压缩比大于预设阈值的编码方法进行编码传输。


5.根据权利要求3所述的系统,其特征在于,还包括:对象生成工具;
所述对象生成工具,用于根据业务数据库、与所述业务数据库匹配的远端接口和对象关系映射框架,自动生成通用的业务对象。


6.根据权利要求1所述的系统,其特征在于,还包括:客户端拦截器和服务端拦截器;
所述客户端拦截器,用于对所述用户的请求消息进行解析,得到所述请求消息对应的租户标识;
所述服务端拦截器,用于拦截上层的请求消息;从所述客户端拦截器读取所述请求消息对应的租户标识;采用所述租户标识对所述请求消息进行处理。


7.根据权利要求6所述的系统,其特征在于,所述服务端拦截器包括:分别设置在所述网关与表现层之间、所述表现层与业务中台层之间,以及所述业务中台层与基础服务层之间的远程过程调用拦截器,和设置在所述基础服务层与所述持久化层之间的对象关系映射拦截器;
所述远程过程调用拦截器,用于截取上层的请求消息,对所述请求消息添加对应的租户标识,生成新的请求消息;并将所述新的请求消息发送至下层;
所述对象关系映射拦截器,用于在根据请求消息操作数据库时,对操作的数据添加所述请求消息对应的租户标识。


8.根据权利要求6所述的系统,其特征在于,
所述服务端拦截器,还用于运行系统监控报警框架,对监控的数据进行上报;
所述服务端拦截器,还用于运行分布式跟踪系统,对所述微服务系统中的调用链和服务性能进行监控。


9.根据权利要求1-8任一项所述的系统,其特征在于,还包括:与所述持久层连接的中间件;
所述基础服务层,还用于配置基础服务层中各模块对数据表群的访问权限;
所述中间件,用于将所述基础服务层中模块的访问请求发送...

【专利技术属性】
技术研发人员:陈强松
申请(专利权)人:苏州达家迎信息技术有限公司
类型:发明
国别省市:江苏;32

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

1