云原生架构实战: 某证券量化交易项目

前一阵做了一个证券量化交易项目。需求貌似很简单,也就是按照特定步骤做证券的买卖,但是最后需要部署到互联网上,这就对应用的安全性提出了很高的要求。项目工期一周,为了高质量的尽快完成项目,我设计了一个云原生的方案。

通过分析这个云原生方案,可以让读者了解到,如何通过一些云服务来快速实现安全、可扩展的应用。

先来看架构图吧:

某证券量化交易项目架构

基本业务介绍

这个项目的业务是通过调用证券公司的 API 服务,按照指令特定顺序完成指定证券的交易。在这个项目中有几套这样的指令,用户可以通过 UI 来直接操作。这些指令使用人工操作证券公司的 APP 也能完成,但是由于人工操作慢,会影响到交易利润,所以甲方希望通过此项目自动化交易指令。

为什么要用 Azure App Service?

主要原因是为了快速免费地实现 https,我把用 ReactJS 写的静态网页托管到Azure App Service 这样就不用自己管理虚机。Azure App Service 也提供了扩展域名和 https 服务,我不需要去申请和绑定新域名,更不需要去申请和维护 https 证书。

为什么要使用 Auth0.com 的 SaaS 服务?

Auth0.com 提供了用户权限管理的功能,可以直接利用社交账户登录系统,提供良好的用户体验的同时,简化了 OAuth 和 Open ID 集成到应用的复杂性。

在这个项目中,用户注册以后,管理员在 auth0 网站上给予权限,用户通过标准的 OAuth 流程使用 UI 拿到 auth0 产生的 access token 来访问量化交易服务。项目代码本身不用再处理 OAuth 流程相关的业务。项目权限由 Auth0 管理,Azure API Management 负责实现。

Azure API Management 起到什么作用?

Azure API Management 起到了以下几点作用:

  1. https termination
    由于要求所有的 API 请求都需要经过 Azure API Management,所以我们可以使用 Azure API Management 的域名和 https 服务来访问 API, 而 Azure API Management 在访问后台服务的时候使用的是 http。这样我们的后台服务就不用实现 https 简化了后台服务的实现和配置。
  2. 保护后台服务
    后台服务是 python flask 写的 RESTful API 服务,服务端口是5000,我设置了只有 Azure API Management 的 IP 才能访问后台服务,这样就消除了攻击后台服务的可能。
  3. 实现 auth0 访问权限
    用户通过认证以后使用 auth0 创建的 access token 来访问后台服务,由于使用了 Azure API Management,后台服务不需要验证 token 的合法和有效性,这个工作交给了 Azure API Management 来完成。
    另一方面,通过设置 Azure API Management 绑定 token 中的权限 claim 实现了后台服务 API 和 auth0 中设置的权限的绑定。后台服务无需实现权限相关的逻辑。
  4. CORS 控制
    通过 Azure API Management 来设置 CORS,取消了后台服务的 CORS 设置,简化了代码

除了上面的 4 点以外,Azure API Management 实际上还可以实现限流、断路保护的等功能,这些配置可以随着业务量的增加再来加上。

结论

云原生架构,使我们在一周时间实现一个安全可靠的量化交易平台成为可能。在平台中应用到了 auth0 认证及授权云服务,Azure App Service 提供静态网页及https 访问, Azure API Management 保护后台RESTful API, https 访问,和auth0一起实现权限管理。

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 打赏
    打赏
  • 0
    评论

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

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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包

打赏作者

surfirst

你的鼓励将是我创作的最大动力

¥1 ¥2 ¥4 ¥6 ¥10 ¥20
扫码支付:¥1
获取中
扫码支付

您的余额不足,请更换扫码支付或充值

打赏作者

实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

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

余额充值