当前位置: 首页 > news >正文

微服务架构技巧篇——接口类设计技巧

目录

    • 一、微服务架构的特点
    • 二、微服务接口类设计技巧
      • 2.1、BFF(Backend For Frontend)
        • 2.1.1、 服务分布式带来的第一个挑战导致的几个典型问题
        • 2.1.2、什么是 BFF
        • 2.1.3、BFF 应用场景
        • 2.1.4、BFF 落地经验
          • 2.1.4.1、前端负责 BFF 开发优缺点
          • 2.1.4.2、后端负责 BFF 开发优缺点
        • 2.1.5、什么时候用 BFF 来提供接口,什么时候直接访问微服务
      • 2.2、GraphQL
        • 2.2.1、GraphQL 的概述
        • 2.2.2、GraphQL 的基本原理
      • 2.3、接口循环调用

本文来源:极客时间vip课程笔记

一、微服务架构的特点

  • 服务分布式

    原本由单体或者 SOA 系统提供的功能,现在由多个微服务来提供,不同微服务提供不同的功能。

  • 数据分布式

    原本由大一统的存储系统(主要是关系数据库 RDBMS)存储的数据,现在分散存储在多个独立的存储系统上,不同微服务可以根据数据特性,采用不同的存储系统。

二、微服务接口类设计技巧

2.1、BFF(Backend For Frontend)

2.1.1、 服务分布式带来的第一个挑战导致的几个典型问题
  • 服务分布式带来的第一个挑战,就是前端(广义上的前端,含 App/H5/ 桌面客户端等,下同)原来可能只需要一个接口请求就能完成的功能,现在需要多次请求多个微服务不同的接口,尤其是一些复杂的页面,需要请求的后端接口会更多。这就导致了几个典型问题的出现。

  • 第一个是请求性能问题。

    这里的性能问题其实不是单个微服务接口处理的性能,而是前端和服务端来回请求的网络消耗。当一个页面需要请求多个接口获取后端数据的时候,即便能够并行发送多个请求,由于网络尤其是移动端网络的不稳定性,如果其中一个或几个请求访问慢的话,整个页面就可能会加载缓慢,从而影响用户体验。

  • 第二个是网络带宽问题。

    虽然单个微服务接口请求的数据可能不大,但是由于网络传输协议本身也需要占用不少字节空间(例如 HTTP 请求 header),大量的小请求会导致机房入口带宽大大增加,从而增加企业网络带宽成本。

  • 第三个是前端开发成本问题。

    前端需要理解和对接多个后端微服务,开发工作量、联调工作量都会增加不少。尤其是后端微服务经过演变,提供了多个版本接口时,多版本接口的选择和适配会给前端开发人员带来较大的理解和开发负担。

2.1.2、什么是 BFF
  • BFF 技术就是应对上述挑战的接口技术方案,全称是 Backend For Frontend,中文一般翻译为“前端专属后端”或“服务前端的后端”。
    在这里插入图片描述

  • 结合上图,接口访问基本逻辑如下。

    当用户访问一个普通不复

http://www.lryc.cn/news/605714.html

相关文章:

  • 智能交通顶刊TITS论文分享|跨区域自适应车辆轨迹预测:TRACER框架攻克域偏移难题!
  • PageOffice实现文档并发控制
  • 2025年人形机器人动捕技术研讨会将在本周四召开
  • JVM面试通关指南:内存区域、类加载器、双亲委派与GC算法全解析
  • 暑期算法训练.11
  • wpf之ControlTemplate
  • RabbitMQ 消费者确认 (Ack/Nack) (With Spring Boot)
  • HUD抬头显示器-杂散光测试设备 太阳光模拟器
  • FastGPT + Kymo AI生态创新平台,搭建企业智能化知识管理
  • TTS语音合成|GPT-SoVITS语音合成服务器部署,实现http访问
  • 自动驾驶控制算法——PID算法
  • Linux进程创建,终止与等待
  • 运作管理学习笔记1-运作管理基础
  • Docker 初学者需要了解的几个知识点 (五):建容器需要进一步了解的概念
  • 蓝牙 BR/EDR 与 BLE PHY
  • c# net6.0+ 安装中文智能提示
  • JSX语法
  • LPC2132GPIO
  • elk部署加日志收集
  • mac环境配置rust
  • CentOS 7 上使用 Docker 安装 Jenkins 完整教程
  • 【数据结构初阶】--二叉树选择题专辑
  • 佳维视工业显示器在除尘与过滤设备中的应用
  • 操作系统系统面试常问(内存、快表、相关知识)
  • 关于npm前端项目编译时栈溢出 Maximum call stack size exceeded的处理方案
  • 专业鼠标点击器,自定义间隔次数
  • NPM打包时,报reason: getaddrinfo ENOTFOUND registry.nlark.com
  • 从Excel到工时管理系统:企业如何选择更高效的工时记录工具?
  • Verilog实现RPC从机(配合AXI_Slave使用)
  • 金融专题|某跨境支付机构:以榫卯企业云平台 VPC 功能保障业务主体安全