Table of Contents |
---|
minLevel | 3 |
---|
outline | true |
---|
style | none |
---|
|
Cluster Terminology
This topic introduces some of the concepts unique to the cluster creation and communication feature of A-Stack.
Terminology | Description | Synonym Terms |
---|
Network | A collection of A-Stack running instances that communicates (notifications) and keep persistent data store in sync. | Cluster, Clustering |
Peer | A-Stack running instance that is participating in forming a Network |
|
Node | A-Stack running instance | Peer if participating in forming a network. |
Group | Logical Name defined to make communication type between a collection of Nodes |
|
Advertise | Send Notifications to peer or group |
|
Replicate | Replication of data (TQL Storage) between nodes or a group of nodes |
|
...
Code Block |
---|
language | xml |
---|
theme | Emacs |
---|
title | SffNetworkFacet Capabilitywith AMQP Transport |
---|
linenumbers | true |
---|
|
<NewFacetInstance Name="wsNotificationCluster" Type="SffNetworkFacet" Context="new" fid="wsNotificationCluster">
<OnActivate>
<ImportFacet>[:RuntimeParams.MacroFacetID:]</ImportFacet>
<SetLocalData Key="fed">
<Value>
<Server Id="[:RuntimeParams.ClusterName:]_Server1" Host="bkhan" Port="8082"/>
<Server Id="[:RuntimeParams.ClusterName:]_Server2" Host="bkhan" Port="8083"/>
<Server Id="[:RuntimeParams.ClusterName:]_Server3" Host="bkhan" Port="8084"/>
<Server Id="[:RuntimeParams.ClusterName:]_Server4" Host="bkhan" Port="8085"/>
</Value>
</SetLocalData>
<For Each="server" From="$LocalData.fed" In="Server">
<AddProcessData Key="DeviceEngines.DeviceEngine">
<Value>
<Name>[:$LocalData.server.Id:]</Name>
<URL>ws://[:$LocalData.server.Host:]:[:$LocalData.server.Port:]/fid-wsNotificationCluster</URL>
<AdvertiseTo>[:RuntimeParams.ClusterName:]</AdvertiseTo>
<Group>[:RuntimeParams.ClusterName:]</Group>
</Value>
</AddProcessData>
</For>
<Log Level="INFO" Message="TQLNotificationCluster : Federation AdvertiseTo servers [:$ProcessData.DeviceEngines:]"/>
<Process>
<Network>
<OnPeerError>
<Log Level="error" Message="TQLNotificationCluster : Peer [:$ContextData.$Peer.Key:] error: [:$Error:]"/>
</OnPeerError>
<Namespace Name="AMQPCluster">
<Include>$ProcessData.DeviceEngines</Include>
</Namespace>
<Group name="[:RuntimeParams.ClusterName:]" UserName="tql" Password="tql12345"
VirtualHost="/" Durability="true"
Host="mqtt.atomiton.com" Port="5672"
ExchangeName="AtomitonFanoutExchange"
ExchangeType="fanout" QueueName="peer.[:PeerQName:]">
<Send post="amqp://?ClientType=publisher&
UserName=[:UserName:]&
Password=[:Password:]&
VirtualHost=[:VirtualHost:]&
HostName=[:Host:]&
PortNumber=[:Port:]&
ExchangeName=[:ExchangeName:]&
ExchangeType=[:ExchangeType:]&
QueueName=[:QueueName:]&
Durability=[:Durability:]">
<RoutingKey>cluster.[:QName:]</RoutingKey>
<Template>
<Message>
<Value>
<PublishMessage>[:$Request.Message.Value:]</PublishMessage>
</Value>
</Message>
</Template>
</Send>
<Receive get="amqp://?ClientType=subscriber&
UserName=[:UserName:]&
Password=[:Password:]&
VirtualHost=[:VirtualHost:]&
HostName=[:Host:]&
PortNumber=[:Port:]&
ExchangeName=[:ExchangeName:]&
ExchangeType=[:ExchangeType:]&
QueueName=[:QueueName:]&
Durability=[:Durability:]"
as="ServerPipeline" disable="CMD_SEND">
<Message>
<Value>
<AMQPSubscriptionConfig>
<RoutingKey value="cluster.[:QName:]"/>
</AMQPSubscriptionConfig>
</Value>
</Message>
</Receive>
</Group>
</Network>
</Process>
<SffReport Name="wsNotificationCluster_OnActivate"/>
</OnActivate>
<OnOpen ModifyPipeline="WsServerExtensionArgs" Context="keep"/>
<Policy name="MyMetering" type="SffSimplePolicy" kind="metering">
<inc type="integer" target="RequestCount"/>
<add type="integer" target="TotalBytes" value="[:$RawData.TotalBytesRead:]"/>
<set type="integer" target="AvgRequestSize" value="[:$ThisData/(number(TotalBytes div RequestCount)):]"/>
</Policy>
<OnError>
<SetLocalData Key="guard" Value=""/>
<ReportError>
<Error>[:[:$LocalData.guard:]$Error:]</Error>
<occurredIn>TQLNotificationCluster</occurredIn>
</ReportError>
<SffReport Name="wsNotificationCluster_OnError"/>
</OnError>
</NewFacetInstance> |
...