一、背景简介

项目需要设计一个高并发的消息发送管控平台,实现业务消息发送安全管控。业务要求所有下发内容需要调用安全管控平台安全审核接口进行安全审核,根据管控策略进行放通、拦截及人工审核。目前线上日发送量峰值为30亿条左右,发送平均速度为3.47万条/秒,消息发送管控平台接口的TPS需要达到10万级别。

1.1 管控策略

基于业务需求管控平台提供管控能力及管控策略配置,平台部分管控功能如下:

  • 消息发送频次管控
  • 重复内容发送管控
  • 关键字匹配过滤
  • 发送黑名单过滤

二、架构设计

根据业务系统要求,管控平台安全审核接口需要实现10万tps,请求处理耗时在50ms以内。

2.1 业务架构图

业务架构图
安全管控平台业务架构较为简单,包含3个核心模块:

  • 管控后台:用于管理管控相关数据及查看、审核被管控的消息记录
  • 网管管控API:提供统一安全管控接口,根据平台的管控策略要求,对下发消息进行审核管控
  • 审核回调:用于向业务平台推送人工审核结果及相关变更数据

2.2 部署架构图

部署架构图
上图为管控平台的部署架构图,Redis集群和MySQL数据库使用华为云的服务,应用模块均实现集群化部署:

  • 管控后台:基于Redis实现分布式Session,采用集群化部署方式,并通过ELB负载均衡实现高可用
  • 网管管控API:采用集群化部署,通过ELB进行负载均衡;默认集群为15个节点,支持10万TPS
  • 审核回调:基于Redis实现分布式锁,采用集群化部署实现审核回调高可用

三、服务器规格

内容管控平台使用容器化部署方式部署在华为云上,使用的服务器规格如下:

应用名称 服务器规格 数量 备注
管控后台 8核/16GB/磁盘 500G 2 集群部署
管控服务API 16核/32GB/磁盘高IO 500G 15 集群部署
MySQL数据库 16核/32GB/磁盘超高IO 1TB 2 主从
Redis集群 256G/32分片 32 华为云Redis集群
弹性负载均衡 中型II/500M带宽 1 华为云ELB

3.1 Redis集群规格

说明:原Redis使用主备实例64G内存规格,但是由于每次请求至少访问2次Redis,在10万TPS情况下,Redis成为性能瓶颈,所以调整为Redis集群,详细说明见后续文档。
Redis集群规格

3.2 弹性负载均衡规格

说明: 华为云ELB(弹性负载均衡)中型II默认带宽为400M,管控服务http请求TPS到达10W后带宽将突破500M,需要联系管理员增加带宽至500M以上。
elb规格

四、性能压测

说明:本截图为4000并发下的压测结果,将并发设置为5000后TPS可以达到10W。由于压测客户端设置的最大并发为10W,所以压测结果的最大值不会超过10W。
压测结果