十二要素应用的后端默认配置是将其(网络)位置放在环境变量中,例如DB=mysql://user:pw@host/db_name。
但是,如果您的后端配置更具动态性,推荐的方式是什么?在我的例子中,应用程序可以使用1到n个后端,具体取决于环境。我的想法是使用像JSON这样的序列化格式,并将其放在一个变量中,例如
DB="{1: 'host:port', 2: 'host:port'}"这是处理这种情况的更好的方法,还是有更好的替代方案?
发布于 2014-01-21 08:06:01
我不知道这是否是“首选”方法,但我认为它会起作用。
您将希望为未来的开发人员记录这种特性,并可能在这种不寻常的设置中添加一些指向错误配置的详细错误/日志记录。例如,如果您只想指定一个数据库,那么无论如何都需要以准JSON样式指定它。
不过,我认为更重要的是在您的服务器之间建立一个中间负载均衡器。这样,您的应用程序可以连接到负载均衡器或单个服务器,而对底层服务的性质几乎没有透明度。
因此,不是:
SetEnv DB {mysql://something@somewhere, mysql://something@somewhereelse}你就会有
SetEnv DB mysql://something@load-balancer负载均衡器在幕后处理多个数据库。
您还可以有一个2-db系统,一个用于读取,另一个用于写入。读操作可以是负载均衡的,并复制master-server。
SetEnv READ_DB mysql://something@load-balancer
SetEnv WRITE_DB mysql://something@master-server然后,在测试情况下,它们将使用相同的连接字符串:
SetEnv READ_DB mysql://something@load-balancer
SetEnv WRITE_DB $READ_DB # not sure about syntax herehttps://stackoverflow.com/questions/19117952
复制相似问题