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

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

目录

    • 一、微服务架构的特点
    • 二、微服务接口类设计技巧
      • 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.xdnf.cn/news/16757.html

相关文章:

  • 循环神经网络RNN原理精讲,详细举例!
  • 【笔记】重学单片机(51)
  • 嵌入式硬件中瓷片电容的基本原理与详解
  • 51c自动驾驶~合集12
  • 图像处理中级篇 [2]—— 外观检查 / 伤痕模式的原理与优化设置方法
  • MELF电阻的原理,特性和应用
  • 8,FreeRTOS时间片调度
  • 技术速递|GitHub Copilot for Eclipse 迈出重要一步
  • Leetcode-206.反转链表
  • 当过滤条件不符合最左前缀时,如何有效利用索引? | OceanBase SQL 优化实践
  • 免费语音识别(ASR)服务深度指南​
  • 39.MySQL索引
  • 基于深度学习的医学图像分析:使用YOLOv5实现医学图像目标检测
  • react+ant design怎么样式穿透-tooltip怎么去掉箭头
  • 限流算法详解:固定窗口、滑动窗口、令牌桶与漏桶算法全面对比
  • 实现implements InitializingBean, DisposableBean 有什么用
  • 【2025/07/30】GitHub 今日热门项目
  • arkui 动画曲线
  • 分布式搜索和分析引擎Elasticsearch实战指南
  • SpringBoot 2.7.18 升级 3.4.6
  • duiLib 自定义资源目录
  • C#垃圾回收机制:原理与实践
  • 极致业务弹性 密度性能双管齐下—联想问天 WR5220 G5 服务器测试
  • Spring AI 海运管理应用第2部分
  • Android Animation Transitions:打造流畅的用户体验
  • 全栈:SSH和SSM和Springboot mybatisplus有什么区别?
  • WPFC#超市管理系统(3)商品管理
  • 如何判断一个数据库是不是出问题了?
  • 2025年6月电子学会青少年软件编程(C语言)等级考试试卷(二级)
  • SpringBoot学习 |springboot概念+微服务架构