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

本心、输入输出、结果

文章目录

  • 系统设计 - 我们如何通俗的理解那些技术的运行原理 - 第一部分:通信协议(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.mzph.cn/news/112614.shtml

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

相关文章

多线程抽象知识汇总

文章目录 本日鸡汤锁策略1. 乐观锁和悲观锁2. 轻量级锁和重量级锁3. 自旋锁和挂起等待锁4. 互斥锁和读写锁5. 公平锁和非公平锁6. 可重入锁和非重入锁.7. synchronized锁CAS原子类自旋锁ABA问题synchronized 锁优化1. 锁升级/锁膨胀2. 锁消除3. 锁粗化Java.util.Concurrle(JUC)…

2048天创作纪念日

2048天创作纪念日 初心收获日常成就憧憬 初心 大一的时候,老师上课说可以通过浏览他人博客或者自己写博客来学习编程。从那以后,写博客这件事情就埋在了我心里,但是我一直没有什么内容想写。直到入选了ACM校队后,需要经常做大量的…

JS数组方法合集(含应用场景)

1.Array.push() 向数组的末尾添加一个或多个元素,并返回新的数组长度。原数组改变 const arr ["apple", "orange", "grape"]; const arr_length arr.push("banana");console.log("arr", arr, "arr_leng…

SpringCloud: sentinel链路限流

一、配置文件要增加 spring.cloud.sentinel.webContextUnify: false二、在要限流的业务方法上使用SentinelResource注解 package cn.edu.tju.service;import com.alibaba.csp.sentinel.annotation.SentinelResource; import com.alibaba.csp.sentinel.slots.block.BlockExcept…

全球剥离抗蚀液行业总体规模、主要厂商及IPO上市调研报告,2023-2029

报告摘要 根据本项目团队最新调研,预计2029年全球剥离抗蚀液产值达到 百万美元,2023-2029年期间年复合增长率CAGR为 %。 本文研究全球剥离抗蚀液总体规模,包括产量、产值、消费量、主要生产地区、主要生产商及市场份额,是一份详细…

vuex报错 Cannot destructure property ‘commit‘ of ‘undefined

在使用vuex中的模块是遇到了一个报错,这个报错的意思是解构一个未定义的对象时发生的。 经过排查发现是在另一个模块的actions中调用了当前模块actions中的方法,没有传任何值,所以无法结构出来commit方法 原代码 //user.js actions: { asy…

图像处理软件Photoshop 2023 mac新增功能 ps 2023中文版

​Photoshop 2023 mac是一款功能强大、易用且灵活的图像编辑软件,旨在满足专业设计师和摄影师的需求。无论您是处理照片、制作图形还是进行艺术创作,Photoshop 2023 都能为您提供丰富的工具和效果,帮助您实现创意想法。Photoshop还支持多种文…

nodejs+vue中学信息技术线上学习系统-计算机毕业设计

因此,将现代化的计算机技术、网络技术以及多媒体等技术相结合,开发基于互联网的自主学习平台,为学生提供良好的自主学习环境,方便学生能够网上学习,师生通过该平台可以进行课后交流。目 录 摘 要 I ABSTRACT II 目 录 …

vue2技能树(6)-事件处理和表单输入绑定

目录 Vue 2 事件处理详解监听事件项目示例 事件修饰符项目示例 内联事件处理项目示例 事件对象项目示例 事件修饰符项目示例 Vue 2 表单输入绑定详解双向数据绑定项目示例 单选框和复选框项目示例 下拉框项目示例 .lazy 修饰符项目示例 👍 点赞,你的认可…

Linux系统之passwd命令的基本使用

Linux系统之passwd命令的基本使用 一、passwd命令介绍1.1 passwd命令简介1.2 passwd命令起源 二、passwd命令的使用帮助2.1 passwd命令的help帮助信息2.2 passwd命令的语法解释 三、查看passwd相关文件3.1 查看用户相关文件3.2 查看组相关文件 四、passwd命令的基本使用4.1 设置…

零信任身份管理平台,构建下一代网络安全体系

随着数字化时代的到来,网络安全已成为企业和组织面临的一项重要挑战。传统的网络安全方法已经无法满足不断演变的威胁和技术环境。近期,中国信息通信研究院(简称“中国信通院”)发布了《零信任发展研究报告( 2023 年&a…

力扣每日一题48:旋转图像

题目描述: 给定一个 n n 的二维矩阵 matrix 表示一个图像。请你将图像顺时针旋转 90 度。 你必须在 原地 旋转图像,这意味着你需要直接修改输入的二维矩阵。请不要 使用另一个矩阵来旋转图像。 示例 1: 输入:matrix [[1,2,3],…

【前端】使用tesseract插件识别提取图片中的文字

前言 有时候项目需要识别证照信息,或者拍照搜索内容等。图片处理一般是后端处理比较好,不过前端也有相关插件处理,tesseract.js就是一种前端处理方案。 使用tesseract tesseract更多的语言模型:language配置 安装 Tesseract.…

Linux系统编程_进程间通信第2天: 共享内存(全双工)、信号(类似半双工)、信号量

1. 共享内存概述(433.10)(全双工) 2. 共享内存编程实现(434.11) 共享内存(Shared Memory),指两个或多个进程共享一个给定的存储区 特点 共享内存是最快的一种 IPC&…

Bootstrap的导航栏设计相关知识

Bootstrap的导航栏设计相关知识 目录 01-基础知识02-最基本的导航栏设计例子03-带下拉菜单的导航04-在导航栏中添加表单元素05-固定导航栏的位置(如固定到顶部和底部)06-设计导航栏的颜色和文本颜色 01-基础知识 导航栏是网页设计中不可缺少的部分,它是整个网站的…

Elasticsearch 8.9启动时构建接收Rest请求的hander过程源码

一、main方式入口二、Elasticsearch初始化第三阶段1、构造node节点对象时构造restController2、在node构建对象最后执行初始化RestHanders的操作 三、以注册在hander中的RestGetIndicesAction对象为例介绍1、继承了BaseRestHandler,routes方法做路由规则&#xff0c…

Qt作业九

1、思维导图 2、作业 widget.h #ifndef WIDGET_H #define WIDGET_H#include <QWidget> #include <QTimer> #include <QTime> #include <QTimerEvent> #include <QTextToSpeech>QT_BEGIN_NAMESPACE namespace Ui { class Widget; } QT_END_NAME…

Linux网络-UDP/TCP协议详解

Linux网络-UDP/TCP协议详解 2023/10/17 14:32:49 Linux网络-UDP/TCP协议详解 零、前言一、UDP协议二、TCP协议 1、应答机制2、序号机制3、超时重传机制4、连接管理机制 三次握手四次挥手5、理解CLOSE_WAIT状态6、理解TIME_WAIT状态7、流量控制8、滑动窗口 丢包问题9、拥塞控制…

数据库系统>并发控制

1.数据库系统架构设计知识 1.1练习题1 在数据库系统中&#xff0c;“事务”是访问数据库并可能更新各种数据项的一个程序执行单元。为了保证数据完整性&#xff0c;要求数据库系统维护事务的原子性、一致性、隔离性和持久性。针对事务的这4种特性&#xff0c;考虑以下的架构设…

Linux - 还不懂 gdb 调试器?(调试软件)

前言 当前&#xff0c;我们可以使用 make/makefile 来程序化执行代码文件&#xff1b;可以使用 gcc/g 等编译器来编译代码&#xff1b;可以使用 vim 编辑器来编写代码&#xff1b;其实在 Linux 当中还有一个工具&#xff0c;可以实现调试工作&#xff0c;这个工具就是 -- gdb。…