• 快捷搜索
  • 全站搜索

高可扩展的新一代核心建设

2017-06-27 17:09:16作者:阳光财产保险公司信息技术部 王卓编辑:金融咨询网
如何成功、快速地进行保险核心业务系统转型,建设新一代核心业务系统,已经成为了保险企业保持竞争力并取得先发优势的决定性因素。

保险业正处于日益复杂、多变的市场环境。支撑保险企业交易和运营的关键平台——核心业务系统,更面临着巨大的压力和挑战。当下很多保险公司的核心业务系统用了10 年以上,显现出一些问题:当初为了快速通过监管开业验收并出单而采购了某单一供应商的一揽子产品方案,使得旧核心业务系统是一个模块紧紧耦合、大而全的“万能王”,它有着复杂业务逻辑的前端页面和动一发而牵全身的后台服务,任何一次升级都可能造成全系统的不稳定甚至业务无法出单;其次,旧核心只能通过不断增加硬件资源配置的方式来获得扩展,投入与产出不成正比;旧核心和开发团队更是难以适应互联网的高速发展。
   
  如何成功、快速地进行保险核心业务系统转型,建设新一代核心业务系统,已经成为了保险企业保持竞争力并取得先发优势的决定性因素。
   
理想中的新一代

  理想中的保险新一代核心应是一个兼备高可扩展性、高稳定性和高敏捷的“优雅”系统,是一个松耦合的群体,一个故障高度隔离的架构。故障隔离的架构能够使子模块的故障不会影响到其他重要的模块功能,提高系统整体的可用性;且能够完美实现系统的可扩展性,因为只有切割才能实现隔离,切割的原则和本质就是发现个体差异和通过归类手段来寻找它们的共性,从而实现水平和垂直扩展;故障隔离的架构还能使开发团队人员和技能进行分类集中,降低新人进入项目组件开发的门槛,降低人员培养和代码相互合并的成本,从而获得高敏捷变化团队能力。

实现的可行性

  有了理想的目标,那它是否可行呢?回答是肯定的。如果把基于增加机器的无差别克隆扩展称为“X 轴扩展”;把基于服务、功能逻辑梳理和划分,按照组件和主题来区分和分割,从而实现可扩展性提升称为“Y 轴扩展”;把基于数据、客户、地理位置等视角的拆分从而获得可扩展性提升称为“Z 轴扩展”。

000000000000000001.jpg
图1 高可扩展的核心系统性能原理

  X 轴、Y 轴、Z 轴三个维度的扩展性最终就组成了一个立方体模型。它既可用于解决应用服务的扩展问题,也可以应用到数据及数据架构的扩展场景,甚至还可以用于开发团队和过程。高扩展、高稳定和高敏捷的新一代理想,是可以通过X 轴、Y 轴和Z 轴并行或迭代扩展“组合拳”而实现的。

可扩展的应用层

  可扩展的架构离不开应用架构的层面调整。国内大部分保险核心系统虽然是一个集中大而全的业务系统,但它相对于那些笨而重的大型机系统仍有一定优势:其大部分业务逻辑是在应用层而非数据库层,这就决定了应用架构的重构和扩展成为了新一代核心业务系统的重中之重。另一方面,现有的旧核心系统部署,大部分都已采用前端挂一个硬件负载均衡器,后面横向一堆相同的应用服务器的方式,配上当今虚拟化管理技术,已经可以通过灵活的增减应用服务器实例达到弹性扩展的目的。这种通过增减克隆一个应用机器的方式,正是可扩展立方体X 轴扩展模式,它在一个保险公司成立初期的很长一段时间内,能够很好地解决应用架构层面扩展性问题。

  但是,X 轴扩展也有其局限性和适用性,特别是老核心那样所有产品、所有功能模块都揉在一个大应用上,这种整个应用横向扩展就带来了高成本问题。随着公司业务规模进一步高速发展,核心系统稳定性要求也越来越高,老核心经常出现因为一个模块故障,快速扩散到整个核心,并且在定位问题和合并版本方面更是捉襟见肘。这个时候,沿着Y 轴进行扩展就成了实现新一代核心的必经之路。
   
  首先,将核心业务系统按照技术功能性横向切分为前台页面和后端服务层两个大的应用群;其次,梳理应用服务及接口基线,站在业务视角重新规划服务的粒度和流程,纵向切分和独立那些复杂的业务服务,如保费计算、抄单服务;最后,借鉴当今互联网最新的微服务技术架构,将拆分后的服务部署在微服务容器上以达到快速灵活的X 轴扩展性。未来更是规划了按照用户群进一步拆分应用服务,以实现Z 轴的扩展。通过上述三个维度的整体组合扩展,最终实现业务架构目标即提高核心系统应用层面的稳定性,有效地限制应用故障的影响范围。

可扩展的数据层

  拥有了稳定的应用服务和支持快速部署扩展的技术,核心系统就彻底稳定了吗?不是!一段糟糕痛苦的大事务逻辑最终造成数据库几个关键热点表的锁,从而核心数据库连接数瞬间暴增,短短几分钟就能让核心库整体响应缓慢;用户数据和业务数据混合在一起,特殊时段的某个模块交易数据热点爆发可以秒杀整体系统登录客户数据读取……这些都说明了只是单纯地实现应用服务的稳定和可扩展还远远不够,新一代核心还需要在数据库层借鉴可扩展模型进行XYZ 轴的进行弹性扩展。使用多个低配置的数据库来代替原先的一个超高配置单个库,多个库间通过技术手段实现水平数据克隆,并且进行读、写分离操作,建立多个数据库实例以实现X 轴上扩展;依据数据的主题和归属,将报价、投保、保单数据还有工作流、用户等公共数据进行分离到各自独立库,实现数据库Y 轴上的扩展以达到不同组件的数据间的故障隔离和解耦;根据地理位置或取模算法对热点表查询进行分库分表,实现数据层面Z 轴上扩展。数据库上的XYZ 扩展,带来稳定性和可扩展性大幅提升的同时,也带来了新的问题:数据一致性问题。以前一个库下的数据,一个大事务搞定一切的不一致,简单但低效。现在相互关联的数据经过Y 轴拆分后,打散到不同的主题库里,还要保证它们的数据一致,怎么办?新一代核心建立了一个独立的第三方对数平台,通过这种变通的非即时事务一致方法来补齐落下的功课,它简单高效又具备通用性,可以公用于各个模块间的对账,这也是当下互联网技术架构对于高并发和数据一致性所采用的方法。

缓存和异步

  除了提升核心系统的稳定性,业务架构目标还提出了性能提升和大并发流量的要求。如果把XYZ 可扩展立方体看作解决可扩展性的常规军的话,那么缓存和异步就是两支特种部队力量,“凡战者,以正合,以奇胜”,在合适的地方灵活运用它们往往会收到奇效。核心有很多相对静态的数据,应用大部分是对它们进行只读操作,如费率表、代码对照关系表等,通过引入Redis 技术来实现数据缓存,大幅降低应用对于数据库的查询压力,内存中的快速检索大大提高了系统性能。

  另外,新一代核心还面临着如何将老核心session 有状态服务转化为简单而利于扩展的无状态服务的瓶颈,也是需要通过集中状态缓存技术来得以解决。异步,是提升系统可用性、降低耦合度的另一柄利器。复杂庞大的事务和性能极差的服务,都可以通过转换思路使用异步方式来代替同步,以获得高性能的响应。异步技术本身难度不大,它真正面临的是实施之后所带来的管理成本和数据问题,需要打造独立的异步任务调度平台和对账平台来解决。
   
  经过上述重构后的新一代核心架构已经具备高可扩展能力,为未来互联网大爆炸式的发展提供了坚实的基础和准备。XYZ 式迭代扩展方法也可以进一步推广和应用到其它系统和模块,成为了系统架构解耦的通用语言和最佳实践。解耦后的新一代核心,将会像互联网行业应用一样后面是成百上千的服务组件,后续需要结合微服务管理技术搭建统一服务治理平台,用于更加智能和自动化的服务管理、度量和监控。

  另外,相互隔离的新一代架构还为以后核心版本的灰度发布提供了更多可能,使用户感受不到版本发布或无缝的版本回退是一个非常值得尝试的挑战。正如世间万物的核心是发展,优雅架构的核心是其内在高可扩展性,只有一个具备高可扩展的核心业务系统,才能有真正的活力和未来。

(文章来源:金融电子化杂志)

扫码即可手机
阅读转发此文

本文评论

相关文章