查看原文
其他

​案例丨​阳光保险中间件的最佳实践

金融电子化 金融电子化 2021-08-11


阳光财产保险股份有限公司

信息技术部总经理  石运福


中间件现状分析

随着云计算、物联网以及大数据技术的发展,传统中间件市场也迎来了新的机遇。近年来全球中间件市场总体发展向好,市场规模稳步提升。目前,中间件市场发展逐步形成如下三类:一是以Oracle和IBM等老牌企业提供的Weblogic和Websphere 等收费的主流商用产品;二是以Tomcat和JBoss为代表的开源免费产品;三是随着国内中间件厂商技术的提升,也涌现出一大批国产厂商赶超者,如宝兰德、东方通、金蝶等提供的国产化中间件产品。各产品的优缺点分析如下。


1. 优点分析。主流商用产品:主流商用产品经过多年的积累和发展,具有良好的品牌影响力,市场占有率高,具备深厚的技术积累。产品功能强大,扩展性强可用性高。开源免费产品:免费开源,社区资源活跃,系统轻量级,消耗资源较少。国产中间件:基本需求都能满足,且功能并不复杂,能提供代码级的服务。国产软件研发在本地,客户支持及服务到位,拥有自主知识产权还能兼顾安全性的考虑。


2. 缺点分析。主流商用产品:普遍存在价格高,服务周期长。无法提供代码级定制化服务。相对开源产品来说,服务较重,系统资源消耗大,对于中小型系统场合不是很合适。开源免费产品:缺少维护和支持,开源中间件的支持服务一般依赖于第三方。系统功能有限,无法满足部分高级需求。国产中间件:大规模商业化案例有限,稳定性还需积累更多实例验证。对于深层次功能的修改以及应用迁移技术方面积累尚不完全成熟。在硬件以及应用的适配上仍有较大优化空间。


阳光保险中间件项目

1. 项目介绍。随着阳光保险互联网化改造的推进,目前已完成业务系统的微服务拆分和容器化改造,需要实现快速的构建和微服务部署,对中间件的选择策略也发生调整,需要综合考虑产品的轻量级、成本以及维护服务等内容。


基于上述背景,阳光保险在2020年3月正式批准立项中间件项目,通过本项目的实施选择适合阳光保险系统架构的中间件产品,同时降低中间件成本,进一步推进互联网化改造进程。


2. 项目实施方案。主要从如下三方面来介绍。

(1)场景描述。目前我司大部分的应用系统,如核心交易系统、办公系统、人力资源管理系统等均使用Java语言开发,大部分应用系统均需运行在中间件上,要求直接替换中间件产品后,应用系统能够平稳运行。对中间件产品的基本要求是必须功能完善、产品运行稳定。需具备以下功能:


需遵循J2EE规范,包括Servlet3.1、JSP 2.3、EJB 3.2、JDBC 4.1、JTA 1.2 等标 准。需支持多操作系统及CPU架构,包括X86芯片,以及国产的龙芯、麒麟、鲲鹏等,操作系统需支持Redhat、CentOS、Windows、中标麒麟Linux、银河麒麟、普华等。需支持多JDK版本,包括Oracle Hotspot JDK,以及Zulu JDK和OpenJDK 等。具备升级和回滚补丁功能。能够快速构建分布式集群。支持IPv6、HTTP/2、HTTPS协议、支持SpringBoot等微服务架构。支持JDBC多数据源,支持JDBC连接池连接数自动调整,JDBC资源池容错。可长时间运行稳定性。支持国密算法,密文传输口令等敏感信息。需具备丰富的文档包括安装手册、用户手册、开发手册等。


(2)实施步骤。由于我司各类系统在建设时所处历史时期和背景不同,所采用的技术框架也不尽相同,为确保中间能够适配各类系统,需要针对不同框架、不同业务逻辑的系统进行测试工作。


测试系统选型:为确保中间件产品未来的高适配性,在组织测试之前需要对各类型应用系统的技术框架、主要业务逻辑、部署方式、网络环境等进行调研。确定系统测试范围,明确测试标准和要求。


中间件产品选型:针对不同中间件产品组织测试工作,主要包括功能性测试、效率测试、可靠性测试、易用性测试和维护性测试。在中间件产品选择上,不宜采用一概而论一刀切的做法,需要根据不同业务系统的需求选择合适其自身特点的产品。


试点运行:对于采用集群部署的业务系统,在部分节点进行中间件产品替换,生产试运行,经受业务高峰期的考验。


生产切换:根据测试和试运行情况,为不同的系统选择适合的中间件产品,最终完成生产环境中间件的替换。


(3)测试内容。功能性测试:结合使用需求和中间件产品的使用手册,对产品的功能进行分类。指标主要包括安装部署、卸载及再安装、启动关闭、数据库连接服务、配置部署、管理工具、应用服务器集群、身份登录和日志审计功能。效率测试 :从响应时间特性和资源占用特性上进行分类细化测试指标项。指标主要包括HTTP协议级和集群性能测试。可靠性测试:从容错性、易恢复性、成熟性等三方面对测试项进行分类。指标主要包括稳定运行测试、网络故障恢复和易恢复性。易用性测试:从易理解、易学性、易操作性等三个方面对测试项进行分类。指标主要包括产品手册、应用示例、安装和卸载、集成环境管理和图形化监控。维护性测试:从易监控性、易维护性等几个方面对测试项进行分类,指标主要包括运行时维护性、JVM堆栈大小配置、垃圾回收配置和运行信息监控能力。


3. 项目进展情况。截止目前,阳光保险已完成集团一个系统、产险三个系统、寿险一个系统,共五个不同框架、不同业务逻辑的系统对四个中间件产品的POC工作,从系统功能、稳定性,可用性,性能等方面全面展开测评工作,在试点过程中暴露的各类问题均已解决并形成知识库,为后续推广积累丰富的经验。


(1)性能测试情况。在POC过程中能对各中间件产品进行了充分的性能测试,以下数据为国内某中间件品牌和目前在用某主流商业产品的平均响应时间随并发数的变化曲线图(见下图)。

图 中间件产品平均响应时间随并发数的变化曲线


在同一台服务器上,使用相同配置的国内品牌和目前在用商业产品部署相同的应用,从响应时间来看,国内品牌的响应时间基本是在用商业产品的2倍左右。


(2)功能测试情况。为了确保中间件产品的适配性,本次在功能性测试上,针对不同技术框架的产品进行了充分的测试,同时对某些中间件依赖性较强的产品也进行了充分的测试。在测试过中暴露出很多问题,比如:系统编码的问题,多数据源支持的问题,不同JDK的问题,系统配置问题、日志文件的问题等等。在本次试点过程中,各问题都被逐一解决,最终实现了各业务系统的稳定运行。


(3)稳定性测试情况。在系统稳定性上,国内中间件产品相对主流商业产品也表现不错,前期在业务高峰期的时候虽然出现过一些问题,比如日志锁,内存不稳定等。经过后续的调优设置,均能满足业务系统稳定运行要求。连续运行1个多月均未出现任何异常。


中间件的实践方案

1. 通常替换思路。结合保险行业自身业务特点,需要对中间件从功能、性能、安全以及可扩展性等维度进行逐步验证。通常做法是分阶段进行替换。既贴合基础软件的安全可靠要求,也保障保险业务的平滑运行和迁移过渡。具体阶段如下:


(1)办公类中间件替换。替代前期,主要聚焦在中间件产品的易用性、功能性验证。试点系统的选择上显得尤为重要,应秉持“典型系统”“缩小范围”“成效易见”的原则,采取办公类系统逐个、梯度替换的方式。


(2)非核心业务中间件替换。改造中期,主要聚焦中间件的稳定性、安全性、扩展性验证,建议以非核心类业务系统为迁移对象,并以试运行方式进行稳步替代。


(3)核心类业务集群部署。改造后期,主要聚焦在国产中间件的高并发处理、分布式服务能力、高可用性,建议以核心类业务系统为迁移对象,并以试运行、逐步增加节点的方式进行。


(4)国产中间件云化、容器化改造。伴随着保险行业云计算和微服务架构的发展和应用,云化中间件也将成为行业发展趋势和着力点。在中间件的迁移和改造过程中,最终需综合考虑中间件产品的技术前瞻性,以微服务架构的应用和业务为迁移对象,验证中间件的云平台和容器架构适应性。


2. 阳光保险中间件替换思路。由于目前阳光保险已完成业务系统的微服务拆分和容器化改造,并且已实现核心系统的灰度发布。系统在可用性和可靠性上大大提升,使得阳光保险在中间件的替换进程上有更多的选择和尝试的空间。即使在单节点上出现故障也不会影响系统的整体运行,在替换进程中,可以采取如下策略:


(1)部分节点的替换。替代前期,可以对中间件产品进行全面验证,包括中间件产品的易用性、功能性、稳定性、安全性。在系统选择上,可以选择不同业务逻辑、技术框架和业务压力的系统进行部分节点的试点替换工作。在微服务架构以及灰度发布的背景下,前期可尝试在核心业务系统进行试点替换工作,充分暴露中间件问题,快速积累经验,加快替换进程。


(2)大量节点的替换。替换中期,主要聚焦在中间件的高并发处理、分布式服务能力、高可用性。逐步增加替换节点数量,进行高并发验证,关注迁移前后性能数据,确保各系统的平稳运行。


(3)中间件云化、容器化改造。替换后期,结合阳光云平台,验证中间件的云平台和容器架构适应性,从中间件的轻量部署、弹性伸缩、多数据源管理等维度进行综合验证。最终实现容器化部署。


3. 中间件替换的困难。当前保险公司业务系统种类繁多,不同时期建设的系统在技术框架和部署方式上均不同,业务系统技术复杂度高,中间件适配难度高。对于某些成熟产品,对中间件的依赖较高,在替换中间件后出现的问题也较多。下面就几个典型问题进行分析说明:


(1)历史代码问题。对于某些历史悠久的系统,经历了系统框架的更新换代,在系统中会遗留部分老框架的jar包,导致在适配新中间件时出现个性的问题。另外,在系统中也会存在对中间件进行硬编码配置的地方。此类问题都需要程序去做一些调整,且无法一次性全部排查干净,需要在运行过程中慢慢暴露和解决。


(2)系统编码问题。绝大部分中间件产品都出现了编码问题,不同中间件表现的现象与原因都不一样,同样的系统,在不同中间件上出现的乱码现象也不一样。主要表现为启动报错、页面显示乱码、页面控件乱码等等。处理方法主要为,修改系统代码、修改系统配置文件、修改中间件配置文件等等。此类问题较为分散,需要在出现问题时针对性处理。


(3)产品对中间件依赖较强。目前存在某些产品对中间件的依赖较强的情况,如规则引擎产品。相同功能的规则引擎应用,针对不同版本的中间件以及不同厂商的中间件,提供了不同的应用包。每个应用包都与对应的中间件做了很紧密的绑定。导致规则引擎应用在进行中间件替换时遇到一系列问题。如启服务报错、控制台无法登录等。需要厂商对中间件产品做针对性的调整和配置。对于此类对中间件依赖性较强的产品,在适配过程中往往困难较大,个性调整较多。


(4)性能问题。在进行生产环境试点过程中,面对生产高峰期的压力,部分中间件产品出现了性能问题,比如,请求响应时间开始变长。在本次生产试点过程中,某中间件产品就曾出现过两次请求响应时间变慢的现象,第一次出现在生产经历第一个业务高峰期,第二次出现在运行5个工作日之后。两次的解决方案也不一样,第一次是优化中间件产品的错误日志锁,第二次是调整了JVM参数。由此可见,性能问题需要我们时刻关注,且是一个持续优化的过程。


展望与总结

阳光保险率先在保险行业启动中间件替换试点,目前已完成在不同框架、不同业务逻辑系统上对多家中间件产品的POC工作,率先完成核心业务系统中间件试点工作,完成中间件产品的选型和项目的招标采购工作。在POC过程积累了丰富的实施经验,同时也充分暴露了各类问题,各中间件厂商也在此过程中获得了宝贵的优化建议,从而进一步完善优化中间件产品。


随着近年来云计算和微服务架构的发展与应用,中间件的容器化部署也成为行业趋势和着力点。伴随着阳光保险互联网化进程的推进,依托微服务拆分和容器化改造的成果,使得阳光保险在中间件的替换过程中有了更多的选择和可能性。在对中间件进行全面的测试过程中,某些国产中间件产品的表现也是可圈可点,国产中间件产品已越来越具竞争力,相信未来国产中间件产品能够发展得更快更好。





往期精选:

(点击查看精彩内容)


● 案例丨办公环境全流程数据安全管理方案——“零信任”“微内核”客户端解决方案

● 案例丨信息科技外包管理探索实践

● 案例丨图数据库技术在信用卡反套现领域的应用

● 案例丨金融科技发展下的大数据基础设施超可用方案创新与实践

● 案例丨科技让金融更普惠——阳光金融





关于仿冒我刊收费的声明





我刊自创刊以来,从未向投稿人收取过任何费用。任何以刊发文章为名向投稿人收取费用的行为,均属于对投稿人的欺诈行为。


我刊官网地址为 www.fcmag.com.cn。

我刊投稿邮箱为 fcmag@fcmag.com.cn。


对于仿冒我刊网站、网页的违法行为,我社将追究其侵权责任,以维护我社和投稿人的合法权益。仿冒网站、网页举报电话:010-88232443




《金融电子化》新媒体部:主任 / 邝源  编辑 / 潘婧 傅甜甜

    您可能也对以下帖子感兴趣

    文章有问题?点此查看未经处理的缓存