当前位置:首页 > 科技  > 软件

Serverless单体架构的崛起

来源: 责编: 时间:2023-12-11 09:29:06 328观看
导读在过去的几十年里,我们见证了应用架构以快速的速度演变。当我还是一个年轻的程序员时,开始编写一个简单的代码库,我们可以称之为单体应用。我记得为前端编写了一些HTML/CSS,后端用了一些Java。但后来,随着时代发展和需求改

在过去的几十年里,我们见证了应用架构以快速的速度演变。当我还是一个年轻的程序员时,开始编写一个简单的代码库,我们可以称之为单体应用。XgL28资讯网——每日最新资讯28at.com

我记得为前端编写了一些HTML/CSS,后端用了一些Java。但后来,随着时代发展和需求改变,分布式架构(我们现在称之为“微服务”)应运而生。XgL28资讯网——每日最新资讯28at.com

单体应用的衰落

这暂且不谈单体应用如何变得越来越不受欢迎,但需要开发者开始鼓吹微服务却是事实。XgL28资讯网——每日最新资讯28at.com

通常,微服务提供了以下好处:XgL28资讯网——每日最新资讯28at.com

  • 微服务更小,更容易维护。
  • 减少了团队之间的摩擦。每个团队可以独立地处理每个微服务。
  • 编写速度更快(不需要遵循现有且有时繁琐的架构)。
  • 团队使用最适合任务的工具(例如,处理大量JSON数据?也许可以使用Node.js。需要高性能?也许可以考虑Rust。只有Ruby开发者?那么Ruby似乎是解决方案)。
  • 减少认知负荷,这意味着每个开发者只需要了解代码的一个子集,而不是整个代码库。

关于微服务的误解

然而,经常或者有时,过度使用微服务也存在一些缺点:XgL28资讯网——每日最新资讯28at.com

  • 代码重复:一些代码(数据或函数)在多个仓库之间重复出现,这会导致共享库与单一仓库的分歧和争论。
  • 事务处理复杂:处理多个微服务之间的事务具有一定的挑战性,并需要额外的模式(Saga、事件溯源等)。
  • 增加认知负荷:取决于上下文的不同,可能会极大地增加认知负荷。每个开发人员不仅需要知道微服务能够做什么/应该做什么,还需要知道它可以/应该与哪些其他微服务进行通信。
  • 易受故障影响:在几乎所有的场景中,都更容易受到故障的影响:数据库连接、网络延迟、缓存、异常等。

但是,任何明智的开发者都会告诉你,对于任何架构选择,答案总是“看具体情况”。XgL28资讯网——每日最新资讯28at.com

单体与微服务的平衡

单体与微服务之争中,一个设计良好的、高度解耦的架构只需要处理最多四个不同的部分:XgL28资讯网——每日最新资讯28at.com

  • UI,也称为前端(front-end)
  • BFF,即面向前端的后台(Backend For Frontend),或者说是单一前端的后端(Backend for a Single Frontend, BSF)
  • 传统后端,充当前端和数据之间的粘合剂。称之为 BFD (Backend For Database) 或多BSF的后端。
  • 数据库,也称为数据库及其查询机制。

图片图片XgL28资讯网——每日最新资讯28at.com

完全解耦的微服务架构的表示XgL28资讯网——每日最新资讯28at.com

从熟悉的模式中,我们已经拥有合适的技术栈:XgL28资讯网——每日最新资讯28at.com

  • 前端框架(Angular、React、Vue、Svelte 等)
  • 使用适当技术的 BFF(简单的 REST API?node.js 中的 GraphQL 服务器?)
  • 一个传统的后端(暂且称之为BFD),再次使用适当的技术(另一个REST API?一个高性能的gRPC服务器?)
  • 最后是所需的最小数据库数量(关系数据库和/或文档数据库和/或图数据库和/或搜索引擎)

如果我们重视简单性,还有改进的空间。我们还应该商定需要技术栈的每个部分的比例:XgL28资讯网——每日最新资讯28at.com

  • 至少一个前端,但你可以无限扩展这个数字,无论是在编写微型前端、大量的 web 应用程序,还是两者兼而有之
  • 一个前端 = 一个 BFF,如果我们遵循逻辑
  • 一个传统的后端,你可以根据需要将其拆分成 N 个微服务。但是,如果我们使用单体架构,那就说 1 个吧。
  • 每个类型的数据库至少一个。假设我们需要 3 种类型的数据库来满足中等规模的应用程序。

图片图片XgL28资讯网——每日最新资讯28at.com

N = (2 * UI) + (1 * BFD) + (3 * DB)

正如俗话所说,“少即是多”,因此我们的目标是尝试将这个数字 (N) 减少到绝对最低。XgL28资讯网——每日最新资讯28at.com

进入Serverless单体架构时代

前端元框架的兴起

过去我们见证了一个令人难以置信的演变,那就是诞生了众多前端元框架。其中最著名的有 Next.js、Remix 和 SvelteKit。XgL28资讯网——每日最新资讯28at.com

一个元框架的目标是同时处理前端的前端和后端(是的,当你这样说的时候,这听起来并不聪明)。换句话说,这意味着使用单一技术构建 UI + BFF。XgL28资讯网——每日最新资讯28at.com

而且,由于如今的云和托管解决方案,我们可以轻松以无服务器模式部署元框架。XgL28资讯网——每日最新资讯28at.com

BFD和元框架单体架构BFD和元框架单体架构XgL28资讯网——每日最新资讯28at.com

N = META-FRAMEWORK + (1 * BFD) + (3 * DB)

从这里开始,我们为每个前端减少了 1 个技术!XgL28资讯网——每日最新资讯28at.com

Serverless数据库时代

目前,围绕数据库作为服务(DaaS)的解决方案或者说后端作为服务(BaaS)正在兴起。BaaS的目标是提供应用程序所需的所有功能,以便你无需在后端编写一行代码。你只需要在你的BFF中编写查询,就完成了。XgL28资讯网——每日最新资讯28at.com

最著名的BaaS无疑是Firebase,它提供了许多功能,如实时文档数据库、身份验证服务、数据库之上的权限机制、文件系统存储等等。XgL28资讯网——每日最新资讯28at.com

然而,Firebase也有一些严重的限制:XgL28资讯网——每日最新资讯28at.com

  • Firebase 数据库,无论是 Realtime 数据库还是 Firestore,都是单模型数据库(文档数据库)。
  • 它只能作为一个单向图进行遍历(如果我们可以将其视为图的话)。

还有另一个叫做Supabase的著名BaaS,试图与Firebase相媲美。使用类似PostgreSQL的关系型数据库消除了Firebase的一些限制,但它仍然是单模型数据库...XgL28资讯网——每日最新资讯28at.com

最近引起我注意的一个项目是SurrealDB。它是一个带有内置后端的数据库,具有许多许多功能(我觉得“许多”这个词写得还不够)。作为一个真正的多模型数据库,并且有一种新的查询语言,他们能够提供应该让你写一些代码的功能。XgL28资讯网——每日最新资讯28at.com

最近,这种类型的数据库被越来越广泛地称为元数据库。XgL28资讯网——每日最新资讯28at.com

完全单体架构完全单体架构XgL28资讯网——每日最新资讯28at.com

N = META-FRAMEWORK + META-DATABASE

从那里开始,我们在另一个层面上大大减少了技术数量。XgL28资讯网——每日最新资讯28at.com

附加内容:利用单一仓库架构

与微服务一样,编写单体应用意味着拥有正确的工具箱。这个工具箱可以解决我们通常遇到的约束,比如:XgL28资讯网——每日最新资讯28at.com

  • 太庞大以至于无法失败,一个简单的错误可能会导致整个服务崩溃。
  • 长时间部署,编译大型项目通常需要很长时间。
  • 无法跨团队隔离和共享的单一代码库。

使用这种架构,对纯净和全面的单体架构(前端 + 后端)的需求就不再存在。然而,元框架是超过 80% 的代码将驻留的部分。为此,现在有一些工具可以使用,例如 turborepo。XgL28资讯网——每日最新资讯28at.com

我们还没有提到的一个不可避免的需求是数据库脚本迁移。当然,这些脚本需要存储在单独的仓库中,没有什么复杂的。XgL28资讯网——每日最新资讯28at.com

本文链接:http://www.28at.com/showinfo-26-41720-0.htmlServerless单体架构的崛起

声明:本网页内容旨在传播知识,若有侵权等问题请及时与本网联系,我们将在第一时间删除处理。邮件:2376512515@qq.com

上一篇: 八个大幅提升开发效率的VS Code插件

下一篇: 全国首座百米超高层数据指挥中心竣工,集大数据、人工智能等于一体

标签:
  • 热门焦点
  • K60 Pro官方停产 第三方瞬间涨价

    虽然没有官方宣布,但Redmi的一些高管也已经透露了,Redmi K60 Pro已经停产且不会补货,这一切都是为了即将到来的K60 Ultra铺路,属于厂家的正常操作。但有意思的是该机在停产之后
  • iPhone卖不动了!苹果股价创年内最大日跌幅:市值一夜蒸发万亿元

    8月5日消息,今天凌晨美股三大指数高开低走集体收跌,道指跌0.41%;纳指跌0.36%;标普500指数跌0.52%。热门科技股也都变化极大,其中苹果报181.99美元,跌4.8%,创
  • Raft算法:保障分布式系统共识的稳健之道

    1. 什么是Raft算法?Raft 是英文”Reliable、Replicated、Redundant、And Fault-Tolerant”(“可靠、可复制、可冗余、可容错”)的首字母缩写。Raft算法是一种用于在分布式系统
  • 线程通讯的三种方法!通俗易懂

    线程通信是指多个线程之间通过某种机制进行协调和交互,例如,线程等待和通知机制就是线程通讯的主要手段之一。 在 Java 中,线程等待和通知的实现手段有以下几种方式:Object 类下
  • 摸鱼心法第一章——和配置文件说拜拜

    为了能摸鱼我们团队做了容器化,但是带来的问题是服务配置文件很麻烦,然后大家在群里进行了“亲切友好”的沟通图片图片图片图片对比就对比,简单对比下独立配置中心和k8s作为配
  • 一篇文章带你了解 CSS 属性选择器

    属性选择器对带有指定属性的 HTML 元素设置样式。可以为拥有指定属性的 HTML 元素设置样式,而不仅限于 class 和 id 属性。一、了解属性选择器CSS属性选择器提供了一种简单而
  • 大厂卷向扁平化

    来源:新熵作者丨南枝 编辑丨月见大厂职级不香了。俗话说,兵无常势,水无常形,互联网企业调整职级体系并不稀奇。7月13日,淘宝天猫集团启动了近年来最大的人力制度改革,目前已形成一
  • OPPO Reno10 Pro英雄联盟定制礼盒公布:萨勒芬妮同款配色梦幻十足

    5月24日,OPPO推出了全新的OPPO Reno 10系列,包含OPPO Reno10、OPPO Reno10 Pro和OPPO Reno10 Pro+三款新机,全系标配了超光影长焦镜头,是迄今为止拍照
  • 上海举办人工智能大会活动,建设人工智能新高地

    人工智能大会在上海浦江两岸隆重拉开帷幕,人工智能新技术、新产品、新应用、新理念集中亮相。8月30日晚,作为大会的特色活动之一的上海人工智能发展盛典人工
Top