2012年9月21日星期五

Coherence_002:Coherence入门指南之二:创建和访问Cache

运行环境:JDeveloper 11.1.2.2.0 + Coherence3.7.1 + Oracle Database 10g Express Edition 10.2.0.1。

Coherence解压缩后即可使用。
在运行脚本前,需要设置环境变量,比如:
set JAVA_HOME=C:\Oracle\Java\jrockit-jdk1.6.0_33

set PATH=%JAVA_HOME%\bin;%PATH%

1. 运行[coherence_home]\bin\coherence.cmd
默认情况下,storage_enabled=false,运行coherence.cmd后,将启动一个Client进程。
因为Client进程一般只是访问和操作Cache,所以一般不作为可以存储的节点。
当然你也可以根据需要设置storage_enabled=true。

2. 运行[coherence_home]\bin\cache-server.cmd
默认情况下,storage_enabled=true,运行cache-server.cmd后,将启动一个Server进程。
Server进程将作为Cache的存储节点,多个Server进程将组成一个集群。
一个集群中可以有多个Caches(用户可自己命名),每个Cache保存一种类型的对象,对象既可以是简单类型的,比如String;也可以是你自己定义的复杂类型的。
运行cache-server.cmd后,将会输出一些信息,其中比较重要的有:
(1)显示Coherence的版本和装载的配置文件
Oracle Coherence GE 3.7.1.0 (thread=Main Thread, member=n/a): Loaded cache configuration from "jar:file:/C:/Oracle/coherence/lib/coherence.jar!/coherence-cache-config.xml"
(2)Multicast Address,一般和版本号匹配,比如3.7版本,Address=224.3.7.0,Port=37000。
Group{Address=224.3.7.0, Port=37000, TTL=4}
说明:Coherence只使用multicast来寻找集群成员,数据传输的工作不使用multicast。也可以配置成其它的协议。
(3)节点成员,每启动一个Coherence进程,将会增加一个节点成员
MasterMemberSet(
  ThisMember=Member(Id=1, Timestamp=2012-09-21 14:34:51.508, Address=10.191.5.18:8088, MachineId=46446, Location=site:,machine:PMMA-CN,process:6400, Role=Cohere
nceServer)
  OldestMember=Member(Id=1, Timestamp=2012-09-21 14:34:51.508, Address=10.191.5.18:8088, MachineId=46446, Location=site:,machine:PMMA-CN,process:6400, Role=Cohe
renceServer)
  ActualMemberSet=MemberSet(Size=1
    Member(Id=1, Timestamp=2012-09-21 14:34:51.508, Address=10.191.5.18:8088, MachineId=46446, Location=site:,machine:PMMA-CN,process:6400, Role=CoherenceServer
)

3. 操作Cache的命令
运行coherence.cmd后,会提示Map(?):,这时你可以输入
(1)cache [cache_name],表示创建一个名为[cache_name]的Cache。
(2)put [key] [value],表示向Cache中创建一个键/值。
(3)get [key],表示从Cache中获取指定的键值。
(4)list,表示显示Cache中所有的键值对。
(5)remove [key],表示删除Cache中指定的键值。

4. 启动多个coherence.cmd进程,并创建一些Cache。
发现这些Cache在所有的Coherence进程中都可以访问并操作,这就是Coherence的缓存功能的强大之处。

5. 启动/停止多个cache-server.cmd进程。
(1)启动多个cache-server.cmd进程后,你会发现数据会按照某种算法分区到各个进程中,比如:
2012-09-21 14:47:33.523/518.479 Oracle Coherence GE 3.7.1.0 (thread=DistributedCache, member=2): 3> Transferring primary PartitionSet{0, 1, 2, 3, 4, 5, 6,
7, 8, 9, 10, 11, 12, 13, 14, 15, 16, 17, 18, 19, 20, 21, 22, 23, 24, 25, 26, 27, 28, 29, 30, 31, 32, 33, 34, 35, 36, 37, 38, 39, 40, 41} to member 3 requesting
(2)停止某个cache-server.cmd进程后,你会发现原来分区到这个进程的数据会重新Restore到其它的进程中。

没有评论: