icebox的id被设置为"${instance-name}-${index}"
里面有service
dbenv name="${service}" 应该是系统里面的东西
这里的<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>
是作用与replica group的哈
icebox也就是相当于一个特殊的server,里面装的是service
<dbenv name="${service}"/> database environment 产生freeze configuration property for server or service and may cause the node to create a database directory if necessary.
Freeze 代表了一系列的持久服务
但是这个放在这里有什么用?确实不太清楚的
怎么 <parameter name="topic-manager-endpoints" default="default"/>
<parameter name="publish-endpoints" default="default"/>
<parameter name="node-endpoints" default="default"/>
<parameter name="instance-name"/>
全是default 这个表示的是? 为什么不用指定端口号?这个是体现Icegrid的时候?
为什么有的replica-group有 identity 而有的没有?
<replica-group id="DemoIceStorm-PublishReplicaGroup">
</replica-group>
<replica-group id="DemoIceStorm-TopicManagerReplicaGroup">
<object identity="DemoIceStorm/TopicManager" type="::IceStorm::TopicManager"/>
</replica-group>
有两处提到了replica (上面的和下面的)
<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"/>
他这个数据库的设置怎么不一样哈?${service}.SQL.DatabaseType" value="QSQLITE"/>
<property name="${service}.SQL.DatabaseName" value="db/${instance-name}-${index}.db"/>
在没有用icegrid的程序中确是这个Freeze.DbEnv.IceStorm.DbHome=db,求解释哈上面是使用sql语句的时候需要配置的东西
#
# IceStorm SQL configuration if using SQL database.
#
#Ice.Plugin.DB=IceStormSqlDB:createSqlDB
#IceStorm.SQL.DatabaseType=QSQLITE
#IceStorm.SQL.DatabaseName=db/IceStorm.db
config.grid
IceGrid.InstanceName=DemoIceGrid
Ice.Default.Locator=DemoIceGrid/Locator:default -p 4061
......(一些registry和node的配置信息)
config.pub
Ice.Default.Locator=DemoIceGrid/Locator:default -p 4061 (DemoIceGrid是instance
TopicManager.Proxy=DemoIceStorm/TopicManager
config.sub
Ice.Default.Locator=DemoIceGrid/Locator:default -p 4061
TopicManager.Proxy=DemoIceStorm/TopicManager (这个左边还必须是application name!!)(这里apllication name 与 instance name都是DemoIceStorm!!,fuck,应该是instance name吧,对应一个server(这里是icebox)
Clock.Subscriber.Endpoints=tcp:udp
xml文件:
<icegrid>
<application name="DemoIceStorm">
<server-template id="IceStorm">
<parameter name="index"/>
<parameter name="topic-manager-endpoints" default="default"/>
<parameter name="publish-endpoints" default="default"/>
<parameter name="node-endpoints" default="default"/>
<parameter name="instance-name"/>
<icebox id="${instance-name}-${index}" exe="icebox" activation="on-demand">
<service name="IceStorm" entry="IceStormService,34: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"/>
//应该只是跟replica有关哦~
<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}.Trace.Election" value="1"/>
<property name="${service}.NodeId" value="${index}"/>
<property name="${service}.SQL.DatabaseType" value="QSQLITE"/>
<property name="${service}.SQL.DatabaseName" value="db/${instance-name}-${index}.db"/>
</properties>
</service>
</icebox>
</server-template>
<replica-group id="DemoIceStorm-PublishReplicaGroup">
</replica-group>
<replica-group id="DemoIceStorm-TopicManagerReplicaGroup">
<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>
</application>
</icegrid>
Subscriber.cpp