当前位置: 首页 > 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.dtcms.com/a/308299.html

相关文章:

  • review|
  • Day15--二叉树--222. 完全二叉树的节点个数,110. 平衡二叉树,257. 二叉树的所有路径,404. 左叶子之和
  • 企业级部署 (基于tomcat与nginx)
  • 新书速览|R语言数据分析从入门到实践
  • Linux大页内存导致服务内存不足
  • Docker部署的PostgreSQL慢查询日志配置指南
  • 当文档包含图文混排表格时,如何结合大模型(如DeepSeek-VL)和OCR提取数据
  • 468. 验证IP地址
  • Ps2025
  • Python字典完全指南:从基础到实战(2025版)
  • 03 基于sklearn的机械学习-线性回归、损失函数及其推导
  • 大数据之Hive
  • MPU6050模块
  • 排序算法-选择排序(选择排序、堆排序)(动图演示)
  • 数据库Day04
  • 探索 Vue 3.6 新特性:Vapor Mode 与高性能 Web 应用开发
  • 【计算机网络】IP地址、子网掩码、网关、DNS、IPV6是什么含义?计算机中如何设置子网掩码与网关?
  • 大数据精准获客平台的破局之道:数据大集网的深度赋能
  • JavaEE初阶1.0
  • 【Unity】实现小地图
  • QT信号和槽怎么传输自己定义的数据结构
  • Redis哨兵模式搭建
  • 【普中STM32精灵开发攻略】--第 2 章 开发板功能及使用介绍
  • Qt C++实现KD树
  • BH1750模块
  • 上证50期权2400是什么意思?
  • 常见中间件漏洞
  • 腾讯云edge
  • 【SpringMVC】拦截器,实现小型登录验证
  • 对于前端工程化的理解