Archived
This forum has been archived. Please start a new discussion on GitHub.
Does IceStorm support load balancing
ice version:3.5
The first question: Does IceStorm support load balancing policies In this version?Because in our system, each client is an information publisher, and the server is a subscriber.
The second question: If it supports load balancing, I finished it according to C++ example of an IceGrid deployment in the directory demo/IceStorm/replicated
I finished it like this:
192.168.1.144 hosts
Create a registry and node configuration file,the file contains the following properties:
the server descriptor:
192.168.1.155 hosts
Create a node configuration file,the file contains the following properties:
Executing the Subscriber program,
The Java implementation of the Subscriber is shown below:
The thread seems to have been blocked
Terminal display log as follows
Program stops at the retrieve,Where is the wrong configuration?
The first question: Does IceStorm support load balancing policies In this version?Because in our system, each client is an information publisher, and the server is a subscriber.
The second question: If it supports load balancing, I finished it according to C++ example of an IceGrid deployment in the directory demo/IceStorm/replicated
I finished it like this:
192.168.1.144 hosts
Create a registry and node configuration file,the file contains the following properties:
IceGrid.InstanceName=DemoIceGrid Ice.Default.Locator=DemoIceGrid/Locator:default -h 192.168.1.144 -p 4061 IceGrid.Registry.Client.Endpoints=default -h 192.168.1.144 -p 4061 IceGrid.Registry.Server.Endpoints=default -h 192.168.1.144 IceGrid.Registry.Internal.Endpoints=default -h 192.168.1.144 IceGrid.Registry.Data=C:\IceGrid\registry1 IceGrid.Registry.PermissionsVerifier=DemoIceGrid/NullPermissionsVerifier IceGrid.Registry.AdminPermissionsVerifier=DemoIceGrid/NullPermissionsVerifier IceGrid.Registry.SSLPermissionsVerifier=DemoIceGrid/NullSSLPermissionsVerifier IceGrid.Registry.AdminSSLPermissionsVerifier=DemoIceGrid/NullSSLPermissionsVerifier IceGrid.Node.Name=node1 IceGrid.Node.Endpoints=default -h 192.168.1.144 IceGrid.Node.Data=C:\IceGrid\node1 IceGrid.Node.CollocateRegistry=1 # Trace properties. IceGrid.Node.Trace.Activator=3 IceGrid.Node.Trace.Adapter=3 IceGrid.Node.Trace.Replica=3 IceGrid.Node.Trace.Server=3 IceGrid.Registry.Trace.Adapter=1 IceGrid.Registry.Trace.Node=2 # # Dummy username and password for icegridadmin. # IceGridAdmin.Username=foo IceGridAdmin.Password=bar
the server descriptor:
<icegrid>
<application name="DemoIceStorm">
<server-template id="IceStorm">
<parameter name="index" />
<parameter name="topic-manager-endpoints" default="default -h localhost" />
<parameter name="publish-endpoints" default="default -h localhost" />
<parameter name="node-endpoints" default="default -h localhost" />
<parameter name="instance-name" />
<icebox id="${instance-name}-${index}" exe="icebox"
activation="on-demand">
<service name="IceStorm" entry="IceStormService,35:createIceStorm">
<dbenv name="${service}" />
<adapter name="${service}.TopicManager" endpoints="${topic-manager-endpoints}"
replica-group="${instance-name}-TopicManagerReplicaGroup" />
<adapter name="${service}.Publish" endpoints="${publish-endpoints}"
replica-group="${instance-name}-PublishReplicaGroup" />
<adapter name="${service}.Node" endpoints="${node-endpoints}" />
<properties>
<property name="${service}.InstanceName" value="${instance-name}" />
<property name="${service}.Trace.TopicManager" value="2" />
<property name="${service}.Trace.Topic" value="1" />
<property name="${service}.Trace.Subscriber" value="1" />
<property name="${service}.NodeId" value="${index}" />
</properties>
</service>
</icebox>
</server-template>
<replica-group id="DemoIceStorm-PublishReplicaGroup">
</replica-group>
<replica-group id="DemoIceStorm-TopicManagerReplicaGroup">
<load-balancing type="round-robin" />
<object identity="DemoIceStorm/TopicManager" type="IceStorm.TopicManager" />
</replica-group>
<node name="node1">
<server-instance template="IceStorm" index="1"
instance-name="DemoIceStorm" />
<server-instance template="IceStorm" index="2"
instance-name="DemoIceStorm" />
<server-instance template="IceStorm" index="3"
instance-name="DemoIceStorm" />
</node>
<node name="node2">
<server-instance template="IceStorm" index="4"
instance-name="DemoIceStorm" />
<server-instance template="IceStorm" index="5"
instance-name="DemoIceStorm" />
<server-instance template="IceStorm" index="6"
instance-name="DemoIceStorm" />
</node>
</application>
</icegrid>
192.168.1.155 hosts
Create a node configuration file,the file contains the following properties:
#The IceGrid locator proxy. Ice.Default.Locator=DemoIceGrid/Locator:tcp -h 192.168.1.144 -p 4061 #IceGrid node configuration IceGrid.Node.Name=node2 IceGrid.Node.Endpoints=default -h 192.168.1.155 IceGrid.Node.Data=C:\IceGrid\node2 IceGrid.Node.CollocateRegistry=0 # Trace properties. IceGrid.Node.Trace.Activator=3 IceGrid.Node.Trace.Adapter=3 IceGrid.Node.Trace.Replica=3 IceGrid.Node.Trace.Server=3 IceGrid.Registry.Trace.Adapter=1 IceGrid.Registry.Trace.Node=2 #Ice.Trace.Network=3 #Ice.Trace.Protocol=3 #Ice.Trace.Locator=3 #Ice.Trace.Retry=2 #Ice.LogFile=c:\IceGrid\log.txtStarting the Node and Deploying the Application
Executing the Subscriber program,
The Java implementation of the Subscriber is shown below:
import IceStorm.AlreadySubscribed;
import IceStorm.BadQoS;
import iceGridAndIceBoxAndIceStorm.servant.MonitorI;
import publisherAndSubscribe.Monitor;
public class Subscriber extends Ice.Application {
public int run(String[] args) {
Ice.ObjectPrx obj = communicator().stringToProxy("DemoIceStorm/TopicManager");
IceStorm.TopicManagerPrx topicManager = IceStorm.TopicManagerPrxHelper
.checkedCast(obj);
System.out.println("topicManager = "+topicManager);
Ice.ObjectAdapter adapter = communicator().createObjectAdapter("WeatherMonitorAdapter");
Monitor monitor1 = new MonitorI("the first monitor");
Ice.ObjectPrx proxy1 = adapter.addWithUUID(monitor1).ice_oneway();
adapter.activate();
IceStorm.TopicPrx topic = null;
try {
topic = topicManager.retrieve("Weather");
} catch (IceStorm.NoSuchTopic ex) {
try
{
topic = topicManager.create("Weather");
}
catch(IceStorm.TopicExists it)
{
System.err.println("temporary failure, try again.");
}
}
java.util.Map qos = null;
try {
topic.subscribeAndGetPublisher(qos, proxy1);
} catch (AlreadySubscribed e) {
e.printStackTrace();
} catch (BadQoS e) {
e.printStackTrace();
}
communicator().waitForShutdown();
topic.unsubscribe(proxy1);
return 0;
}
public static void main(String[] args) {
Subscriber app = new Subscriber();
System.exit(app.main("Server", args,"C:\\config.sub"));
}
}
When the program execution here "topic = topicManager.retrieve("Weather");"The thread seems to have been blocked
Terminal display log as follows
topicManager = DemoIceStorm/TopicManager -t -e 1.1 -- 13-8-13 10:21:10:437 Server: Network: attempting to bind to tcp socket 192.168.1.144:0 -- 13-8-13 10:21:10:437 Server: Network: listening for tcp connections at 192.168.1.144:3732 -- 13-8-13 10:21:10:453 Server: Network: published endpoints for object adapter `WeatherMonitorAdapter': tcp -h 192.168.1.144 -p 3732 -- 13-8-13 10:21:10:593 Server: Network: accepting tcp connections at 192.168.1.144:3732 -- 13-8-13 10:21:10:593 Server: Protocol: sending request message type = 0 (request) compression status = 0 (not compressed; do not compress response, if any) message size = 70 request id = 2 identity = DemoIceStorm/TopicManager facet = operation = retrieve mode = 1 (nonmutating) context = encoding = 1.1 -- 13-8-13 10:21:10:593 Server: Network: sent 70 of 70 bytes via tcp local address = 127.0.0.1:3728 remote address = 127.0.0.1:3709 -- 13-8-13 10:22:10:765 Server: Network: received 14 of 14 bytes via tcp local address = 192.168.1.144:3704 remote address = 192.168.1.144:4061 -- 13-8-13 10:22:10:765 Server: Protocol: received close connection message type = 4 (close connection) compression status = 1 (not compressed; compress response, if any) message size = 14 -- 13-8-13 10:22:10:765 Server: Network: closing tcp connection local address = 192.168.1.144:3704 remote address = 192.168.1.144:4061
Program stops at the retrieve,Where is the wrong configuration?
0
Comments
-
Got the same problem, blocked on "retrieve ".
can anyone help on this ?0