互联网车险平台批量导入功能设计和实现

2020-05-11 11:43王楠张志鹏王柳青张之江
微型电脑应用 2020年1期

王楠 张志鹏 王柳青 张之江

摘 要: 针对互联网车险“直销+网销”的过渡性发展模式,需要将线上线下保单统一管理。根据运营管理平台批量导入的需求模式,设计实现方案,完成了系统功能的开发和测试。整个功能涉及到运营管理平台与业务接口平台的对接、业务接口平台与保险公司接口的对接。系统的软件框架采用了SSM+Dubbo+Zookeeper,平台与平台间采用httpclent进行交互,且整个功能通过了所有的测试用例,并已上线使用。

关键词: 互联网车险; Dubbo; 分布式系统

中图分类号: TP311      文献标志码: A

Desgn and mplementaton of Batch mport Functon for the

nternet Car nsurance Platform

WANG Nan, ZHANG Zhpeng, WANG Luqng, ZHANG Zhjang

(School of Communcaton and nformaton Engneerng, Shangha Unversty, Shangha 200444)

Abstract: n vew of the transtonal development model of the nternet auto nsurance “drect sales + onlne sales”, t s necessary to manage onlne and offlne nsurance polces. Accordng to the demand mode of batch mport of the operaton management platform, the desgn mplementaton plan s completed, and the development and testng of the system functons are also completed. The whole functon nvolves the dockng of the operaton management platform and the servce nterface platform, and the communcaton of the servce nterface platform and the nsurance company. The software framework of the system adopts SSM+Dubbo+Zookeeper. The communcaton among platforms uses httpclent to nteract, and the whole functon passes all the test cases and s used onlne.

Key words: Car nsurance by the nternet; Dubbo; Dstrbuted system

0 引言

隨着互联网时代的高速发展,车险行业也受到了很大的影响。互联网金融下的保险行业是指保险公司或新型第三方保险以互联网和电子商务技术为工具来支持保险销售的经营管理活动的营销模式,有别于传统的保险代理人的营销模式[1]。而互联网运营管理平台(即OA系统),主要是通过信息技术使企业人员之间方便快捷地进行信息共享, 高效地协同工作, 最大限度地提高办公效率, 提高办公质量,实现办公自动化[2]。OA系统目前主要应用的技术有Lotus软件、MVC架构、B/S模式[3],且结合数据库使得OA系统管理数据更加智能化。随着互联网车险平台订单量的增加,且该行业还处于“直销+网销”的过渡时期[4],因此设计了批量导入线下保单进行统一管理的功能。该功能在运营管理平台实现到对导入的订单数据的解析缓存、佣金生成、提现记录生成,业务接口平台实现导入保单保存、订单生成、与保险公司进行数据同步。平台内部都使用基于Dubbo+Zookeeper的SOA架构对服务进行分布式部署,相比垂直应用架构,分布式服务能使前端更快响应、能更独立方便地管理服务。平台与平台之间通过调用HttpClent的第三方jar包,编写http客户端实现数据交互。

1 批量导入功能设计

批量导入模块涉及到了运营管理平台和业务接口平台。由于在生成金豆和提现模块,两个平台之间有大量的接口数据调用,若是直接采用传统的单一应用架构或者垂直应用架构,大量请求会为服务器带来高额负载。而分布式架构面对服务增多、请求量大的场景,能够很好的通过集群管理服务,并起到负载均衡的作用。因此本系统采用Dubbo+Zookeeper的分布式服务架构,来解决平台之间服务管理和请求高并发的问题。

1.1 系统架构设计

从架构来上说,整个系统分为了业务接入层、业务服务层、基础服务层、持久化存储层如图1所示。

在业务接入层中,采用了Sprng+SprngMVC进行搭建。Sprng是一个轻量级的分层的应用程序开发框架,它的核心概念是oC(控制反转)和AOP(面向切面编程)[5]。Sprng包含了七个部分,SprngMVC为其中之一,它是基于MVC模式作用于前后端交互的模块。

在业务服务层中,采用了Dubbo+Zookeeper的分布式RPC框架进行服务部署。Dubbo是基于Java的HttpClent请求、高性能的开源RPC远程服务调用方案[6]。Zookeeper是高可用的分布式管理与协调服务框架,在分布式服务系统中主要用来进行服务地址管理[7]。

在基础服务层中,封装了一些公共服务方法,比如缓存服务、日志服务、还有Http调用服务等。HttpClent是一个可以用来提供高效的、最新的、功能丰富的支持 HTTP 协议的客户端编程工具包,并且它支持 HTTP 协议最新的版本和建议[8]。

在持久化存储层中,采用MySQL[9]和Mybats[10]的技术结构。Mybats是一个基于Java的持久化框架。它封装了JDBC配置数据库的参数和代码,采用XML配置或者注解来映射java类与数据库表对象。

1.2 批量导入模块设计

正常线上业务包含了投保生成保单、支付生成订单、业务员获得佣金、提现等流程。因此批量导入也对应设计了订单导入、订单同步、订单查询、订单提现的流程。

订单导入用于导入Excel格式的保单数据并作数据校验,每一次导入会调用随机数生成函数randomUUD()与当前时间拼接为字符串形式,为该批数据生成一个批次号。此外业务接口平台还会通过调用REST AP在运营管理平台用Dubbo部署的注册账号服务进行注册。导入时若是录入了银行卡信息,也会为账号绑定新的银行卡号,且提现时以录入的银行卡为主提现。

订单同步可通过批次号查询到保单数据,并编写http客户端以POST方法将保单作为请求体数据发送到保险公司进行数据校验,得到返回结果。RequestBody与ResponseBody均采用json格式,返回的数据为保险公司的保单数据。系统将平台中的保单与保险公司的保单进行校验,不一致的数据作为log保存在数据库中,并返回给前端的错误提示。用户可点击查看错误信息按钮,查看数据的具体错误,并进行修改。其次订单同步还可在平台中生成订单和用户金豆。

订单查询中除了可查询数据外,还包含导出查询结果和导出失败结果两部分。导出采用了apache的po工具包,通过组装单元格数据生成HSSFSheet对象的表格,以/O流的形式输出下载。

订单提现一部分是需要在持久化层,对每一批次进行保费和佣金的统计。这部分需要在Mybats的xml配置文件中,创建结果集并编写sql语句来实现。另一部分则是根据账号的银行卡信息和订单佣金,生成一笔提现记录。

其模塊结构如图2所示。

1.3 批量导入数据库设计

由于批量导入是在两个平台中一起实现的,所以在运营管理平台和业务接口平台都要设计数据表,如图3所示。

在业务接口平台中要处理导入数据并生成订单,因此设计了导入表POLCY_NPUT_TASK和订单表BZ_ORDER_MAN;

在运营管理平台中需要注册用户、绑定银行卡,生成金豆和提现记录。因此主要涉及到有账户表Account、银行卡表MyBank、钱包表Wallet、提现表Wthdraw。

POLCY_NPUT_TASK主要用于保存用户导入的数据,其中REGSTER_MOBLE可为手机号或者身份证号。自动注册账号时,以REGSTER_MOBLE的数据存入Account表中的lognCode。NPUT_STATUS则是为了记录导入数据在不同操作阶段的不同状态。ERR_LOG则是记录数据失败时具体的错误信息。而佣金金额、车牌号、车架号、起保日期、代理点信息会跟保险公司进行数据核对。

BZ_ORDER_MAN保存了订单的信息,包含了订单号,出单用户,订单状态、保费等。Account保存用户的个人信息。Wallet保存用户的佣金信息,这里主要处理个人佣金和总佣金。MyBank保存用户的银行卡信息,一位用户可绑定多张银行卡,当导入时不录入银行卡时,已数据库查出的第一张银行卡提现。Wthdraw则根据银行卡信息、用户信息、金额保存提现记录。

2 批量导入功能实现

由于系统还包含了其他的业务需求,从减少代码重复率和提高运行效率的角度考虑,在批量导入功能的范围内,将运营管理平台分为了manage、account、wallet、wthdraw几个模块,而业务接口平台由busness模块处理主要的业务逻辑。具体的功能流程如图4所示。

2.1 运营管理平台实现

在运营管理平台中,manage主要负责前后端交互,这里做了前后分离,因此manage采用了Sprng+SprngMVC来负责后端的数据转发。而分布式服务的部署也着重在运营管理平台中,account主要负责用户管理,wallet主要负责用户佣金管理,wthdraw主要负责佣金提现打款管理,这些都是常用且会收到大量请求的服务,所以通过Dubbo+Zookeeper对它们进行解耦部署管理。首先下载并安装ZooKeeper,再通过Sprng与Dubbo集成配置xml文件的形式暴露服务,配置文件及解释如图5所示。

系统中采用了单主机多服务的部署形式,在同一台主机上不同的服务部署至不同的端口。

2.2 业务接口平台实现

在业务接口平台中主要是存储数据并与保险公司进行交互,数据库部分采用Mybats框架处理。而调用保险公司以及调用运营管理平台服务都采用HttpClent编写Http客户端调用的形式。平台里接口调用十分频繁,所以将HttpClent的部分封装成公共类,把url写入以propertes为后缀的配置文件中。在不同的功能里,通过同样的HttpClent读取不同的配置文件来实现接口调用,这样增加了灵活性,同时也减少了代码重复率。HttpClent中通过doPost方法调用接口的代码,如图6所示。

3 系统测试

在系统测试环节,我根据批量导入的需求设计了测试用例,执行测试用例并获得了测试结果。其中测试用例如表1,导入模板如表2,导入结果如图7所示。

据图7和表2所示,每条数据的导入时间在0.1 s-0.2 s,处理时间约为0.02 s,且1 000条以下的数据导入和处理均能全部成功。测试的结果符合性能需求,且系统流畅,认为测试通过。

4 总结

本文根据互联网车险的业务现状,为方便线上线下业务统一管理,提出批量导入功能的需求。并根据需求提出了功能的解决方案,进行了功能设计开发和实现。批量导入采用SSM框架实现系统内部业务逻辑、服务层与持久化层间的交互,运用HttpClent通过Http协议达到接口交互的目的,采用Dubbo+Zookeeper进行分布式服务部署调用,实现服务独立部署和管理便利化。目前批量导入模块已经完成测试并上线运行,后期针对其他的需求,还会继续添加其他功能,并完善批量导入模块。

参考文献

[1] 陈蔚. 论互联网保险的现状与趋势[J]. 中国经贸, 2014(11):94-95.

[2] 郝学柱,董伟,周爽.企业OA办公自动化系统的应用与发展趋势[J].产业与科技论坛,2017,16(2):84-85.

[3] 王海青.办公自动化系统在企业应用中的发展方向[J].自动化与仪器仪表,2018(10):158-161.

[4] 肖云,周辉.新形势下车险营销模式探讨[J].合作经济与科技,2019(1):117-119.

[5] 吕毅, 葛玮, 郝克刚.Sprng轻量级J2EE开发框架的研究[J]. 计算机技术与发展, 2006, 16(12):208-211.

[6] 刘先纺. 基于Dubbo的网上订餐系统[D].广州:华南理工大学,2016.

[7] 冉勇, 曹东升, 杨婧孜. 基于DUBBO+ZOOKEEPER计量服务平台研究[J]. 计量与测试技术,2017, 44(1):41-42.

[8] 张铁头. 使用HttpClent实现基于WEB的第三方登录验证[J].电脑知识与技术,2012,8(12):2779-2780.

[9] 唐汉明.深入浅出MySQL:数据库开发、优化与管理维护[M].第2版.北京:人民邮电出版社,2014:1-25.

[10] 管才路,叶刚,耿伟,等.基于Java的Mybats生成持久层配置文件[J].电子技术与软件工程,2018(22):139.

(收稿日期: 2018.12.12)

作者简介:王楠(1996-),女,硕士,研究生,研究方向:Java后端开发。

张志鹏(1994-),男,硕士研究生,研究方向:前端开发。

王柳青(1981-),女,硕士研究生,研究方向:系统工程。

张之江(1968-),男,教授,博士生导师,研究方向:计算机视觉、数字全息、负折射成像理论、机器视觉应用技术等。文章编号:1007-757X(2020)01-0079-05