【架构篇】Supabase的Postgrest组件架构介绍

基本架构

Postgrest是Supabase软件架构中的核心组件,是Supabase采用的所有开源组件中历史最悠久的一个,2014年就发布了第一个版本,到今天已经有9年的历史了。在Supabase出现之前,Postgrest已经被广泛应用于各种场景,是一个非常便捷的PostgreSQL应用开发中间件。

Postgrest架构非常简洁,全部使用Haskell开发,采用Haskell的Warp作为HTTP Server,Haskell的Hasql作为数据库连接池。除了深度依赖PostgreSQL数据库外,没有引入其他外部依赖,一个单体应用就可以完成部署。Postgrest是无状态的,因此支持增加更多的节点来实现横向扩展。

下面是Postgrest的架构图:

Postgrest是用Haskell编写的,是比较冷门的编程语言,这也是目前制约Postgrest发展的最主要的因素,要找到合适的维护人员比较困难。甚至因为这个原因,出现了一个使用Golang开发的prest(https://github.com/prest/prest)项目。

Postgrest使用Haskell的Warp作为其HTTP Server,Warp是一个高性能的web server,这里有一个很古老的性能对比文章(https://www.yesodweb.com/blog/2011/03/preliminary-warp-cross-language-benchmarks),展示了Warp在相同硬件下处理http请求的性能对比,从数值上来看,还是非常厉害的:

Hasql是Haskell的数据库连接池。众所周知,到目前为止(Postgres 16),PostgreSQL的连接是多进程模型,每个数据库连接都会启动一个pg进程,消耗一定数量的CPU和内存资源,因此PostgreSQL的连接数通常都是需要进行限制的。对于高并发的Web应用场景,就需要采用数据库连接池的方案,来复用数据库连接。

PostgREST核心解决哪些问题

对于大多数Web应用程序,通常就是前端 + 后端 + 数据库的模式,而后端的主要工作就是对数据库进行CRUD,久而久之,开发者就不禁会想,对于这种业务场景,能不能直接在前端对数据库进行CRUD操作呢?这就是PostgREST的核心出发点。为了解决这个核心需求,衍生出来的一些其他的基本需求,包括用户认证授权、高并发等,因此PostgREST提供了如下一些内置的能力:

  • 用户认证授权

    </
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值