系统设计 - 我们如何通俗的理解那些技术的运行原理 - 第一部分:通信协议(2)

news2024/11/7 9:35:30

本心、输入输出、结果

文章目录

  • 系统设计 - 我们如何通俗的理解那些技术的运行原理 - 第一部分:通信协议(2)
    • 前言
      • SOAP vs REST vs GraphQL vs RPC
      • 代码优先与 API 优先
      • HTTP 状态代码
      • API 网关有什么作用
        • 步骤说明
      • 我们如何设计有效和安全的 API
      • 弘扬爱国精神

系统设计 - 我们如何通俗的理解那些技术的运行原理 - 第一部分:通信协议(2)


编辑:简简单单 Online zuozuo
地址:https://blog.csdn.net/qq_15071263

在这里插入图片描述

前言

我们使用视觉效果和简单术语来解释复杂的系统是如何运转的,帮助我们理解技术细节

我们使用视觉效果和简单术语来解释复杂的系统是如何运转的,帮助我们理解技术细节

在这里插入图片描述

SOAP vs REST vs GraphQL vs RPC

展示了 SOAP vs REST vs GraphQL vs RPC 之间的对比

随着时间的推移,会发布不同的 API 架构样式。它们中的每一个都有自己的标准化数据交换模式。

您可以查看图表中每种样式的用例

在这里插入图片描述

在这里插入图片描述

代码优先与 API 优先

下图显示了代码优先开发和 API 优先开发之间的差异。为什么我们要考虑 API 优先设计

在这里插入图片描述

  • 微服务增加了系统复杂性 我们有单独的服务来服务于系统的不同功能。虽然这种架构有助于职责的解耦和分离,但我们需要处理服务之间的各种通信。
    在编写代码并仔细定义服务的边界之前,最好先考虑系统的复杂性。

  • 不同的职能团队需要说同一种语言 专门的职能团队只负责自己的组件和服务。建议组织通过 API 设计使用相同的语言。
    我们可以在编写代码之前模拟请求和响应以验证 API 设计。

  • 提高软件质量和开发人员的工作效率 由于我们在项目开始时消除了大部分不确定性,因此整体开发过程更加顺畅,软件质量也大大提高。
    开发人员也对这个过程感到高兴,因为他们可以专注于功能开发,而不是谈判突然的变化。

  • 在项目生命周期结束时出现意外的可能性降低了。

因为我们首先设计了 API,所以可以在开发代码的同时设计测试。在某种程度上,在使用API优先开发时,我们也有TDD(测试驱动设计)

在这里插入图片描述

HTTP 状态代码

HTTP 状态代码

HTTP 的响应代码分为五类:

  • 信息 (100-199)
  • 成功 (200-299)
  • 重定向 (300-399)
  • 客户端错误 (400-499)
  • 服务器错误 (500-599)

在这里插入图片描述

在这里插入图片描述

API 网关有什么作用

API 网关有什么作用,为什么我们需要 API 网关

在这里插入图片描述

步骤说明

步骤 1 - 客户端向 API 网关发送 HTTP 请求。

步骤 2 - API 网关解析并验证 HTTP 请求中的属性。

步骤 3 - API 网关执行允许列表/拒绝列表检查。

步骤 4 - API 网关与身份提供程序通信以进行身份验证和授权。

步骤 5 - 将速率限制规则应用于请求。如果超出限制,则拒绝请求。

步骤 6 和 7 - 现在请求已通过基本检查,API 网关通过路径匹配查找要路由到的相关服务。

步骤 8 - API 网关将请求转换为适当的协议,并将其发送到后端微服务。

步骤 9-12:API 网关可以正确处理错误,如果错误需要较长时间才能恢复(断路),则处理故障。它还可以利用ELK(Elastic-Logstash-Kibana)堆栈进行日志记录和监控。我们有时会在 API 网关中缓存数据

在这里插入图片描述

我们如何设计有效和安全的 API

我们如何设计有效和安全的 API?下图显示了带有购物车示例的典型 API 设计

在这里插入图片描述

请注意,API 设计不仅仅是 URL 路径设计。大多数情况下,我们需要选择正确的资源名称、标识符和路径模式。在 API 网关中设计适当的 HTTP 标头字段或设计有效的速率限制规则同样重要

弘扬爱国精神

在这里插入图片描述

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.coloradmin.cn/o/1114935.html

如若内容造成侵权/违法违规/事实不符,请联系多彩编程网进行投诉反馈,一经查实,立即删除!

相关文章

Nautilus Chain 与 Coin98 生态达成合作,加速 Zebec 生态亚洲战略进程

目前,行业内首个模块化Layer3架构公链Nautilus Chain已经上线主网,揭示了模块化区块链领域迎来了全新的进程。在主网上线后,Nautilus Chain将扮演Zebec生态中最重要的底层设施角色,并将为Zebec APP以及Zebec Payroll规模性的采用提…

驱动day2作业

编写应用程序控制三盏灯亮灭 head.h #ifndef __HEAD_H__ #define __HEAD_H__ #define PHY_LED1_MODER 0x50006000 #define PHY_LED2_MODER 0x50007000 #define PHY_LED1_ODR 0x50006014 #define PHY_LED2_ODR 0x50007014 #define PHY_RCC 0x50000A28#endif demo1.c #includ…

海外调查问卷赚钱是真的吗?

海外问卷赚钱是真实的吗?我是橙河网络,一家问卷公司的老板,做这个行业已经2年时间了,首先给大家一个明确的回答:海外问卷调查赚钱是真实的! 海外问卷调查项目,在国内已经存在一二十年的时间了&…

21.3 Python 使用DPKT分析数据包

dpkt项目是一个Python模块,主要用于对网络数据包进行解析和操作。它可以处理多种协议,例如TCP、UDP、IP等,并提供了一些常用的网络操作功能,例如计算校验和、解析DNS数据包等。由于其简单易用的特性,dpkt被广泛应用于网…

[C语言]排序的大乱炖——喵喵的成长记

宝子,你不点个赞吗?不评个论吗?不收个藏吗? 最后的最后,关注我,关注我,关注我,你会看到更多有趣的博客哦!!! 喵喵喵,你对我真的很重要…

C# Onnx Detic 检测2万1千种类别的物体

效果 lable organism benthos heterotroph cell person animal plant food artifact hop check-in dressage curvet piaffe funambulism rock_climbing contact_sport outdoor_sport gymnastics acrobatics track_and_field track jumping broad_jump high_jump Fosbury_flop …

adb 获取 Android 设备中已安装的 apk 文件

前言 今天发现手机上一个应用在应用商店已经搜索不到了,想把其推荐给朋友使用,发现不知道从哪里找原始的 apk 安装文件,记录一下。 如何提取 apk 两种方法 MT管理器导出 可以使用 MT管理器(Android 平台逆向神器),它有个 安装…

新版网站云监控计划任务系统源码+定时访问指定网址监控/更新(PHP源码)

源码简介: 新版网站云监控计划任务系统源码,能够定时访问网址监控,是更新的版本。该源码可以提供高效稳定的监控服务,免费简单使用并容易上手,这个为最新接口,能让用户更放心地进行任务监控。跟其他云任务…

SystemVerilog Assertions应用指南 Chapter1.37 使用局部变量的SVA

在序列或者属性的内部可以局部定义变量,而且可以对这种变量进行赋值。变量接着子序列放置,用逗号隔开。如果子序列匹配,那么变量赋值语句执行。每次序列被尝试匹配时,会产生变量的一个新的备份。 module cubed(enable1, a, aa, clk);input logic [7:0] a; input logic enable1,…

【力扣刷题】回文链表、环形链表、合并两个有序链表

🐌个人主页: 🐌 叶落闲庭 💨我的专栏:💨 c语言 数据结构 javaEE 操作系统 Redis 石可破也,而不可夺坚;丹可磨也,而不可夺赤。 刷题篇 一、回文链表1.1 题目描述1.2 思路分…

顺序队列----数据结构

队列的概念 队列,符合先进先出特点的一种数据结构,是一种特殊的线性表,但它不像线性表一样可以任意插入和删除操作,而是只允许在表的一端插入,也就是在队列的尾部进行插入;只允许在表的另一端进行删除&…

Vue2之防抖_debounce封装函数v-debounce自定义指令(传参/不传)

目录 1、防抖 2、debounce - 封装函数 3、v-debounce 全局自定义指令 1、防抖 推荐文章 : https://blog.csdn.net/weixin_58099903/article/details/119902796 2、debounce - 封装函数 utils / tools.js /*** 函数防抖 是n秒后延迟执行,多用于页面scr…

js获取视频编码

一.背景 有些浏览器不支持某些视频的编码方式导致播放出现问题&#xff0c;这个时候要限制视频上传 二.插件 https://unpkg.com/mediainfo.js0.1.4/dist/mediainfo.min.js 三.完整html代码 <!DOCTYPE html> <html lang"en"> <head><meta ch…

【微服务保护】Sentinel 流控规则 —— 深入探索 Sentinel 的流控模式、流控效果以及对热点参数进行限流

文章目录 前言一、快速掌握 Sentinel 的使用1.1 什么是簇点链路1.2 Sentinel 的简单使用示例 二、Sentinel 流控模式2.1 直接模式2.2 关联模式2.3 链路模式 三、流控效果3.1 快速失败3.2 预热模式3.3 排队等待 四、对热点参数的流控4.1 热点规则4.2 热点规则演示 前言 微服务架…

flutter doctor检测环境,出现CocoaPods installed but not working

1. 安装flutter, 地址: 安装和环境配置 - Flutter 中文文档 - Flutter 中文开发者网站 - Flutter 2. 安装成功后&#xff0c;通过flutter doctor检测环境。以mac为例&#xff0c;出现了CocoaPods installed but not working 错误提示时&#xff0c;以下为解决方案: 2.1 rvm i…

AJAX: 对话框大全

AJAX:$.ajax({url: "/admin/cutting/getDataWeek",type: "GET",data:{},dataType:json,success: function (res) {if (res.code 1) {}},error:function (error) {console.log(请求失败);console.log(error);}}); $(.sub).unbind(click).click(funct…

浅析云数据安全的必要性

随着企业和个人用户越来越多地将数据存储和处理移到云上&#xff0c;云数据安全变得至关重要。云计算的发展为我们提供了卓越的灵活性和可扩展性&#xff0c;但也伴随着潜在的风险。在这个信息高度互联的时代&#xff0c;保护敏感数据是一项迫切的任务。本文将探讨云数据安全的…

microcom串口调试工具使用

microcom串口助手使用介绍 microcom是一个在终端中使用的串口助手&#xff0c;类似平常使用SSCOM一样的东西&#xff0c;不过是在终端中使用而已。 使用的是busybox构建的文件系统 microcom源码路径&#xff1a;busybox/miscutils/microcom.c microcom 参数&#xff1a; [r…

QT计时器

widget.h #ifndef WIDGET_H #define WIDGET_H#include <QWidget> #include <QTimerEvent> //计时器类 #include <QTime> //时间类 QT_BEGIN_NAMESPACE namespace Ui { class Widget; } QT_END_NAMESPACEclass Widget : public QWidget {Q_OBJECTpublic:Widg…

【视觉算法系列3】在自定义数据集上训练 YOLO NAS(下篇)

提示&#xff1a;免费获取本文涉及的完整代码与数据集&#xff0c;请添加微信peaeci122 YOLO-NAS是目前最新的YOLO目标检测模型&#xff0c;它在准确性方面击败了所有其他 YOLO 模型。与之前的 YOLO 模型相比&#xff0c;预训练的 YOLO-NAS 模型能够以更高的准确度检测更多目标…