直接基于开源的PG,我估计是不行。
因为你的诉求是多地多活都可以写。而PG本身是主从模式基于redo log同步,备机要回放日志,只能读不能写。
数据库要做到多活,有几个问题要解决。
首先是数据共享,两边PG看到的数据必须是同一份,才能避免数据之间的差异。这个问题只要把数据放在共享存储,基于共享存储做个同城数据双活就解决了。
第二个问题就是数据共享之后,多个数据库实例要能修改访问同一份数据,这个问题其实也有解决办法,就是对同一个库或者一个表,始终只有一个人写就行,这个估计改一些中间件也能做到。
第三个问题,是读写一致性,这个就有点麻烦了,因为必须要保证缓存和视图的一致,也就是集群级MVCC。这个东西估计不动内核不太可能从外围解决。
我们目前倒是针对MySQL有个方案,我发过一篇文章《怎样才是分布式数据库存算分离的正确姿势》里面最后的那个架构是能满足要求的,只可惜这个目前是对MySQL的。