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

云原生架构实战: 某证券量化交易项目最近为朋友做了一个证券量化交易项目 朋友的需求貌似很简单 也就是按照特定步骤做证券的买卖 但是最后需要部署到互联网上 我承诺一周内完成项目 为了高质量的尽快完成项目 我使用了云原生的方案 通过分析这个云原生方案 可以让读者了解到 如何通过一些云服务来快速实现安全 可扩展的应用 先来看架构图吧 基本业务介绍这个项目的业务是通过调用证券公司的 API 服务 按照指令特定顺序完成指定证券的交易 在这个项目中有几套这样的指令 用户可以通过 UI 来直接操作 这些指令使用人工操作证券公司的 APP 也能完成

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

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

先来看架构图吧:

某证券量化交易项目架构

基本业务介绍

这个项目的业务是通过调用证券公司的 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一起实现权限管理。

版权声明:本文内容由互联网用户自发贡献,该文观点仅代表作者本人。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如发现本站有涉嫌侵权/违法违规的内容, 请联系我们举报,一经查实,本站将立刻删除。

发布者:全栈程序员-站长,转载请注明出处:https://javaforall.net/217203.html原文链接:https://javaforall.net

(0)
上一篇 2026年3月18日 上午10:07
下一篇 2026年3月18日 上午10:07


相关推荐

  • 从源码探究双亲委派机制

    从源码探究双亲委派机制首先我们要知道双亲委派机制是为了解决什么问题 有关类加载器 可以参考我的这篇博客 所谓的双亲委派 就是先让父亲加载器试图加载该 Class 只有在父亲加载器无法加载该类时才尝试从自己的类路径中加载该类 通俗的讲 就是某个特定的类加载器在接到加载类的请求时 首先将加载任务委托给父亲加载器 依次递归 如果父亲加载器可以完成类加载任务 就成功返回 只有父亲加载器无法完成此加载任务时 才自己去加载 我们通过这张图来理解一下 在被动的情况下 当一个类加载器收到加载请求 他不会首先自己去加载 而是传递

    2026年3月19日
    1
  • 项目管理小小知识点总结

    项目管理,有许多知识点需要日常中总结和积累,从这里开始吧:1、项目沟通渠道数计算公式:[N*(N-1)]/2分子可知数量级为:N的平方。2、水晶头个数计算:N*4*1.153、信息化6大要素

    2021年12月25日
    45
  • 指针

    指针

    2022年1月12日
    52
  • chrome下document.cookie为空

    chrome下document.cookie为空今天遇到一个待解决的问题:关于Chrome浏览器下,可设置cookie,但无法读取的问题!baidu.cookie.set(‘hideMask’,’1′);从这里可以看到chrome中相关的cookie存储情况,能找到已设置成功的cookie值:chrome://chrome/settings/cookies但是,通过document…

    2022年7月20日
    43
  • javah是什么命令_jvm命令

    javah是什么命令_jvm命令javah命令用法

    2026年3月4日
    10
  • pycharm提示no python interpreter_pycharm failed to create virtual

    pycharm提示no python interpreter_pycharm failed to create virtual学习笔记遇到问题在学习时,用pycharm打开浏览器的时候(我用的是谷歌浏览器,别的浏览器也用这个思路解决)发现提示说找不到这个文件解决方法:打开设置(File→Settings)点击工具,浏览器(Tools→WebBrowsers)在工具那一项中,点击浏览器,再在右边的浏览器中,找到自己要用的浏览器在浏览器对应的路径中修改路径(找到该浏览器下载在本机的位置)这一步老师…

    2022年8月27日
    9

发表回复

您的邮箱地址不会被公开。 必填项已用 * 标注

关注全栈程序员社区公众号