金融保险领域统一消息发送平台

项目介绍:系统为金融保险行业统一推送基础平台,日均推送消息2000万条,支持短信、官微、邮件多种发送渠道。

项目定位:结合公司项目产品化战略,从基础的推送能力出发,形成公司的统一推送基础产品

项目功能:包括基础推送服务,可扩展的多推送渠道管理,第三方推送应用管理,推送数据分析平台、个性化服务平台,安全推送审计平台等多个子系统。

技术难点:

  1. 高可靠难点:搭建金融保险领域高可靠消息发送链路,支持同城两机房灾备部署,确保消息不漏发不重发,发送异常实时预警。
  2. 性能难点高并发低延迟架构设计,系统支撑峰值1200TPS/异常时5000TPS处理能力,数据库支撑6000TPS写入操作。
  3. 大存储难点:单日100GB+数据库存储容量,总量100TB+存储容量,支持实时数据读写。

项目职责:

  1. 平台顶层架构设计:识别技术/管理复杂度,选择架构设计理论依据及架构设计方法,制定架构评审360度环评标准。
  2. 故障分析隐患预案:制定FMEA列表,分析故障模式与影响范围,排除架构高可用隐患。
  3. 云原生开发架构搭建:搭建配套微服务基础设施平台、基础的高可用、高性能中间件框架、自伸缩K8S云原生基础设施框架。
  4. 研发规范管理:35人项目团队管理,合理分配团队体力,平衡项目周期与团队工作压力;设定代码评审、文档交付精简策略;制定运维监控指标阈值及异常处理方案,规划降级/故障/切换定期演练方案,形成完备平台运维手册。

方案设计:

一、高性能低延迟发送方案设计

  1. 系统容量评估评估系统数据容量/线路容量,量化系统漏斗型并发访问均值/峰值以及不同时间段并发访问分布特征,评估DB/缓存/MQ中间件读写均值/峰值及存储占用,明确消息发送响应时间要求;输入线路容量100Mb/输出线路容量30Mb,消息发送响应时间低于100ms,主键查询响应时间低于1s,范围查询响应时间低于3秒,归档库查询响应时间低于5秒;单实例CPU使用率低于80%,量化结果做为高并发设计依据。
  2. 高性能数据库方案设计:读写分离/分库分表方案选型,按业务维度/时间维度/消息类型维度分为3个数据库4个核心表,确保单表数据量低于500万/存储占用低于10G,insert操作耗时低于50ms,update操作耗时低于10ms;采用API组合模式/CQRS模式实现跨库查询,采用雪花算法生成全局ID实现数据读写路由方案。
  3. 高性能缓存方案设计:根据不同缓存数据一致性要求设计缓存加载/缓存穿透策略;设计缓存数据预热方案及后台更新方案,规避缓存雪崩;实现热点数据内存级缓存方案,内存级数据缓存14万条/空间占用300M/并发8000QPS,Redis数据缓存27万/空间占用700M/并发3600QPS。
  4. 高性能MQ方案设计:生产端量化不同模式下MQ并发发送量,选型异步confirm模式发送MQ消息,支持12000TPS并发发送;消费端设计多线程消费计算策略,线程池与MQ配合实现消费限流;定时消息堆积400万条/天,占用存储空间6.8GB。
  5. 异步写数据库方案设计:利用MQ队列异步执行写数据库操作,消息发送延迟缩短50%,单数据库可支撑峰值3600次/秒写库操作;解决异步写库引发的消费乱序、重复消费、消息丢失问题。

二、高可靠消息发送链路方案设计

  1. 分布式系统高可用性规划:结合CAP理论/BASE理论梳理各业务数据存储与缓存一致性/可用性要求、软状态场景、最终一致性实现策略;遵照基本可用原则,区分在系统故障时允许损失可用性的功能和需确保正常的核心功能;定时消息发送功能要求99.9%可用性,实时消息发送功能要求99.99%可用性,消息漏发率0%。
  2. 高可用存储架构设计:Myql高可用架构MHA选型,支持10--30秒内的自动故障转移,最大程度保证数据完整性,采用1主2备结构,半同步复制确保数据一致性与可用性;制定数据库宕机/脑裂恢复策略;制定双机房分区存储方案及数据同步、归档方案,每日完成2机房8个表总计2000万条数据归档操作,传输数据量35T。
  3. 同城异区两机房灾备部署方案:业务分级,只保证实时消息发送核心业务两机房部署;数据分类,保证核心数据强一致性、非核心数据最终一致性;制定实时同步/回源查询等多种数据同步方案确保可靠数据同步;制定双机房数据缓存异常/归档异常时解决方案;机房级故障时10--20秒完成机房切换,确保核心业务正常。
  4. MQ高可用方案设计:生产端选用异步Confirm机制+重试实现可靠写入,消费端选用手动ACK机制+死信队列实现可靠消费,MQ集群高可用采用1主2从镜像队列和全面持久化(exchange持久化/队列持久化/绑定关系持久化/消息持久化)方案;制定MQ消息全流程风险(乱序/重复/丢失)规避策略。
  5. 自动降级/消息隔离方案:自动降级包括定时消息自动降级和下游状态回调写库自动降级,实时消息发送服务压力大时(单实例连续30秒并发300并且响应时长500ms以上,)自动降级定时消息发送服务,增加实时发送服务器资源,确保实时消息发送高可用;下游状态回调更新数据库响应慢时(连续10秒响应时间超过50ms)自动降级,停止更新回调状态,在30秒后尝试恢复更新;定时消息与实时消息发送链路互相隔离使用,包括发送接口隔离、发送服务隔离、缓存隔离、MQ隔离、存储隔离,确保实时消息稳定发送;
  6. 接口调用限流方案:Nginx网关采用lua+Redis方式实现分布式动态限流,采用lua-resty-limit-traffic模块,根据Nginx实例数量自动调整每个Nginx实例限流参数,确保集群总流量峰值为1200TPS;并基于内存与Redis两层缓存实现网关层黑名单过滤、访问认证、消息高并发防重功能,实现网关层过滤5000TPS异常重复请求。

三、高扩展微服务架构设计及基础设施建设

  1. 微服务拆分:基于业务逻辑/可扩展性/可靠性/性能/团队规模进行微服务拆分,规避常见微服务开发风险,将系统拆分为5个微服务:实时消息接收及模板合并服务、定时消息接收及模板合并服务、消息发送服务(包括定时消息/实时消息)、消息发送状态回调服务、后台管理服务,微服务数量与开发人员数量比例约为1:3,确保团队高研发效率。
  2. 微服务基础设施建设:分步骤完善微服务基础设施建设,首先建设服务发现/路由/容错及接口框架/网关,第二步实现微服务部署自动化、测试自动化、配置自动化,最后实现平台监控预警/服务跟踪/服务安全;具体包括全链路灰度发布平台、全链路监控平台,注册中心/配置中心、网关等技术选型开发。
  3. 全链路监控平台建设实现系统级/应用级/业务级全方位全链路监控,制定监控指标及指标数据来源,制定探针采样频率递减策略;系统级监控通过接入容器平台实现CPU/内存/网络/磁盘监控;应用级监控通过自建Skywalking全链路监控平台实现应用QPS/请求耗时/请求错误数/SLA/GC次数/JVM堆和方法区使用情况监控;业务级监控通过MQ消息和接入日志系统实现业务流程关键节点监控,实时发现业务异常并启动应急预案。
  4. 全链路灰度发布平台建设:实现网关层/业务微服务/基础微服务全链路不停服灰度发布;实现线上A/B测试,支持多种规则流量切换;通过逐步递增的阶梯流量切换,实现程序预热平滑上线。平台实现灰度单元格设置、流量染色、染色流量路由、流量递增切换基础功能,灰度单元格设置划定部分微服务实例在30秒内优雅下线并同步下线状态到各个微服务Ribbon路由;流量染色在网关层对符合条件的流量设置灰度标记;染色流量路由在Ribbon路由算法中将染色流量路由到灰度单元格。
  5. 微内核动态扩展架构设计:采用微内核架构实现防腐层设计,解决系统核心功能与上游业务深度耦合问题,通过微内核架构动态扩展能力解决上游业务需求变化频繁,上线要求时间短的问题;支持热插拔消息处理插件,包括插件配置管理、插件连接方式选择、定义统一插件通信协议。目前已实现消息内容合规检查、消息内容二次加工等多个动态插件。
  6. 部署架构设计:双机房总计部署服务实例40个,其中主机房微服务实例30个,包括实时消息发送链路相关微服务实例10个、定时消息发送链路相关微服务实例4个、后台管理/雪花算法ID生成/XXL-Job/数据分析等基础能力微服务实例16个;从机房微服务实例10个,全部为实时消息发送链路相关微服务。

四、其他支撑系统设计:

  1. 数据分析子系统设计梳理多数据源采集方案/制定数据指标模型/评估数据质量/制定指标分析策略;分析用户行为数据形成用户偏好分析指标,根据用户偏好个性化消息发送时间/渠道/类型,提升消息触达率,提升产品价值;分析系统运营/运维数据形成系统运行状态变化趋势指标,掌握系统运行状态,规避系统运行风险;数据处理流程包括数据采集、数据清洗、数据存储、数据分析、数据展示/应用环节;日处理数据量50GB+,支持离线分析/实时分析,形成用户阅读时间偏好、渠道偏好、消息到达率等10+个分析指标。
  2. 异常告警子系统设计梳理告警分类指标/定义告警级别/告警渠道/告警范围/处理时限/确定告警阈值;支持主动轮询告警和自动监控告警两种方式,探测平台主动轮询平台重点接口/页面,确保重点功能异常实时告警;自动监控系统级/应用级/业务级异常,在系统不可用之前产生告警;告警级别分为致命/严重/中等/一般等级,严重问题多渠道告警,确保告警多种方式实时送达;告警渠道包括管理界面告警/邮件/钉钉/短信/电话告警;
  3. 数据安全合规设计:包括敏感数据加密存储/脱敏展示、消息内容合规、模板内容合规且必要;手机号敏感数据采用AES加密存储,同时存储手机号后4位生成的SHA摘要信息以及AES加密秘钥版本号;支持输入手机号后4位查询和完整手机号查询,查询过程先根据后4位摘要匹配,然后解密完整手机号进行匹配。
  4. 分布式定时任务规划:采用分布式定时任务处理平台内由时间驱动的批处理任务,在Quartz/elastic-job/xxl-job进行方案选型,制定定时任务路由分片策略/失败重试策略/阻塞策略/调度过期策略。
  5. 全局唯一ID生成策略:采用雪花算法生成全局唯一ID,ID长度64bit,由高到底分别为1bit预留位,始终为0;41bit时间戳,可支持49年时长;4bit工作机器ID,其中2bit表示4个机房编号,2bit表示4个机器ID编号;10bit消息业务类型ID,最多支持1024个类型;8bit序列化,表示每毫秒可生成256个ID。
  • 8
    点赞
  • 9
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值