擅长:python、mysql、java
<p>如果您感兴趣的是数据库连接信息,我最近为此编写了一个服务。每个进程在配置中都设置了令牌,并使用这些令牌来查询服务中的db连接信息。数据层使用该信息创建连接,不存储DSN。在服务器端,您只需维护一个token->;DSN映射的字典。在</p>
<p>您可以按照bpgergo的建议进行连接池,但仍应包括身份验证或标识方法。这样,如果有网络入侵,恶意客户端可能无法模拟其中一个客户端。在</p>
<p>服务实现分为几个部分:</p>
<ul>
<li>支持<code>http://192.168.1.100/getConnection?token=mytokenstring</code>形式调用的RESTful服务</li>
<li>一种存储映射的键值存储系统,如<code>{'mytokenstring': {'dbname': 'db', 'ip': '192.168.1.101', 'user': 'dbuser', 'password': 'password', ..}</code>
<ul>
<li>这个系统不应该在前端网络上,但是如果你的web层被破坏了,这种方法不会给你的数据库带来任何保护。在</li>
</ul></li>
<li>一种db对象,在实例化时,使用适当的令牌检索dsn并创建新的db连接。
<ul>
<li>如果可以的话,应该在页面响应的其余部分重用此连接对象。服务的响应时间会很快,但是数据库连接需要更多的开销。在</li>
</ul></li>
</ul>
<p>一旦实现,在令牌后面切换dsn信息时,需要小心处理模式不兼容问题。您可以通过将令牌固定到用户会话等来解决此问题</p>