暂无图片
暂无图片
1
暂无图片
暂无图片
暂无图片

Neon database概述

原创 chirpyli 2023-10-23
1892

Neon, Serverless Postgres。 可以认为是一款云原生PostgreSQL数据库。计算存储分离架构。

架构上,可分为计算节点(PostgreSQL)和存储引擎(Neon)。存储主要包含2部分:

  • PageServer: 计算节点的弹性存储后端
  • Safekeepers: Safekeepers组成一个WAL服务,接收计算节点的WAL日志,在被PageServer处理前以及上传到云存储前持久化存储。

计算节点

计算节点改动很少,具体改动点可参考Postgres core changes。负责解析用户输入的SQL,生成WAL日志,返回给用户计算结果。

Pageserver

这块是Neon的实现重点之一。功能点如下:

  • 存储和管理页数据
  • 响应计算节点的读页请求,GetPage@LSN
  • 从WAL serice接收WAL日志并解析
  • 回放WAL日志

WAL Service

计算存储分离架构,计算节点生成WAL日志,存储层回放WAL日志更新数据页。中间并不是计算节点之间发送WAL日志到存储层,而是先将WAL日志发送到 WAL Service,负责持久化和多副本高可靠。Pageserver再从WAL Service中消费WAL日志。

``` +--------------+ +------------------+ | | WAL | | | Compute node | ----------> | WAL Service | | | | | +--------------+ +------------------+ | | | WAL | | V +--------------+ | | | Pageservers | | | +--------------+ ```

WAL service由多个safekeepers构成,每个safekeepers拥有一份WAL日志拷贝,由Paxos算法保证一致性。

``` +-------------------------------------------+ | WAL Service | | | | | | +------------+ | | | safekeeper | | | +------------+ | | | | +------------+ | | | safekeeper | | | +------------+ | | | | +------------+ | | | safekeeper | | | +------------+ | | | +-------------------------------------------+ ```

主节点连接到WAL safekeepers,作为发送方。对此,需要在Postgres计算主节点新增一个wal proposer工作进程负责发送WAL日志,接收方是safekeeper。

Page Server连接WAL safekeeper,使用与PG主备流复制相同的协议。所以,你也可以直接连接Postgres主节点用于测试。

在生成环境部署上,一般将多个safekeeper节点部署到不同的节点上。更多可参考WAL proposer-safekeeper communication consensus protocol.

Proxy

Postgres协议代理/路由。 可接受psql的连接请求,并认证检查。更多可参考Proxy


参考文档:
云原生存算分离数据库Neon的架构决策

最后修改时间:2023-11-02 15:51:52
「喜欢这篇文章,您的关注和赞赏是给作者最好的鼓励」
关注作者
【版权声明】本文为墨天轮用户原创内容,转载时必须标注文章的来源(墨天轮),文章链接,文章作者等基本信息,否则作者和墨天轮有权追究责任。如果您发现墨天轮中有涉嫌抄袭或者侵权的内容,欢迎发送邮件至:contact@modb.pro进行举报,并提供相关证据,一经查实,墨天轮将立刻删除相关内容。

评论