标签:++ 技术分享 ash divide rri size state collect 扩展
这里验证第三个方法,原理是将需要装载的数据分载在所有的存储节点上,不同的地方是利用了存储节点提供的InvocationService进行装载,而不是PreloadRequest,
原理如图
前提条件是:
Person.java
package dataload; import java.io.Serializable; public class Person implements Serializable { public void setId(String Id) { public String getId() { public void setFirstname(String Firstname) { public String getFirstname() { public void setLastname(String Lastname) { public String getLastname() { public void setAddress(String Address) { public String getAddress() { |
MyLoadInvocable.java
装载数据的任务,主要是通过驱动这个任务的run方法,把数据在各个节点中进行装载
package dataload; import com.tangosol.io.pof.PofReader; import java.io.IOException; import java.sql.Connection; import java.util.Hashtable; import javax.naming.Context; import serp.bytecode.NameCache;
public MyLoadInvocable(List<String> memberKeys, String cache) { public Connection getConnection() { for(int i = 0; i < m_memberKeys.size(); i++) /**
|
LoadUsingEP.java
装载的客户端,负责数据分段,InvocationService查找以及驱动。
package dataload; import com.tangosol.net.CacheFactory; import java.sql.Connection; import java.sql.SQLException; import java.sql.Statement; import java.util.ArrayList; import javax.naming.Context; public class LoaderUsingEP { protected Set getStorageMembers(NamedCache cache) } Set members = getStorageMembers(cache); Map<Member, List<String>> mapWork = divideWork(members); InvocationService service = (InvocationService) |
需要配置的客户端schema
storage-override-client.xml
<?xml version="1.0"?> <internal-cache-scheme>
<listener/>
|
存储节点的Schema
<?xml version="1.0"?> <internal-cache-scheme>
<listener/>
|
输出结果
可见数据分片装载.
Coherence装载数据的研究 - Invocation Service
标签:++ 技术分享 ash divide rri size state collect 扩展
原文地址:http://www.cnblogs.com/ericnie/p/6130545.html