我在us-east-2区域的AWS EC2上运行DSE Cassandra 4.8.14和3节点集群。 我将我的cassandra.yaml设置为:
<DataContract(Name:="Class1", Namespace:="http://www.example.com/my/app")> _
Public Class Class1
<DataMember> _
Public Property Test
End Class
<DataContract(Name:="Class2{0}", Namespace:="http://www.example.com/my/app")>
Public Class Class2(Of ReturnType)
<DataMember> _
Public Property Test As String
<DataMember()> _
Public Property Items() As ReturnType()
End Class
我的cassandra-rackdc.properties如下:
<ServiceContract(Name:="Service")> _
Public Interface IService
<OperationContract()> _
Function GetStuff() As Class2(Of Class1)
End Interface
使用此设置,根据DSE documentation,我应该将我的数据中心名称视为
<DataContract(Namespace:="http://www.example.com/my/app")>
Public Class Class1
Inherits [Shared].Entities.Class1
End Class
但是,在mt系统中它显示为 us-east-2-2
<?xml version="1.0"?>
<configuration>
<system.serviceModel>
<diagnostics>
<messageLogging logEntireMessage="true" logMalformedMessages="true" logMessagesAtTransportLevel="true"/>
<endToEndTracing propagateActivity="true" activityTracing="true" messageFlowTracing="true"/>
</diagnostics>
<serviceHostingEnvironment aspNetCompatibilityEnabled="false"/>
<bindings/>
<services>
<service behaviorConfiguration="MyServ" name="WcfService1.Service">
<endpoint binding="netTcpBinding" bindingConfiguration="" contract="WcfService1.IService" />
<endpoint address="mex" binding="mexTcpBinding" bindingConfiguration=""
contract="IMetadataExchange" />
<host>
<baseAddresses>
<add baseAddress="net.tcp://localhost/service/" />
</baseAddresses>
</host>
</service>
</services>
<behaviors>
<serviceBehaviors>
<behavior name="MyServ">
<serviceMetadata httpGetEnabled="false" />
<serviceDebug includeExceptionDetailInFaults="true" />
<dataContractSerializer maxItemsInObjectGraph="2147483647" />
</behavior>
</serviceBehaviors>
</behaviors>
有人可以提供一些我在这里缺少的想法吗?
感谢。
答案 0 :(得分:0)
确定数据中心名称的代码比文档中描述的内容稍微有些细微差别。
如果EC2区域以1
结尾,如us-east-1
,则数据中心名称为us-east
。但是,如果EC2区域未在1
中结束,就像您使用us-east-2
的情况一样,那么它将使用整个区域名称作为数据中心名称。添加-2
的 dc_suffix ,数据中心名称将变为us-east-2-2
。
为什么命名如此不一致?很久以前有一个错误导致某些地区拥有相同的数据中心名称。例如,us-east-1
和us-east-2
都是us-east
。为了解决这个问题,提交者决定只保留那些以1结尾的区域来使用旧的数据中心名称,以便使用旧版本的小报告与现有的群集保持向后兼容。
CASSANDRA-7839的开放是为了标准化Ec2Snitch的命名约定,但它看起来还没有取得进展。
来源: