适合这手机浏览器主页的网站,新华网官网首页,如何在360网页上做公司网站,wordpress添加音乐播放器Supadase是开源的。我们选择可扩展的开源工具#xff0c;使其易于使用。
Supadase不是Firebase的1对1映射。虽然我们正在构建Firebase提供的许多功能#xff0c;但我们不会以同样的方式进行#xff1a;
我们的技术选择大不相同#xff1b;我们使用的一切都是开源的#…Supadase是开源的。我们选择可扩展的开源工具使其易于使用。
Supadase不是Firebase的1对1映射。虽然我们正在构建Firebase提供的许多功能但我们不会以同样的方式进行
我们的技术选择大不相同我们使用的一切都是开源的在任何可能的情况下我们都使用和支持现有的工具而不是从头开始开发。
最值得注意的是我们使用Postgres而不是NoSQL存储。这个选择是经过深思熟虑的。我们相信没有其他数据库能够提供与Firebase竞争所需的功能同时保持超越Firebase所需的可扩展性。
选择您的舒适度#
我们在Suabase的目标是让所有的Postgres都易于使用。这并不意味着你必须使用所有的工具。如果你是一名研究生你可能会喜欢我们提供的工具。如果你以前从未使用过Postgres那就从小规模开始慢慢发展。如果你只想把Postgres当作一个简单的表存储那就太好了。
架构#
每个Subabase项目都由几个工具组成 PostgreSQL (Database)#
PostgreSQL是Suabase的核心。我们不抽象PostgreSQL数据库——您可以访问它并以完全权限使用它。我们只是提供一些工具使PostgreSQL像Firebase一样易于使用。
Official Docs: postgresql.org/docsSource code: github.com/postgres/postgres (mirror)License: PostgreSQL LicenceLanguage: C
Studio (Dashboard)#
用于管理数据库和服务的开源仪表板。
Official Docs: Supabase docsSource code: github.com/supabase/supabaseLicense: Apache 2Language: TypeScript
GoTrue (Auth)#
基于JWT的API用于管理用户和发布访问令牌。这集成了PostgreSQL的行级安全和API服务器。
Official Docs: Supabase Auth reference docsSource code: github.com/supabase/gotrueLicense: MITLanguage: Go
PostgREST (API)#
一个独立的web服务器可以将PostgreSQL数据库直接转换为RESTful API。我们将其与pg_graphql扩展一起使用以提供graphql API。
Official Docs: postgrest.orgSource code: github.com/PostgREST/postgrestLicense: MITLanguage: Haskell
Realtime (API multiplayer)#
一个可扩展的websocket引擎用于管理用户状态、广播消息和流式数据库更改。
Official Docs: Supabase Realtime docsSource code: github.com/supabase/realtimeLicense: Apache 2Language: Elixir
Storage API (large file storage)#
一个S3兼容的对象存储服务将元数据存储在Postgres中。
Official Docs: Supabase Storage reference docsSource code: github.com/supabase/storage-apiLicense: Apache 2.0Language: NodeJS / TypeScript
Deno (Edge Functions)#
JavaScript和TypeScript的现代运行时。
Official Docs: deno.landSource code: github.com/denoland/denoLicense: MITLanguage: TypeScript / Rust
postgres-meta (Database management)#
一个RESTful API用于管理您的postgres。获取表、添加角色和运行查询。
Official Docs: supabase.github.io/postgres-metaSource code: github.com/supabase/postgres-metaLicense: Apache 2.0Language: NodeJS / TypeScript
PgBouncer#
PostgreSQL的轻量级连接池。当使用无服务器函数时这对于连接到Postgres非常有用。
Official Docs: pgbouncer.orgSource code: pgbouncer/pgbouncerLicense: ISCLanguage: C
Kong (API Gateway)#
一个云原生的API网关建立在Nginx之上。
Official Docs: docs.konghq.comSource code: github.com/kong/kongLicense: Apache 2.0Language: Lua
产品原理#
我们的目标是提供一个任何大型公司都会为自己设计的体系结构然后围绕该体系结构提供易于独立开发人员和小型团队使用的工具。
我们使用一系列原则来确保可扩展性和可用性永远不会相互排斥
一切都是孤立的#
每个系统都必须作为一个独立的工具尽可能少地使用移动部件。对此的试金石是“用户能在只有Postgres数据库的情况下运行这个产品吗”
一切都是一体化的#
苏巴斯是可堆肥的。尽管每个产品都是孤立工作的但平台上的每个产品都需要是其他产品的10倍。对于集成每个工具都应该公开一个API和Webhook。
一切都是可扩展的#
我们正在考虑添加一个新工具而更倾向于扩展现有工具。这与许多云提供商的产品扩展到利基用例正好相反。我们为开发人员提供原语使他们能够实现任何目标。少但更好。
一切都是便携的#
为了避免锁定我们使迁移进出变得容易。我们的云产品与我们的自托管产品兼容。我们使用现有的标准来提高可移植性如pg_dump和CSV文件。如果出现了一个与“Subasse”方法相竞争的新标准我们将反对该方法而支持该标准。这迫使我们在经验上竞争。我们的目标是成为最好的Postgres托管服务。
关注长期
我们牺牲短期胜利换取长期收益。例如运行一个Postgres的分支它具有只有我们的客户需要的额外功能这是很诱人的。相反我们更愿意支持上游缺失功能的努力从而使整个社区受益。这还有确保便携性和使用寿命的额外好处。
为开发人员构建#
“开发人员”是一个特定的用户档案他们是建设者。当将影响作为工作的函数进行评估时由于开发人员可以构建的产品和系统的类型他们有很大的效率。随着开发人员的配置文件随着时间的推移而变化Suabase将继续开发产品以适应这种不断发展的配置文件。
支持现有工具#
Suabase尽可能支持现有的工具和社区。Suabase更像是一个“社区社区”——每个工具通常都有自己的社区供我们使用。开源是我们合作的方式我们雇佣维护人员赞助项目投资业务并开发我们自己的开源工具。
文章链接
【PaaS】Supabase架构 | 程序员云开发,云时代的程序员.
欢迎收藏【架构师酒馆】和【开发者开聊】