简介:这是一份保险科技领域的企业案例研究报告,聚焦中科软科技在保险IT解决方案市场的龙头地位与转型路径。报告基于零壹智库数据,详细呈现中科软2018、2020年保险IT解决方案市占率分别达48.8%与60.2%,服务逾70%险企,并拆解其从传统系统集成向“保险云”方案转型的背景与具体动作,包括“保险+”战略、与华为合作推出云银保平台、云途腾金融托管云等。报告也客观指出毛利率长期徘徊在23%左右、应收账款占比偏高、研发投入低于行业等制约因素,以及与阿里云、宇信科技等竞争者的市场压力对比,便于读者快速把握行业格局和企业发展逻辑。资源为单个PDF文件,约5.05MB,适合保险科技研究者、金融IT从业者及券商分析师作为案例参考。目前已有149人浏览学习,可作为保险科技专题的便捷入门材料。
1. 保险科技里的“云方案”:中科软到底在解决哪一类问题
拿到《保险科技案例报告-中科软科技:“保险+”时代的云方案》这类材料,先别被“案例报告”四个字带偏。它在讲的事,其实是所有保险科技公司都会撞上的一堵墙:保单核心系统、承保、理赔、渠道对接这些业务,过去十几年跑在物理机房的独立应用上,每个系统一台机器甚至一组机器,资源互相抢,扩容靠买硬件,发版靠深夜窗口。所谓“保险+”时代的云方案,核心命题不是“把旧系统塞进云主机”,而是让保险业务系统具备云原生的弹性能力——既能扛住互联网渠道的瞬时流量,又不能在监管报送、日终批处理这种重负载下掉链子。这篇笔记我会从架构骨架、落地路径、关键参数、踩坑清单四个层次展开,适合正在做保险系统上云规划或接手保险 IT 基础设施的人,照着复现比通读概念更有用。
2. 中科软云方案的架构骨架:保险系统为什么非要分域部署而不是整体搬迁
2.1 先看“云方案”要应对的负载差异:承保、保单核心、理赔、渠道根本不是一回事
中科软这类保险 IT 厂商做云方案,和互联网公司做技术中台,出发点完全不一样。保险公司的核心系统是典型的“重交易 + 重状态”系统,一张保单从录单、核保、承保到回执,会产生几十个状态变化,这些状态必须落在数据库里,而且不能丢。互联网那套“无状态、随时重启”的玩法,对理赔和保单核心根本不成立。
所以拆云方案,第一件事不是选容器还是虚拟机,而是把业务系统按负载特征分成不同的域。我一般会把保险公司的应用分成四类:承保域(录单、核保、出单)、保单核心域(保单生命周期管理、续期、保全)、理赔客服域(报案、查勘、理算、支付)、监管报送与数据服务域(准备金、偿二代、银保监报送、经营分析)。这四类负载特征差异极大:承保域有明显的互联网峰值,比如开门红、双十一保险专场;保单核心域是匀速交易加日终批处理;理赔域是事件驱动,忙闲跟出险场景强相关;监管报送域则是典型的批处理洪峰,月末季末集中跑数。
把这四类混在一套云资源池里,是保险云早期最常见的翻车原因。承保域流量高峰把 CPU 占满,直接拖慢理赔查询;日终批处理把数据库 IO 打满,导致线上录单超时。中科软的方案思路,本质上是把这四个域在云上做物理或逻辑隔离,每个域独立的资源配额、独立的扩缩容策略、独立的故障域。我落地时还会在四个域之上再加一个“渠道接入层”,专门处理来自中介平台、移动展业 App、官网的流量,因为渠道流量最不规则,最容易把下游打垮。
2.2 保险云资源映射:一张表说清每个业务域该放什么云资源
做保险云规划时,不要一上来就画架构图,先做资源映射。资源映射解决的是“什么业务跑在什么资源上”的问题,我通常按下面的表来推进。
| 业务域 | 计算资源 | 存储资源 | 网络要求 | 典型配置参考 |
|---|---|---|---|---|
| 渠道接入层 | 弹性伸缩的云主机或容器 | 仅日志存储 | 公网入口 + WAF + 负载均衡 | 8C16G 起步,按 QPS 弹性扩 |
| 承保域 | 同批次弹性,但需保留最小资源池 | 共享数据库 + 缓存 | 高带宽,低延迟内网 | 16C32G,集群至少 2 节点 |
| 保单核心域 | 固定资源池,不建议频繁伸缩 | 高性能数据库存储 | 与承保、保全内网互通 | 32C64G,数据库独立磁盘 |
| 理赔客服域 | 中等弹性,按报案量伸缩 | 对象存储放影像件 | 影像传输需要较大带宽 | 16C32G,存储单独规划 |
| 监管报送域 | 定时任务触发,集中式大规格实例 | 大数据计算存储 | 与核心库只读连接 | 按数据量季度评估,低配常驻高配跑批 |
这个表的价值在于让资源诉求显性化。很多保险团队上云只盯着 CPU 内存,忽略了网络和存储的隔离。保单核心域和承保域之间往往有高频的数据库访问,如果你让它们跨可用区部署,延迟高了,承保接口就会超时。中科软的云方案里强调“分域部署”,落点就在这——同一业务域内的应用和数据库尽量同机房同时延,不同域之间才允许跨可用区。
2.3 应用与数据双解耦:单体核心保留,外围应用先行拆分
保险核心系统大多是用了很多年的 Java EE 单体架构,指望一次上云就微服务化,不现实,也没必要。风险太大了。真正务实的做法是“双解耦”:应用层面,把渠道接入、核保规则引擎、理赔影像上传这类无状态或弱状态应用拆出来容器化;保单核心这类强状态应用继续跑在虚拟机上,只做标准化封装。数据层面,先把报表库、影像库、日志库从核心库中解耦出去,让核心业务库的负载降下来,再考虑分库分表。
这个阶段最怕的是为了微服务而微服务。我见过一个案例,团队花了大半年把承保链路拆成十几个微服务,拆完发现跨服务调用的事务一致性根本兜不住,回滚链路复杂到没人敢动。后来退回“核心单体 + 周边微服务”的混合架构才消停。中科软的方案也是这个路线:云平台负责给底层资源做池化和自动化,保险业务系统本身的改造节奏由业务团队自己掌控。这其实是保险科技落地最成熟的一种路径——基础设施上云先行,应用改造小步迭代,风险可控。
数据解耦要特别注意:保险数据有留存要求和一致性要求,影像文件迁到对象存储没问题,但保单主数据必须保持在数据库事务边界内。所以数据解耦的优先级是:日志数据、影像数据、报表数据先迁,交易数据后动。
3. 从传统机房到保险云:一套可执行的落地路径与可抄作业
3.1 盘点应用清单与依赖关系:先搞清楚有哪些系统和谁依赖谁
保险云落地第一步不是买机器,而是做应用盘点。这件事做完,迁移顺序、资源规划、风险边界全都有了。我常用的做法是写一个拓扑发现脚本,去扫描现有环境里的服务端口和调用关系,生成一张依赖清单。
#!/bin/bash # 基础版应用端口与系统指纹盘点 # 在保险核心的堡垒机上执行,扫内网段的常见服务端口 NET_PREFIX="10.10.20." for i in $(seq 1 254); do HOST="${NET_PREFIX}${i}" # 常见保险系统端口:8080 Java应用、3306 MySQL、1521 Oracle for PORT in 8080 3306 1521 6379 9090; do nc -vz -w 1 $HOST $PORT > /dev/null 2>&1 if [ $? -eq 0 ]; then echo "${HOST}:${PORT} open" >> app_inventory.txt fi done done # 结果里再结合操作系统版本、进程列表做指纹确认这段脚本的思想很简单:先端口探活建出资产清单,然后再去确认每个端口跑的是什么系统。注意两个点:nc -w 1的超时不能省,否则碰到不响应 IP 会卡很久;另外扫描保险生产网段前一定先走变更审批,最好在维护窗口或测试环境做,否则容易被安全部门拦下。端口清单出来之后,再对照每台服务器的进程和定时任务,补上应用名、负责人、数据流向三列,依赖关系基本就清楚了。
有了这个清单,就能做迁移分级:无状态应用直接容器化;有状态但非核心的(报表、影像)迁到云上的 PaaS 组件;核心交易系统先保持虚拟机模式迁入云资源池,稳固之后再谈改造。迁移顺序强烈建议“先边缘后中心”——渠道门户先上云,核心产能系统最后切,这是保险云最稳的推进顺序。
3.2 云资源池设计:虚拟化、容器化与存储的规格选型参数
资源池设计直接影响成本和稳定性,我一般按“池子分三级”来做。一级池是核心交易池,跑保单核心和承库,用高性能计算型实例和高可用存储,不做抢占式调度;二级池是弹性业务池,跑渠道、理赔、影像,支持弹性伸缩;三级池是批处理池,专门跑日终、报送任务,平时缩容到最低,跑批时再拉起来。很多保险团队图省事只建一个池,结果核心业务和离线任务互相干扰,这是后面所有不稳定问题的根源。
存储选型也是保险云一个特别容易想简单的点。保单系统的 Oracle 或 MySQL 数据库要求低延迟高吞吐,我通常会选择 SSD 云盘或本盘存储,RAID 由虚拟化层做;影像和双录视频适合走对象存储,成本低又能设生命周期清理;日志可以走轻量对象存储加日志服务。这里有个经验参数:核心数据库的 IOPS 至少按每 1000 笔日交易量预留 500 IOPS 来规划,否则月末批处理时磁盘会是最大瓶颈。
容器化配置方面,核心交易域我不建议上容器,至少在初期别上。原因很简单:保险核心系统的发布窗口和回滚机制都是围绕虚拟机快照设计的,容器化之后这些机制全部要重做,风险太大。周边系统用 K8s 没问题,但一个最小组网至少需要 3 个控制平面节点,etcd 数据盘用高性能 SSD。下面是一个标准的保险渠道应用 Deployment 模板,参数可以直接抄。
apiVersion: apps/v1 kind: Deployment metadata: name: channel-gateway spec: replicas: 2 selector: matchLabels: app: channel-gateway template: metadata: labels: app: channel-gateway spec: containers: - name: app image: registry.example.com/ins/channel-gateway:1.4.2 ports: - containerPort: 8080 resources: requests: cpu: 1000m memory: 2Gi limits: cpu: 2000m memory: 4Gi readinessProbe: httpGet: path: /health port: 8080requests和limits的差值就是我说的弹性空间。保险渠道网关流量波动大,requests 给足基础容量,limits 留出突发余量,节点资源不够时调度器会优先保证 requests,不至于一个小高峰直接 OOM。readinessProbe必须指向真实的健康检查端点而不是根路径,否则容器明明没就绪也会被导入流量。
3.3 灰度切换与回滚:给生产切换留一条后悔药
迁移切换是保险云项目里最紧张的一步。我的原则是:任何系统切换必须支持灰度,任何灰度必须支持一键回滚。具体来说,用 DNS 权重或负载均衡按比例导流,先放 5% 的保单流量到云端,观察承保成功率、接口延迟和数据库报错,稳定 24 小时后加到 30%,再到 70%,最后到 100%。整个过程中旧机房系统保持热备,一旦发现问题,负载均衡权重拨回旧系统即可。
回滚这件事一定要在切换前演练。别等到真出问题的时候查手册,演练就是打开负载均衡配置界面,把权重从新系统拨回旧系统,观察全部流量回切的时间。保险系统的回滚有个特定难点——数据库是双向的,切到云端之后产生了新数据,回滚时这些数据必须能同步回旧环境。所以云端的核心库要做双通道同步,确保切换期间新增的保单数据能实时回流旧库。这条不做,回滚就是空话。
4. 让保险业务稳定跑的必调参数:从 JVM 到数据库连接池的落地配置
4.1 承保与保单核心应用的 JVM 与线程池参数
中科软体系下的保险核心系统,大量业务逻辑跑在 Java EE 容器里。这类系统的线上故障,一半以上出在线程池和 JVM 堆的配置上。承保网关的线程池开得太大,数据库连接被瞬间占满;堆内存给得太小,Full GC 频繁导致接口超时。我把一套经过多次压测调校的参数基准放在下面,按业务量修正即可。
# 承保应用 JVM 参数基准(4C8G 容器) -Xms4g -Xmx4g -XX:MaxMetaspaceSize=512m -XX:+UseG1GC -XX:MaxGCPauseMillis=300 -XX:ParallelGCThreads=4 -Djava.net.preferIPv4Stack=true # 线程池参考配置(Spring 线程池) # corePoolSize=40, maxPoolSize=80, queueCapacity=200 # 数据库连接池参考配置(以 HikariCP 为例) # maximumPoolSize=30, minimumIdle=10, connectionTimeout=30000JVM 的-Xms和-Xmx必须设为相同值,避免运行期堆动态伸缩带来的停顿。G1GC 比较容易匹配大堆场景,MaxGCPauseMillis=300是测算过的平衡点——太小子破产 GC,太大会让批处理任务频繁打断交易。线程池的queueCapacity=200是保险业务特有参数:核心系统宁可让请求排队,也不能把所有请求瞬间打进数据库。这个值按日常流量的 3-5 倍设置,超过则触发快速失败,保护下游不受冲击。
4.2 数据层连接池:保险核心上云最容易踩的雷区
保险系统对数据库连接的消耗远超一般 Web 应用,因为一张保单的承保动作可能串行操作十余张表,加上状态变更、佣金计算、再保分摊,单笔交易可能连续占用多个数据库连接。连接池参数配不好,最常见的现象就是数据库连接数被占满之后,应用日志里大量出现Connection is not available, request timed out。
连接池的maximumPoolSize不是越大越好,它必须跟数据库实例的最大连接数配套。我见过一个团队把连接池 max 调到 200,结果数据库侧max_connections只有 300,结果两个应用一扩容,数据库直接拒绝连接。经验值是:应用连接池 max 不超过数据库实例连接上限的 60%,并且所有接入同一数据库的应用连接数总和要留 30% 余量给运维操作。HikariCP 的connectionTimeout=30000也别轻易改动——低于 10 秒会在数据库慢查询时引发大量报错,高于 60 秒又会拖垮请求线程池。
4.3 云网络层与消息队列:超时、重试与限流的配合
保险云里跨域调用的超时和重试配置,是另一个黑匣子。承保域调用保单核心域,如果超时设置得比数据库执行时间还短,重试风暴会直接压垮核心库。推荐全链路设置一套标准的超时阶梯:网关层 10 秒,应用层到核心层 5 秒,数据库执行层 30 秒;重试只允许在上层做一次,禁止在底层做多次重试。幂等键要落在业务字段上——用请求流水号做去重,否则重试会造成保单重复。
异步消息在保险系统里的地位越来越重,但很多人只把它当解耦工具,忽略了消息积压的监控。理赔系统通过 MQ 接收报案信息,一旦积压,消费者扩容后又会瞬间打满下游数据库,这在保险云上是灾难。给消费者设置每次拉取数量的上限,比如单批次拉取 500 条并按账户或保单维度并发处理,比无脑扩大并发安全得多。同时必须配置消息延迟或积压告警,在 5 分钟级别就要拉响。
5. 保险云落地的避坑清单:五个真实翻车现场与修复路径
5.1 日终批处理把线上连接池打满,承保业务全链路拒绝服务
现象:晚上 10 点日终批处理启动后,次日凌晨核心系统的线上录单和保全操作大面积超时,持续到早上 6 点批处理结束才恢复。
原因:日终任务跟线上交易共用同一个数据库连接池,批处理是长事务,把连接池资源全部占住,线上请求拿不到连接。我核查时发现连接池的minimumIdle=10,结果批处理一上来,空闲连接全部被卷走,线上等待线程数暴涨。
解决:把日终批处理拆到独立的数据库账号和独立连接池,限流任务并发数,同时给线上连接池设置minimumIdle不低于日常峰值的 30%,确保任何情况下都保有一批连接给交易请求。日终跑批期间再叠一条监控,批处理任务连接占用超过 70% 就报警。
5.2 连接数调大后反而更慢,数据库出现 cpu 争抢
现象:双十一保险专场流量上来后,承保接口 P95 延迟从 80ms 飙升到 1.5 秒,DBA 查数据库并没有慢 SQL,但 CPU 使用率逼近 100%。
原因:连接池最大连接数从 50 调到 100,数据库侧线程数也跟着翻倍,MySQL 的线程调度开销暴增,尤其在这些连接都在执行短小 SQL 时,上下文切换把系统资源吃干净。我翻压测数据发现 50 连接时 TPS 是 1800,调到 100 反而降到 1200。
解决:回退连接数,以压测数据为准倒推最优并发。保险核心库的这种场景,单库的合理并发连接通常在 30-60 之间,超过之后加连接不如加只读副本做读写分离。
5.3 同城双活容灾演练,切换后保单查询延迟翻倍
现象:容灾切换演练到备可用区,保单查询接口的延迟从 50ms 变成 300ms,虽然没挂,但用户体验明显变差。
原因:备可用区的数据库实例是低配,日常只承担异步同步,没有能力承接全部查询流量。演练结束后回切又出现短暂的数据延迟窗口,恰好撞上了保全操作。
解决:容灾实例的规格必须按主实例日常峰值的 70% 以上配置,而不是按“能同步就行”的标准。双活演练要常态化,至少季度一次,每次演练之后对比主备两端的延迟基线并记录在案。
5.4 异步同步保单状态丢消息,理赔系统用了旧数据
现象:保全变更后的第二天,理赔系统计算的保单保额还是旧值,差额直接影响赔付试算结果。
原因:保全服务把保单变更消息发到 MQ,理赔系统消费后更新本地缓存。某次消息队列集群重启,积压消息被丢弃,没有做任何补偿。
解决:所有关键状态同步增加对账补偿任务,每天定时比对核心库与下游系统的保单版本号,不一致则重新同步。同时消息消费端要做到“本地事务 + 消息确认”一致,落库成功之后再提交消费确认,从根上避免丢消息。
5.5 上云后资源成本翻倍,原因是规格给得过于豪华
现象:上云之后月账单比自有机房时期还高,查了资源清单发现,大量实例规格 32C64G,但实际负载不到 10%。
原因:迁移时沿用旧机房的安全库存思路,每个系统都按峰值规格给资源,又叠了一层云厂商的弹性余量。没人对规格做定期回收,弹性伸缩没设置缩容阈值。
解决:上云后一个月内做一次规格与负载的匹配审计,连续一周 CPU 平均低于 10% 的实例降配或并入容器集群;为每个业务域设置缩容策略,低峰时段的资源配额压到峰值配额的 30%。保险系统虽然讲究稳定,但资源浪费的稳定毫无意义。
6. 上线只是开始:用压测与基线对照把云方案钉在线上
云方案切换完成不叫项目结束,我在每个保险云项目之后都会坚持做两件事:建立回归基线和定期压测。回归基线是拿回切前经过核验的接口响应、TPS、数据库慢查询数量作为“标准答案”,云端每次发布版本后重新跑一轮,任何指标劣化超过 15% 都视为异常。没有基线的云上系统,出了问题你根本分辨不出是云的问题还是业务代码的问题。
第二件是每月做一次核心链路的全链路压测。打开日志追踪到每个请求贯穿网关、承保微服务、核心库的时间分布,重点盯数据库连接池水位和线程池活跃度。某次我在压测里发现写核心库的时间占了 70%,拆开一查是索引失效,这在非压测环境根本不会暴露。养成每次大版本发布前先压测再上线的习惯后,线上故障至少少了一半。
说起教训,我最想提醒的是“先压测再扩容别倒过来”。有一回开生产扩容单之前觉得没问题,结果开门红活动当天承保通道被打穿,连同管理端都失去响应,整个团队熬夜降级了一整晚重建连接池。自那以后,凡涉及核心链路的容量变更,我都会先在预发环境按两倍预估流量压三小时,数据不好看就不放行。这行没有玄学,只有拿出来能过检的压测报告才有底气。希望这些踩过的坑和参数基准能帮你在保险科技这条路上少走几趟夜路,一次把云方案立稳。
本文还有配套的精品资源,点击获取