微服务架构在不动产登记网上预约系统中的应用*

2021-02-25 06:27刘从军
计算机与数字工程 2021年1期
关键词:预审调用网关

高 健 刘从军

(1.江苏科技大学计算机学院 镇江 212003)(2.江苏科大汇峰科技有限公司 镇江 212003)

1 引言

统一的不动产登记制度是市场经济的一项基础性制度[1],和每个人的切身利益息息相关。随着信息化技术的高速发展,国务院提出关于推进“互联网+政务服务”建设的理念。而不动产登记业务是政府政务服务当中至关重要的一环。为了缓解不动产登记窗口的压力,不动产登记网上预约系统应运而生。现有的不动产登记网上预约系统都是采用传统的单体应用架构[2],将所有功能,逻辑整合在一起,增加了代码的复杂性,降低了代码编写的效率,也增加了维护的难度。采用传统的单体应用架构设计的不动产登记网上预约系统,不利于应对日益增长的业务量,同时也不利于应对国家相关政策的调整。

采用微服务架构[3]将复杂的系统应用分解为不同的微服务,解决了复杂性问题,在功能相同的情况下,应用被拆分为多个松耦合的服务。不同服务之间通过某种协议(通常是REST,RPC 等)进行互相通信协作。微服务架构模式提供了模块化解决方案,用以解决单体式编码很难实现的内容,从而使单个服务很容易开发、理解和维护。其次,该架构允许使用不同的开发团队开发每项服务。不同的开发团队依据服务的特性,选择合适的开发技术,提供API 服务。第三,每个微服务可以独立部署。开发者不再需要考虑其他服务部署对本服务的影响,只需考虑部署自己的服务。这种改变可以加快部署速度。最后,微服务架构模式使得每个服务独立扩展[4]。

Spring cloud 是基于微服务架构的一款微服务框架。Spring cloud 是一系列框架的有序集合。Spring cloud 并非一款新技术,它只是在spring boot的基础上简化了分布式系统基础设施的开发,屏蔽掉了一些复杂的配置。例如服务发现注册、配置中心、消息总线、负载均衡[5]、断路器、数据监控等都可以做到一键启动和部署。Spring cloud 给开发者留出了一套简单易懂、易部署和易维护的分布式系统开发工具包。

采用微服务架构对不动产登记网上预约系统进行设计,使用spring cloud 框架进行开发,可以很好地解决传统单体架构带来的影响。

2 微服务架构的定义及特点

微服务架构是一种将一个复杂的,单一的应用程序开发为一小组的服务方法,不同的服务运行在自己的进程中,进程之间通过轻量级机制(通常是HTTP资源的API)进行通信[6]。这些不同的服务根据自身业务的功能划分进行构建,并且可以使用自动化部署机制自动部署。不同的服务,可以使用不同的编程语言进行编写,使用不同的数据存储技术。它的主要特点是组件化、松耦合[7]、自治、去中心化,体现在以下几个方面。

1)一组小的服务

专注服务的粒度,服务粒度要尽量小,每个服务尽量负责一项业务,把焦点放在一件事情上。

2)独立部署运行和扩展

每个服务都可以独立部署,并在单个进程中运行。这样每个服务的代码可以根据实际情况,灵活的响应和变化。

3)独立开发和演化

技术选择非常灵活,不受传统系统技术的限制。根据不同业务的不同类型,选择更加合适的技术进行独立的演化。在服务和服务之间集成了与语言无关的API。和单体架构相比,微服务架构是一种新兴的一种架构模式,它更加面向业务的创新。

4)独立团队和自治

该团队负责服务的整个生命周期,在独立环境中工作,并自行决策,无需统一的指挥中心。团队和团队通过松散的社区部落联系在一起。

3 系统需求分析

3.1 业务流程分析

不动产登记网上预约系统就是能够使业务申请人不需要到不动产登记大厅进行业务的办理,可以直接进行网上的申请,自行填写相关业务信息,并根据系统整理后所生成的收件清单上传相应的电子图像资料,确认所有信息填写无误后,进行业务的申请提交,此时网上预约系统将所有相关信息共享到不动产登记中心、房产交易中心和地税部门,各个部门根据自己的职能进行相关信息有效性的联合审批。

申请人在提交了申请之后,如若想要查看自己申请的业务是否通过,可以随时登录不动产登记网上预约系统查询相关业务审核的状态,同时也可通过其他方式查询业务和进度信息,比如关注微信公众号等。

业务申请人在网上申请的业务如果在三家单位都一致审合通过的话,网上预约系统能够自动通过短信或者微信这些方式,给申请人发送消息。

图1 业务流程图

3.2 系统功能模块分析

网上预约系统包括业务网上预约申请、网上预审、税款试算和消息通知等功能,为申请人提供网上预约申请服务,中介或代理机构在获得管理部门认证和授权后,可登录网上预约系统,填写业务申请关键信息,上传相关材料的电子档案,提交主管部门进行网上预审,系统通过短信或微信平台告知申请人预审结果。审核部门通过网上预审功能,缩短了群众窗口滞留时间,加快了业务审核的速度,提高了政府的办事效率。

图2 网上预约功能模块图

4 基于微服务架构的系统设计

4.1 微服务的拆分

根据不动产登记流程及功能模块划分,依据微服务拆分原则,将系统拆分为以下几个微服务。

1)预约申请

业务申请人根据网上预约操作流程填写相关信息,系统会自动根据申请人申请业务的不同类型进行区分,从而生成不同的业务材料的清单,然后申请人上传相应的电子材料清单,再确认相关填写是否有误,确认无误后提交申请,等待各个部门的审核。

2)网上预审

根据各部门的不同职能,不动产登记部门,房地产交易部门和税务部门根据自己的职责划分,审核业务信息的不同内容。系统自动收集并整合各部门的预审结果,并及时通知申请人。

3)消息通知

系统为业务申请人提供了不同的消息通知方法,满足申请人及时查询业务相关的进度信息,以方便申请人及时了解业务预审结果。

4)业务对接

包括不动产数据接口功能模块,获得商品房合同,存量房合同以及交易限制等信息;房产数据接口功能模块,进行房屋价格评估以及税费试算等;税务数据接口功能模块,获得权利限制等信息。

5)系统管理

提供一些管理服务,用于不动产登记网上预约系统的日常维护以及相关的管理需求,从而能够保证系统安全而稳定的运行。

4.2 系统微服务架构模式的选择:

根据微服务的特性以及系统微服务的拆分,微服务架构模式采用代理微服务设计模式[8]和链式微服务设计模式[8]相结合的方式。

图3 系统微服务架构模式图

在代理微服务设计模式下,客户端并不聚合数据,但会根据业务需求的差别调用不同的微服务,比如系统管理微服务,业务对接微服务和消息通知微服务。代理可以仅仅委派请求,也可以进行数据转换工作。

链式微服务设计模式在接收到请求后会产生一个经过合并的响应,在这种情况下,业务对接服务接收到请求后会与预约申请服务进行通信,因为系统在调用预约申请微服务时,必须通过业务对接微服务获得来自房产等部门的相关信息。类似地,业务对接服务会同网上预审服务进行通信。所有服务都使用同步消息传递。

5 基于Spring cloud 微服务框架的系统的设计

由于spring cloud 具有约定优于配置[9];适合各种环境;隐藏了组件的复杂性性轻量级的组件:Eurake、Ribbon、Zuul 等;组件丰富;灵活的特点,所以选择spring cloud微服务框架用于构建系统。

5.1 Spring cloud体系架构图

各个组件的配置使用运行流程如下。

1)外部的请求通过 API 网关(Zuul)[10]来访问内部的微服务。

2)API 网关在接收到外部的请求后,从注册中心(Eureka)获取相应的服务。

图4 spring cloud系统架构图

3)通过Ribbon 进行均衡负载后,调用后端具体的微服务实例。

4)微服务之间通过Feign(声明式、模板化的Http客户端[11])进行通信处理业务。

5)Hystrix负责处理服务超时熔断。

6)Turbine 监控服务间的调用和熔断相关指标。

5.2 系统的设计

根据系统微服务架构模式的选择以及spring cloud架构图,设计如下系统结构图。

图5 基于spring cloud的系统设计图

首先,外部的请求通过API 网关(Zuul)来访问内部服务,比如消息通知,系统管理等。其次,服务网关收到外部的请求后,从注册中心(Eureka)获取已注册的可用的服务。接着,由Ribbon 通过相应的负载均衡算法进行均衡负载后,分发到后端具体的微服务实例。

微服务之间通过Feign 进行通信处理业务,不同微服务之间通过采用轻量级的通信机制互相沟通(通常是基于HTTP的RESTful API)。

5.2.1 服务治理

预约申请,网上预审,消息通知,业务对接,系统管理这五个微服务在启动时,会周期性往服务发现组件(Eureka Server)发送心跳信息[12],将自己的网络地址,名称,和端口号等注册到服务发现[13]组件Eureka Server当中,服务发现组件会保存这些信息。服务消费者即外部的请求会通过查询服务发现组件里保存的网络地址信息来调用不同服务提供者的接口,即调用不同微服务实例[14]。微服务网络地址发生变更(例如实例增减或者IP 端口发生变化等)时,会重新注册到服务发现组件。使用这种方式,服务消费者就无须人工修改提供者的网络地址。

图6 微服务的注册发现图

5.2.2 负载均衡

Robbin 是spring cloud 使用的一种负载均衡器。同一个微服务功能可能会开启很多个,此时需要一种微服务的调用规则,这样才能准确地调用响应的微服务。所以,只要为Robbin 配置了提供服务者的同一类微服务的地址列表后,我们的Robbin就可以基于某种负载均衡的算法自动的帮助服务事物消费者去请求服务。默认情况下,Robbin为我们提供了循环,随机负载均衡算法,我们还可以自定义负载均衡算法。当请求调用某个微服务时,比如业务对接微服务,通过Ribbon 发送请求,然后Ribbon 进行负载均衡算法将请求转发到某个微服务实例。在多个实例的情况下,其中某个实例出现问题,Ribbon 会转而调用其他的实例,不会影响系统的正常使用。

图7 客户端负载均衡

5.2.3 服务网关与容错保护

API 网关(zoul)将预约申请,网上预审,消息通知,业务对接,系统管理这五个微服务统一接入,隐藏了系统架构的具体实现的细节。此时API 服务网关就成了不同微服务访问的统一入口。这样客户端所有的请求都会经过API服务网关,服务网关再将服务请求路由到合适的微服务,以提供具体的微服务处理。

图8 服务网关与容错处理

Hystrix 熔断器是一种容错保护机制,熔断器Hystix 是一种容错管理工具,通过隔离和控制服务,防止整个系统被拖垮,为延迟和故障提供更大的容错能力。复杂的分布式体系结构[15]通常具有很多依赖性,当应用程序与其他服务高度耦合时,它非常危险并且容易出现故障。这种故障很容易伤害服务的调用者,最终导致连续的错误,并且应用程序本身也有被拖垮的风险。当某一个微服务发生故障时,它会向调用方返回一个服务降级处理(fallback),而不是长时间的等待或者抛出调用方无法处理的异常,这样就保证了服务调用方的线程不会被长时间不必要的占用,从而避免了故障在分布式系统中的蔓延乃至崩溃。

5.3 基于spring cloud 微服务不动产登记网上预约系统的优势

1)降低了系统的复杂性,将系统分为预约申请;网上预审;消息通知;业务对接;系统管理五个独立的模块,模块的边界清晰,由于不同模块交于不同的团队开发,提高了代码的质量。

2)提高了部署频率,若是修改了某一模块的代码,只需将该模块重新部署,不需要对整个系统进行部署。

3)提高了系统可靠性,一个模块的代码出现bug,不会影响整个系统的使用,其他模块可以正常使用。不动产登记的业务量是非常庞大的,若是单体架构,一个小bug 可能会影响了整个系统的使用,给政府的工作带来不便以及人民带来不必要的麻烦。

4)扩展能力得到了提升,系统可以根据业务模块的需要进行伸缩。不动产登记业务往往随着国家政策的调整发生变化,这就需要良好的扩展能力。

5)有利于技术的创新,开发不同模块的开发人员,在开发时可以选择新兴的技术,不需要都使用相同的开发语言。

6 结语

不动产登记是国家一项重要的政策,用于保障人民的利益,不动产登记网上预约系统的出现,是从线下办理向线上办理服务的转变,提高了政府的办事效率,提高市民对政府工作的满意度。传统的不动产登记网上预约系统采用传统单体架构不利于系统的扩展及维护,以及应对日益增长的业务量和国家政策的变化。采用微服务架构理论,结合微服务架构的设计思想,结合spring cloud 框架设计的不动产登记网上预约系统可以很好地解决这些问题。

猜你喜欢
预审调用网关
中国侦查预审制度之合理建构
智能燃气表物联网运行体系网关技术研究
基于FPGA的工业TSN融合网关设计
大规模低轨卫星网络移动性管理方案
一种主从冗余网关的故障模式分析与处理
MDOS系统中气象报表的预审分析
试论预审阶段收集证据的特点和应注意的问题
基于Android Broadcast的短信安全监听系统的设计和实现
利用RFC技术实现SAP系统接口通信
C++语言中函数参数传递方式剖析