我已经考虑过如何确保将特定密钥分发给池中的所有memcached服务器.
我当前未经测试的解决方案是创建另一个memcached实例,如下所示:
$cluster[] = array('host' => '192.168.1.1', 'port' => '11211', 'weight' => 50);
$this->tempMemcached = new Memcached;
$this->tempMemcached->addServers($cluster);
foreach ($this->cluster() as $cluster) {
$this->tempMemcached->setByKey($cluster, $key, $value, $this->compress, $expireTime);
}
$this->tempMemcache->close();
Run Code Online (Sandbox Code Playgroud)
在这种情况下,当某些密钥需要存储在所有服务器上以确保可靠性时,常识是什么?
我正在构建 WCF 路由器,而我的客户端使用可靠会话。在这种情况下,当客户端打开一个通道时,会发送一条消息(建立可靠会话?)。其内容如下:
<s:Envelope xmlns:s="http://www.w3.org/2003/05/soap-envelope" xmlns:a="http://www.w3.org/2005/08/addressing">
<s:Header>
<a:Action s:mustUnderstand="1">http://docs.oasis-open.org/ws-rx/wsrm/200702/CreateSequence</a:Action>
<a:MessageID>urn:uuid:1758f794-c5d3-4573-b252-7a07344cc257</a:MessageID>
<a:To s:mustUnderstand="1">http://localhost:8010/RouterService</a:To>
</s:Header>
<s:Body>
<CreateSequence xmlns="http://docs.oasis-open.org/ws-rx/wsrm/200702">
<AcksTo>
<a:Address>http://www.w3.org/2005/08/addressing/anonymous</a:Address>
</AcksTo>
<Offer>
<Identifier>urn:uuid:64a12658-71d9-4967-88ec-9bb0610f7ecb</Identifier>
<Endpoint>
<a:Address>http://www.w3.org/2005/08/addressing/anonymous</a:Address>
</Endpoint>
<IncompleteSequenceBehavior>DiscardFollowingFirstGap</IncompleteSequenceBehavior>
</Offer>
</CreateSequence>
</s:Body>
</s:Envelope>
Run Code Online (Sandbox Code Playgroud)
这里的问题是标头不包含我可以用来查找将消息路由到哪个服务的任何信息。在 Busatmante 的路由器示例代码中,她通过向端点添加标头来解决这个问题:
<client>
<endpoint address="http://localhost:8010/RouterService" binding="ws2007HttpBinding"
bindingConfiguration="wsHttp"
contract="localhost.IMessageManagerService" >
<headers>
<Route xmlns="http://www.thatindigogirl.com/samples/2008/01" >http://www.thatindigogirl.com/samples/2008/01/IMessageManagerService</Route>
</headers>
</endpoint>
</client>
Run Code Online (Sandbox Code Playgroud)
打开可靠会话时,消息包含此自定义标头。
<Route a:IsReferenceParameter="true" xmlns="http://www.thatindigogirl.com/samples/2008/01">http://www.thatindigogirl.com/samples/2008/01/IMessageManagerService</Route>
Run Code Online (Sandbox Code Playgroud)
这很棒; 但是,我需要以编程方式配置客户端。我认为 ChannelFactory 端点会有一个 Header 对象,我可以手动向其中添加自定义标头。不幸的是它没有。因此,我进行了一些搜索,并找到了一些通过实现 IClientMessageInspector 添加我的标头并将其作为行为添加到我的端点来扩展 WCF 的建议。
public class ContractNameMessageInspector : IClientMessageInspector {
private const string HEADER_NAME = "ContractName";
private readonly string _ContractName;
public ContractNameMessageInspector(string contractName) { …Run Code Online (Sandbox Code Playgroud) 在初始化脚本中,我想初始化PostgreSQL目录,但在此阶段不需要(也不想要)正在运行的PostgreSQL服务器.
如果我只是创建集群(作为用户postgres),这将是一个明智的做法:
initdb -D ...
Run Code Online (Sandbox Code Playgroud)
但是,我还需要创建PostgreSQL角色,创建数据库并添加一些扩展(也作为用户postgres):
createuser someuser
createdb -O someuser somedb
echo 'CREATE EXTENSION xyz;' | psql somedb
Run Code Online (Sandbox Code Playgroud)
后面的命令需要运行PostgreSQL服务器.所以整件事情变得非常混乱:
initdb -D ...
# Start PostgreSQL server in background
... &
# Wait in a loop until PostgreSQL server is up and running
while ! psql -f /dev/null template1; do
sleep 0.5
done
createuser someuser
createdb -O someuser somedb
echo 'CREATE EXTENSION xyz;' | psql somedb
# Kill PostgreSQL server
kill ...
# Wait until the …Run Code Online (Sandbox Code Playgroud) 例如,当我执行frozen = frozenset(('kay', 'snow queen')),然后tuple(frozen),我得到('kay', 'snow queen')。(何时/如何)是否有可能(如果有的话)以iter(frozen)不同的顺序生产物品?(何时/如何)将tuple(frozen)返回('snow queen', 'kay')?
我几乎一直在使用 Python 3,但我也对 Python 2 感到好奇。
虽然我在一定程度上理解 minAvailable 和 maxUnavailable 的使用,但我想知道为什么这两个选项似乎是另一个选项的补充时公开。
鉴于 PDB 是不可变的,很少对这些参数进行更改(通过重新部署 PDB)。
有什么我想在这里意识到的吗?
看看我在使用敏捷建造飞机的问题中的评论总趋势,除成本之外的最大问题似乎是安全性.
人们是否觉得使用敏捷建立一个安全系统(或证明它是安全的)是不可能的?并非所有的迭代测试都能缓解这个问题吗?使用敏捷开发的软件是否可能永远不会像瀑布那样可靠?
如果您正在编写一个大量使用网络的应用程序(例如ping,dns解析等),那么在代码中使用IP地址是否更好(例如,如果在服务器上创建文件夹路径 - //192.183.181.182/test/test1例如)或主机名?
我假设IP地址,因为它们在企业中往往是静态的,并且主机名可以在单个IP地址上具有别名等.这是偏好IP地址的正当理由吗?
谢谢
我有一个应用程序需要一个大约30个表的主目录,需要将其复制到应用程序的许多(100+)个从属副本.从站可能位于其自己的数据库实例中,或者在单个数据库实例中可能有多个从站.对主目录的任何更改都需要在合理的时间内(大约5分钟)复制到从属目录.我们的基础架构都是AWS EC2,我们使用MySQL.主服务器和从服务器都将驻留在单个AWS区域内.
我曾计划使用Master-Slave复制,但我看到有关MySQL复制的报告有时不可靠,我不确定这是由于特定实现中固有的失败还是MySQL本身的失败.我们需要一个高度自动化和可靠的系统,可能我们必须开发监控脚本,允许从站连续监控其相对于主站的目录.
任何观察?
AFAIK亚马逊AWS提供所谓的"区域"和"可用区域",以降低部分或完全数据中心中断的风险.看起来如果我在两个"区域"中有我的应用程序的副本,并且一个"区域"关闭,我的应用程序仍然可以继续工作,好像什么也没发生.
Windows Azure有类似的东西吗?如何使用Windows Azure解决数据中心灾难性中断的风险?
reliability ×9
agile ×1
azure ×1
c# ×1
cloud ×1
database ×1
dns ×1
header ×1
ip ×1
iterator ×1
kubernetes ×1
master-slave ×1
memcached ×1
monitoring ×1
mysql ×1
networking ×1
php ×1
postgresql ×1
python ×1
replication ×1
session ×1
set ×1
unit-testing ×1
wcf ×1