活动介绍

Runnerly应用架构设计与服务交互

发布时间: 2025-08-14 00:54:23 阅读量: 4 订阅数: 17
PDF

Python微服务开发实战

# Runnerly 应用架构设计与服务交互 ## 1. 数据服务设计 ### 1.1 应用架构概述 在 Runnerly 应用中,新的应用组织架构包含了多个服务。Reports 和 Strava 服务会从 Redis 获取部分工作,并与数据服务进行交互。数据服务是一个 HTTP API,它封装了包含所有用户和跑步数据的数据库,而仪表盘则是实现 HTML 用户界面的前端。 ### 1.2 数据服务 API 设计 数据服务视图需要实现以下 API: - 对于 Strava 服务:一个用于添加跑步记录的 POST 端点。 - 对于 Reports 服务: - 一个用于检索用户 ID 列表的 GET 端点。 - 一个根据用户 ID 和月份获取跑步记录列表的 GET 端点。 HTTP API 设计遵循最小化原则,即尽可能暴露最少的入口点,并且在所有服务中共享跑步记录的结构时,也只暴露最少数量的字段。 ### 1.3 使用 Open API 2.0 Open API 2.0 规范(也称为 Swagger)是一种简单的描述语言,以 JSON 或 YAML 文件的形式呈现,它列出了所有 HTTP API 端点、使用方式以及输入输出数据的结构。以下是一个最小的 Open API 描述文件示例,定义了一个 `/apis/users_ids` 端点,并支持使用 GET 方法检索用户 ID 列表: ```yaml swagger: "2.0" info: title: Runnerly Data Service description: returns info about Runnerly license: name: APLv2 url: https://www.apache.org/licenses/LICENSE-2.0.html version: 0.1.0 basePath: /api paths: /user_ids: get: operationId: getUserIds description: Returns a list of ids produces: - application/json responses: '200': description: List of Ids schema: type: array items: type: integer ``` 使用 Swagger 描述 HTTP 端点有以下优点: - 有大量的 Open API 2.0 客户端可以使用描述文件进行有用的操作,如针对服务构建功能测试或验证发送的数据。 - 为 API 提供了标准的、与语言无关的文档。 - 服务器可以检查请求和响应是否符合规范。 ### 1.4 构建 HTTP API 的两种方式 在使用 Swagger 构建 HTTP API 时,有两种主要的方式: - **规范优先方式**:先创建 Swagger 规范文件,然后根据规范文件中的信息创建应用。例如,Connexion 框架就是基于这种原则,它通过传入规范文件和函数来生成 Flask 应用,并使用 `operationId` 字段来解析每个操作将调用的函数。 - **规范提取方式**:由代码生成 Swagger 规范文件。一些工具包可以通过读取视图文档字符串来实现这一点。 ### 1.5 Flask 应用中使用 Swagger 的示例 Flakon 项目有一个特殊的 Blueprint 类 `SwaggerBlueprint`,它不需要在规范中添加 Python 函数,也不需要根据操作来猜测函数的位置。以下是一个创建 Swagger Blueprint 并实现 `getUserIds` 操作的示例: ```python from flakon import SwaggerBlueprint api = SwaggerBlueprint('swagger', spec='api.yml') @api.operation('getUserIds') def get_user_ids(): # .. do the work .. ``` ### 1.6 应用拆分考虑 目前,已经从单体应用中拆分出了与后台任务相关的部分,并添加了一些 HTTP API 视图,以便新的微服务与主应用进行交互。还可以考虑拆分出训练功能和竞赛功能,使其成为独立的微服务,但在进行拆分时需要有充分的理由,因为每次拆分都存在使应用变得臃肿的风险。 ## 2. 服务交互 ### 2.1 服务交互类型 在 Runnerly 应用中,存在同步和异步两种服务交互方式: - **同步交互**:当用户查看主网页视图时,应用需要从数据库和竞赛数据源中获取跑步记录和竞赛列表,这些网络调用是同步的,因为需要立即显示结果。
corwn 最低0.47元/天 解锁专栏
赠100次下载
点击查看下一篇
profit 百万级 高质量VIP文章无限畅学
profit 千万级 优质资源任意下载
profit C知道 免费提问 ( 生成式Al产品 )

相关推荐

张_伟_杰

人工智能专家
人工智能和大数据领域有超过10年的工作经验,拥有深厚的技术功底,曾先后就职于多家知名科技公司。职业生涯中,曾担任人工智能工程师和数据科学家,负责开发和优化各种人工智能和大数据应用。在人工智能算法和技术,包括机器学习、深度学习、自然语言处理等领域有一定的研究

专栏目录

最低0.47元/天 解锁专栏
赠100次下载
百万级 高质量VIP文章无限畅学
千万级 优质资源任意下载
C知道 免费提问 ( 生成式Al产品 )

最新推荐

【时间管理】:提升制作效率,按时发布古风育儿视频

![【时间管理】:提升制作效率,按时发布古风育儿视频](https://media.coschedule.com/uploads/2024/02/Content-Calendar-Template-basic-calendar.png?w=3840&q=75) # 1. 时间管理在内容创作中的重要性 内容创作不仅是一项创造性的劳动,更是一项对时间要求极高的活动。无论是写作、设计还是编程,作者需要在有限的时间内完成高质量的作品。因此,高效的时间管理对于内容创作者来说,是提升工作质量和效率的关键。 时间管理是个人生产力的核心,尤其是在面对紧迫的截止日期和不断涌现的创意灵感时,创作者需要有条不紊

Matlab正则表达式:网络安全中的秘密武器,详解其在数据保护中的关键角色

![Matlab入门到进阶——玩转正则表达式](https://www.freecodecamp.org/news/content/images/2023/07/regex-insensitive.png) # 1. Matlab正则表达式基础 正则表达式是一套强大的文本处理工具,广泛应用于各种编程语言和文本处理工具中,用于识别和操作字符串数据。在本章中,我们将探讨Matlab环境下正则表达式的基础知识。 ## 1.1 什么是正则表达式 正则表达式(Regular Expression)是一种用来描述一组字符串规则的语法规则。它能够匹配一组具有特定模式的字符串,从而实现复杂的文本搜索、替

【剪映小助手批量处理技巧】:自动化视频编辑任务,提高效率

![【剪映小助手批量处理技巧】:自动化视频编辑任务,提高效率](https://images-eds-ssl.xboxlive.com/image?url=4rt9.lXDC4H_93laV1_eHM0OYfiFeMI2p9MWie0CvL99U4GA1gf6_kayTt_kBblFwHwo8BW8JXlqfnYxKPmmBaQDG.nPeYqpMXSUQbV6ZbBTjTHQwLrZ2Mmk5s1ZvLXcLJRH9pa081PU6jweyZvvO6UM2m8Z9UXKRZ3Tb952pHo-&format=source&h=576) # 1. 剪映小助手简介及其功能概述 剪映小助手是一个

Coze工作流用户体验设计要点:打造人性化工作流界面

![Coze工作流用户体验设计要点:打造人性化工作流界面](https://img-blog.csdnimg.cn/20210325175034972.png?x-oss-process=image/watermark,type_ZmFuZ3poZW5naGVpdGk,shadow_10,text_aHR0cHM6Ly9ibG9nLmNzZG4ubmV0L2NmODgzMw==,size_16,color_FFFFFF,t_70) # 1. Coze工作流概述与用户体验的重要性 ## Coze工作流概述 Coze工作流是一种先进的信息处理方式,它通过集成先进的自动化技术和人工智能,优化企业内

MATLAB电子电路仿真高级教程:SPICE兼容性与分析提升

![MATLAB电子电路仿真高级教程:SPICE兼容性与分析提升](https://img-blog.csdnimg.cn/20210429211725730.png?x-oss-process=image/watermark,type_ZmFuZ3poZW5naGVpdGk,shadow_10,text_aHR0cHM6Ly9ibG9nLmNzZG4ubmV0L3FxXzM5NTY4MTEx,size_16,color_FFFFFF,t_70) # 1. MATLAB在电子电路仿真中的作用 ## 1.1 电子电路仿真的必要性 电子电路设计是一个复杂的过程,它包括从概念设计到最终测试的多个

AI旅游攻略未来趋势:Coze AI的深度分析与趋势预测

![AI旅游攻略未来趋势:Coze AI的深度分析与趋势预测](https://www.scoutmag.ph/wp-content/uploads/2022/08/301593983_1473515763109664_2229215682443264711_n-1140x600.jpeg) # 1. AI旅游攻略概述 ## 1.1 AI技术在旅游行业中的融合 人工智能(AI)技术正在逐渐改变旅游行业,它通过智能化手段提升用户的旅游体验。AI旅游攻略涵盖了从旅游计划制定、个性化推荐到虚拟体验等多个环节。通过对用户偏好和行为数据的分析,AI系统能够为用户提供量身定制的旅游解决方案。 ## 1

【MATLAB符号计算】:探索Gray–Scott方程的解析解

![有限元求解Gray–Scott方程,matlab编程](https://media.springernature.com/lw1200/springer-static/image/art%3A10.1038%2Fs41598-022-26602-3/MediaObjects/41598_2022_26602_Fig5_HTML.png) # 1. Gray–Scott模型的理论基础 ## 1.1 理论起源与发展 Gray–Scott模型是一种用于描述化学反应中时空模式演变的偏微分方程组。它由Patrick Gray和Scott课题组在1980年代提出,并用于模拟特定条件下反应物的动态行为

《J2EE平台上XBikes应用的安装与配置指南》

### 《J2EE 平台上 XBikes 应用的安装与配置指南》 在 J2EE 平台上安装和配置 XBikes 应用涉及多个步骤,下面将为大家详细介绍。 #### 1. 安装和配置 IBM WebSphere MQ 安装和配置 IBM WebSphere MQ 是整个过程的基础,以下是详细步骤: 1. 打开 Windows 资源管理器,双击 `WebSphereMQ_t_en_us.exe`。 2. 在“WebSphere MQ(评估版)”对话框中,点击“下一步”。 3. 在“保存文件的位置”页面,选择提取安装文件的文件夹(默认文件夹为 `C:\Program Files\IBM\Sour

【ANSYS APDL网格划分艺术】:提升仿真精度与速度的必备技能

![ANSYS APDL,有限元,MATLAB,编程,力学](https://cdn.comsol.com/wordpress/2018/11/integrated-flux-internal-cells.png) # 1. ANSYS APDL网格划分基础知识 ## 1.1 ANSYS APDL简介 ANSYS APDL(ANSYS Parametric Design Language)是ANSYS公司推出的一款参数化建模、分析、优化软件,它为工程师提供了一种强大的工具,以参数形式编写命令,进行复杂模型的建立、分析和优化。APDL让自动化过程变得简单,同时也提供了丰富的脚本语言和丰富的库,

【用户体验优化】:coze智能体用户界面与交互设计的提升之旅

![【用户体验优化】:coze智能体用户界面与交互设计的提升之旅](https://cdn.hackernoon.com/images/bjfDASnVs9dVFaXVDUd4fqIFsSO2-p0f3z2z.jpeg) # 1. 用户体验优化基础概念 用户体验(User Experience, 简称 UX)是一种主观的情感反应和满足感,它衡量的是一个人在使用一个产品、系统或服务时的整体感受。用户体验的优化对于任何希望吸引和保持客户的企业至关重要,因为它直接影响到用户的满意度、忠诚度和口碑传播。 ## 用户体验的定义和重要性 用户体验不仅仅关乎界面的美观与否,它还涉及用户在与产品互动过程

专栏目录

最低0.47元/天 解锁专栏
赠100次下载
百万级 高质量VIP文章无限畅学
千万级 优质资源任意下载
C知道 免费提问 ( 生成式Al产品 )