博时基金基于 RocketMQ 的互联网开放平台 Matrix 架构实践

简介: 随着近两年业绩的抢眼,公募基金迎来了乘风破浪式的发展,截至 2021 年 1 月底,资产管理规模已破 20 万亿,创下了历史新高。

h5banner.png

<本文已参与 RocketMQ Summit 优秀案例征文活动,点此了解详情>


作者|伍振河 博时基金互联网金融部架构师 、
曾志 博时基金互联网金融部开发主管

随着近两年业绩的抢眼,公募基金迎来了乘风破浪式的发展,截至 2021 年 1 月底,资产管理规模已破 20 万亿,创下了历史新高。
   在中国新经济高质量及科技创新发展的背景下,众多金融类的互联网平台与基金公司展开合作,互联网金融科技与传统金融业务的融合,促使传统金融公司的信息技术系统更加开放。

据此,2020 年,博时基金互联网金融部启动了互联网开放平台 Matrix 的建设工作。

博时基金互联网开放平台 Matrix 建设背景与目标


1、传统金融架构遇到的问题与挑战

传统的金融系统架构受到了互联网化的挑战,主要表现在以下几个方面:

1) 互联网入口缺乏管控

有多个团队提供不同形式的互联网服务,接口协议和权限管控方式不一致。当服务和接口越来越多时,API 管控能力不足的问题将会突显。

2) 系统较为封闭,开放能力不足

传统基金行业系统生态较为封闭,与合作伙伴开放生态的能力有待提升。

3) 金融场景化封装能力不足

传统基金行业系统普遍依赖于底层数据库提供的 ACID 特性实现事务一致性。微服务化之后,这套机制对金融场景化的产品包装能力显得捉襟见肘。 


2、系统建设目标


1)多渠道统一安全接入

为自有系统与运营厂商提供标准化统一接入,实现内外部 API 统一的管控。Matrix 开放给经过博时互联网平台资质认证后的第三方平台使用,需要根据第三方平台识别的不同身份,进行接口级别权限管控。

2)提供开放能力

搭建开放平台,与合作伙伴共建开放生态。在得到 Matrix 平台的授权后,第三方平台开发者可以通过调用博时基金互联网开放平台的接口能力,为第三方平台提供基金产品信息查询、注册开户、积分兑换、基金申赎、资产查询、联合登录等全方位服务;第三方平台可以根据自身实际情况自由选择或组合 APP 、微信公众号、微信小程序、H5 等前端方式对接。 

3)封装基金行业特色功能

应用层实现分布式事务框架以保证整体事务的一致性。基于此,封装优惠购、投资陪伴等复杂的金融场景化功能,让开发者专注于业务开发,提升客户的投资体验。 

Matrix 建设思路


1、总体架构

1)互联网架构图

基于 Spring Cloud 微服务套件和 RocketMQ 消息中间件,搭建的企业级云原生架构。


图片 1111111.png

 

2、关键组件

1)API 网关

API 网关是微服务架构重要组件之一,是服务唯一入口。API 网关封装内部系统架构,横向抽离通用功能,如:权限校验、熔断限流、负载均衡等。通过 API 网关可以把内部 API 统一管控起来。

图片 0.png


目前博时基金的互联网业务接入入口主要分为 3 类:

  • 面向自营业务的博时基金移动端 APP 和 H5 。
  • 面向合作伙伴的 OpenAPI 。即作为开放平台的入口,服务的 OpenAPI 会提供有条件的访问限制(时间、流量、频率),需要考虑流量控制、安全认证、接口授权方面的管理。
  • 面向企业内部管理系统的 API ,提供企业内部系统访问。


Matrix 的 API 网关基于 Spring Cloud Gateway 构建,SCG 内置的 Route、Predicate 和 Filter 模块可以方便扩展出路由转发、统一鉴权等跨横切面的功能。基于内外部网络隔离的需求,我们独立部署了两套网关,其中 Kylin 网关提供互联网接入。Phoenix 网关用于域内系统接入,提供域账户的访问权限控制。


2)认证中心
   为了保护 OpenAPI 的安全,避免恶意访问、未授权访问、黑客攻击等导致的安全隐患,开放平台需要增加授权认证模块。同时,在博时的内部的应用系统之间,也有单点登录的需求。统一的认证中心是微服务架构的必备组件。
   Matrix 基于 OAuth2 协议构建了统一认证中心,实现用户、应用、接口的统一认证和鉴权。OAuth2 核心思路是通过各类认证手段认证用户身份,并颁发 Token ,使得第三方应用可以使用该令牌在限定时间、限定范围访问指定资源。Matrix 支持 OAuth2 的 Authorization Code 、Resource Owner Credentials 和 Client Credentials 三种授权类型,根据不同的应用场景,采用不同的授权类型颁发 Token ,为开放平台的安全保驾护航。 3)RocketMQ 消息中间件

3、技术选型


在技术选型过程中,我们主要考虑以下几点:

首先必须是国产化的产品,其次是比较流行并且社区活跃度高的开源产品。

另外,重点关注的 MQ 特性:


  • 消息可靠传递,即确保不丢消息。
  • 分布式事务,需要支持分布式事务,降低业务的复杂性。
  • 性能,我们的场景主要是在线的金融类业务,需要 MQ 具备支持金融级的低延迟特性。

最后,从架构演进的角度来考虑,需要无缝对接我们的混合云架构,最终我们选择了  RocketMQ。


RocketMQ 是阿里巴巴自主研发及双 11 交易核心链路消息产品,提供金融级高可靠消息服务。在开源方面,开源 RocketMQ 已经完成了云原生技术栈的集成,包括Knative 中的事件源,Prometheus 的 Exporter,K8s 的 Operator 等;也支持了微服务框架 SpringCloud 以及函数计算框架 OpenWhisk ;同时开发了很多 Connector 作为 Sink 或者 Source 去连接了 ELK、Flume、Flink、Hadoop 等大数据和数据分析领域的优秀开源产品。


RocketMQ 在Matrix开放平台的应用场景

1、金融产品的场景化包装

业务场景:

典型的业务场景如优惠购,基民通过优惠购功能申购基金,可将交易费率降为0。简单来说就是先购买博时货币基金,再通过快速转购的方式买入目标基金,豁免相关转换费率。 

实现原理:

Matrix 基于 RocketMQ 的事务消息搭建了一个高可靠、高可用的事务消息平台---事务中心,涉及业务流程如下: 第一阶段是 Prepare ,即业务系统将 RocketMQ 的半事务消息发送到事务中心,事务中心不做发布,等待二次确认。Prepare 完成之后,业务系统执行主事务,即购买货币基金,成功后 commit 到事务中心,由事务中心投递消息到从事务。如果主事务失败,就投递 rollback 给事务中心。

图片 100.png


反查机制:
   由于网络抖动、业务系统重启等原因,可能导致事务消息的二次确认丢失。此时需要依赖反查机制恢复整个分布式事务的上下文。RocketMQ 提供的 Message Status Check 机制正是为解决分布式事务中的超时问题而设计的。事务中心的反查机制流程主要是,先检查事务中心的内部状态,再通过反查接口检查本地事务的执行结果,恢复事务上下文后,正常推进后续的流程。 

图片 200.png


依赖于 RocketMQ 提供的事务消息,事务中心在应用层实现了分布式事务,大大提升了对金融产品的场景化包装能力。 

2、系统间解耦

业务场景:

部门 A 负责根据市场、产品和客户的陪伴场景输出优质的陪伴内容,部门 B 负责把这些陪伴内容触达到不同的渠道和用户。

实现原理:

部门 A 的陪伴事件触发服务和部门 B 的陪伴触达服务之间通过 RocketMQ 消息进行业务解耦,即双方没有依赖关系,也不必同时在线。

图片 3999.png


3、异步调用

业务场景:

异步调用的使用场景比较多,如用户注册、用户关键行为跟踪等。其中用户行为跟踪场景,在服务端异步记录用户的关键行为及相关属性,可为用户分等级运营和精准营销打下基础。

实现原理:

将非核心的业务流程异步化可以减少系统的响应时间,提高吞吐量,是系统优化的常用手段。RocketMQ 提供了高效的通信机制,业务系统使用起来非常方便。 


总结与未来展望


随着互联网技术在金融领域的不断渗透和金融创新业态的发展,公募基金互联网业务需要不断进行流程改造、模式创新及服务能力升级,在优化场景体验的基础上,持续打造基于平台、场景和产品三位一体的互联网服务平台。
   Matrix 经过一年多的建设,目前已具备多渠道统一接入、第三方生态互联互通、基金特色交易场景化封装等功能特性。Matrix 通过建设有品质、有温度的陪伴,从技术上和体验上,让用户理解风险,理解投资,进而为客户持续创造价值。
   在未来,将会有更多的合作伙伴接入 Matrix ,希望我们能一起畅游在创新科技的星辰大海中,合作共赢。

相关实践学习
消息队列RocketMQ版:基础消息收发功能体验
本实验场景介绍消息队列RocketMQ版的基础消息收发功能,涵盖实例创建、Topic、Group资源创建以及消息收发体验等基础功能模块。
消息队列 MNS 入门课程
1、消息队列MNS简介 本节课介绍消息队列的MNS的基础概念 2、消息队列MNS特性 本节课介绍消息队列的MNS的主要特性 3、MNS的最佳实践及场景应用 本节课介绍消息队列的MNS的最佳实践及场景应用案例 4、手把手系列:消息队列MNS实操讲 本节课介绍消息队列的MNS的实际操作演示 5、动手实验:基于MNS,0基础轻松构建 Web Client 本节课带您一起基于MNS,0基础轻松构建 Web Client
相关文章
|
3天前
|
运维 负载均衡 监控
深入探索微服务架构的核心要素与实践策略
在当今软件开发领域,微服务架构已成为构建灵活、可扩展企业级应用的首选模式。本文旨在剖析微服务架构的设计理念,通过实例阐述其核心组件如服务注册与发现、配置管理、熔断机制等如何协同工作,以提升系统的敏捷性和维护性。同时,探讨了在实践中应对分布式系统复杂性的最佳策略,包括负载均衡、服务监控和日志聚合等关键技术,旨在为后端开发者提供一套完整的微服务实施指南。
19 1
|
11天前
|
运维 监控 API
深入浅出:微服务架构的设计与实践
在软件开发的世界中,微服务架构如同一股清新的风,吹散了单体应用带来的沉重与复杂。本文将带你走进微服务的世界,一探究竟,从理念到实践,我们一同领略微服务的魅力所在。
|
12天前
|
运维 持续交付 开发者
深入浅出:微服务架构的设计与实践
在数字化浪潮的推动下,微服务架构以其独特的优势成为软件开发领域的新宠。本文将通过浅显易懂的语言,带领读者从理论到实践,一探微服务架构的奥秘。我们将一起学习如何设计一个高效、可扩展且易于维护的微服务系统,并探讨实施过程中可能遇到的挑战及解决方案。无论你是软件架构的初学者,还是希望深化理解的开发者,这篇文章都将为你提供有价值的见解和指导。
37 3
|
8天前
|
机器学习/深度学习 人工智能 自然语言处理
赋能百业:多模态处理技术与大模型架构下的AI解决方案落地实践
【9月更文挑战第4天】赋能百业:多模态处理技术与大模型架构下的AI解决方案落地实践
赋能百业:多模态处理技术与大模型架构下的AI解决方案落地实践
|
3天前
|
消息中间件 缓存 监控
优化微服务架构中的数据库访问:策略与实践
随着微服务架构的普及,如何高效管理和优化数据库访问成为了关键挑战。本文探讨了在微服务环境中优化数据库访问的策略,包括数据库分片、缓存机制、异步处理等技术手段。通过深入分析实际案例和最佳实践,本文旨在为开发者提供实际可行的解决方案,以提升系统性能和可扩展性。
|
10天前
|
搜索推荐 API 开发者
深入浅出:微服务架构的设计与实践
在数字化时代的浪潮下,微服务架构以其灵活性、可扩展性和独立部署的特点,成为众多企业技术选型的宠儿。本文将通过浅显易懂的语言和生动的比喻,带领读者一探微服务世界的奥秘,从基础概念到实际案例,逐步揭示如何设计并实施一个高效、稳定的微服务系统。无论你是技术小白还是资深开发者,这篇文章都将为你打开一扇了解和应用微服务的大门。
|
8天前
|
运维 Cloud Native Devops
云原生架构的崛起与实践云原生架构是一种通过容器化、微服务和DevOps等技术手段,帮助应用系统实现敏捷部署、弹性扩展和高效运维的技术理念。本文将探讨云原生的概念、核心技术以及其在企业中的应用实践,揭示云原生如何成为现代软件开发和运营的主流方式。##
云原生架构是现代IT领域的一场革命,它依托于容器化、微服务和DevOps等核心技术,旨在解决传统架构在应对复杂业务需求时的不足。通过采用云原生方法,企业可以实现敏捷部署、弹性扩展和高效运维,从而大幅提升开发效率和系统可靠性。本文详细阐述了云原生的核心概念、主要技术和实际应用案例,并探讨了企业在实施云原生过程中的挑战与解决方案。无论是正在转型的传统企业,还是寻求创新的互联网企业,云原生都提供了一条实现高效能、高灵活性和高可靠性的技术路径。 ##
18 3
|
10天前
|
消息中间件 API 持续交付
深入浅出:微服务架构的设计与实践
在软件开发的广阔海洋中,微服务架构如同一艘灵活的帆船,它以模块化的方式切割复杂的单体应用,让服务独立、轻盈且易于管理。本文将带你从理论到实践,一步步揭开微服务的神秘面纱,探讨如何设计并实现一个高效、可扩展的微服务系统。无论你是架构新手还是资深开发者,这篇文章都将为你提供新的视角和实用的技巧。
29 6
|
9天前
|
消息中间件 监控 供应链
深入浅出:微服务架构的设计与实践
在软件开发的浩瀚宇宙中,微服务架构如同一颗璀璨的星辰,引领着现代应用设计的潮流。本文将带你穿越微服务的概念迷雾,探索其设计哲学和实战技巧,从理论到代码,一步步构建起你的微服务星系。
|
14天前
|
设计模式 API 持续交付
深入浅出:微服务架构的设计与实践
在软件开发的世界中,微服务架构如同一场革命,它改变了我们构建、部署和管理应用的方式。本文将带你一探微服务的奥秘,从基础概念到实际案例分析,再到设计模式和常见问题解答,我们一步步深入理解微服务架构的设计哲学和实践要点。无论你是初学者还是有经验的开发者,这篇文章都将为你打开一扇了解和应用微服务的大门。