bff 项目基础知识

bff项目

一、bff

1. Back-end For Front-end: 服务于前端的后端
可以调用不同的系统的一个或者多个接口进行数据的聚合、过滤,而只向外部暴露一个接口即可

2.优点

  • 前后端彻底分离
  • 业务更向前靠拢,琐碎的api由前端开发自己决定
  • 留给后端更清晰的服务边界,只需要提供粗粒度的接口即可

3.缺点

  • 响应时间延迟(服务如果是内网之间访问,延迟时间较低)
  • 编写起来较为浪费时间(因为在基础服务上添加的一层转发,所以会多写一部分代码)
  • 业务异常处理(统一格式化业务异常的返回内容)

4.用到的依赖包
ioredis koa-body-parser koa-jwt jsonwebtoken pm2 dotenv dotenv-expand等

5.bff 项目目录分析

  • src
  1. config: 配置文件
  2. controller: 控制器目录,子文件统一输出一个对象,方法属性中参数为ctx
  3. curl: 请求器目录,子文件暴露一个基于 bff-frame中Curl类的子类,可以设置请求参数已经响应数据
  4. middleware: 中间件目录,子文件暴露一个函数,参数为(ctx,next) ,最后一定要调用next(),否则程序停止运行
  5. service: 服务器目录,子文件暴露一个继承bff-frame中的Service类(其中做了挂载ctx属性的处理)的子类router.js:路由文件,暴露一个函数,参数为app实例,并返回router列表
  • index.js: 文件入口

6.实践应用

  • 访问控制
    例如,服务中的权限控制,将所有服务中的权限控制集中在 BFF 层,使下层服务更加纯粹和独立。

  • 应用缓存
    项目中时常存在一些需要缓存的临时数据,此时 BFF 作为业务的汇聚点,距离用户请求最近,遂将该缓存操作放在 BFF 层。

  • 第三方入口
    在业务中需要与第三交互时,将该交互放在 BFF 层,这样可以只暴露必要信息给第三方,从而便于控制第三方的访问。

二、Redis

Redis 是一个基于内存的高性能key-value非关系型数据库。也是基于内存运行支持持久化的NoSQL数据库,也称为数据结构服务器。

由于 Redis 的所有操作都是在内存中执行的,所以它的执行速度非常快。既然说到在内存执行,有的同学肯定会想到如果机房断电或者故障导致数据丢失怎么办,这方面作者已经想到了,Redis 会通过快照和日志的形式保存到硬盘上,进行持久化。

简单来说 redis 就是一个数据库,不过与传统数据库不同的是 redis 的数据是存在内存中的,所以存写速度非常快,因此 redis 被广泛应用于缓存方向

redis 也经常用来做分布式锁。redis 提供了多种数据类型来支持不同的业务场景。除此之外,redis 支持事务 、持久化、LUA脚本、LRU驱动事件、多种集群方案。

优点

  • 速度快:因为数据存在内存中,
  • 支持丰富数据类型,支持string(字符串),list(列表),Set(集合)、Sorted Set(有序集合)、Hash(哈希)

缺点

  • 数据库容量受到物理内存的限制, 不能用作海量数据的高性能读写, 因此Redis适合的场景主要局限在较小数据量的高性能操作和运算上

Guess you like

Origin blog.csdn.net/xiamoziqian/article/details/121222658