云服务器价格_云数据库_云主机【优惠】最新活动-搜集站云资讯

华为云_剑灵服务器列表_速度快

小七 141 0

京都大亨与PostgreSQL整合

Postgres会见京都大亨

CloudFlare在全球23个数据中心拥有存在点(PoPs),并计划很快扩展到更多。它也只有一个入口,CloudFlare.com网站,网站所有者与系统交互。这就产生了一个巨大的配置传播问题。任何时候登录CloudFlare.com网站打开一个功能,应用程序,或者更新一个DNS记录,你就可以创建一个我们称之为新规则的东西。每当请求到达PoP时,我们的DNS和web服务器使用这些规则来确定如何响应。复制规则当你制定一个新规则时,你希望这个规则在任何地方都能立即生效。此外,您希望CloudFlare遵守创建时间顺序。例如,如果你打开一个应用然后又关闭,你需要保证最终状态是关闭而不是打开。为了让事情更有趣,CloudFlare在峰值时间每秒可以看到数千条这样的规则。为了解决这个问题,CloudFlare使用了两种技术。第一个是PostgreSQL,是一个经典的SQL数据库引擎。它的力量CloudFlare.com网站. 无论何时创建规则,在后端,此逻辑都会插入到面向行的表中。第二个,京都大亨或KT,是一个分布式密钥存储。主数据中心的一个主实例被复制到我们所有的pop中。这意味着插入主位置的任何键/值对在世界上的任何地方都是可读的。基于时间戳的复制可确保最终的一致性并保证排序。实际上,我们看到在正常情况下,完全传播的延迟最多为3秒左右。不过,诀窍在于将数据从PostgreSQL转移到京都大亨手中。博士后的规则协调PostgreSQL和KT的过程一直是一个有点痛苦的过程。目前,它是通过一个自制的脚本系统来完成的,该系统定期读取数据库并执行必要的操作来协调这两个系统。这种方法远不是最优的,因为它给系统引入了人为的滞后,以及调节所需的额外复杂性和逻辑性。FDW FTW公司不过,多亏了postgresql9.3新的可写外部数据包装器(FDW),这一切都将改变。PostgreSQL的FDW是一种在数据库中集成外部数据源的方法。对于PostgreSQL用户,FDW数据源显示为任何其他数据库表,而与外部数据源通信并将数据转换为表的逻辑由FDW处理。在9.3版之前,FDW是只读的,没有导出数据的能力。但是现在,PostgreSQL可以写入外部数据源。通过为京都大亨做一个FDW,我们允许KT中的数据被表示为一个数据库表。这就允许我们使用数据库触发器来执行与KT的数据同步,既降低了延迟,又简化了数据同步的逻辑。另外,我们还将PostgreSQL事务转换为KT事务。这意味着PostgreSQL的所有ACID保证都被导出到KT,允许您使用熟悉的SQL命令BEGIN、COMMIT和ROLLBACK在KT上执行事务操作。你自己试试吧我们认为这种集成非常有用,因此我们决定开放FDW代码的源代码,并在https://github.com/cloudflare/kt_fdw。用法非常简单。安装KT FDW后,只需运行:创建服务器外部数据包装kt_fdw选项(主机"127.0.0.1",端口"1978",超时"-1");(以上选项为默认选项)为公共服务器kt_SERVER创建用户映射;创建外部表(键文本,值文本)SERVER;现在您可以从这个表中选择、插入、更新和删除。这些命令将在KT服务器上执行相应的操作。作为第一批使用新的可写API for PostgreSQL的fdw之一,我们希望这段代码能被其他希望插入任何替代存储引擎的人使用。