Hi, anybody could help me?

2015-09-21 0:47 GMT+08:00 joseph gao <gaojf.bok...@gmail.com>:

> ps : that's the code in java drive , in MetaData.TokenMap.build:
>
> for (KeyspaceMetadata keyspace : keyspaces)
> {
>     ReplicationStrategy strategy = keyspace.replicationStrategy();
>     Map<Token, Set<Host>> ksTokens = (strategy == null)
>         ? makeNonReplicatedMap(tokenToPrimary)
>         : strategy.computeTokenToReplicaMap(tokenToPrimary, ring);
>
>     tokenToHosts.put(keyspace.getName(), ksTokens);
>
> tokenToPrimary is all same, ring is all same, and if strategy is all same
> , strategy.computeTokenToReplicaMap would return 'same' map but different
> object( cause every calling returns a new HashMap
>
> 2015-09-21 0:22 GMT+08:00 joseph gao <gaojf.bok...@gmail.com>:
>
>> cassandra: 2.1.7
>> java driver: datastax java driver 2.1.6
>>
>> Here is the problem:
>>    My application uses 2000+ keyspaces, and will dynamically create
>> keyspaces and tables. And then in java client, the
>> Metadata.tokenMap.tokenToHost would use about 1g memory. so this will cause
>> a lot of  full gc.
>>    As I see, the key of the tokenToHost is keyspace, and the value is a
>> tokenId_to_replicateNodes map.
>>
>>    When I try to solve this problem, I find something not sure: all
>> keyspaces have same 'tokenId_to_replicateNodes' map.
>>     My replication strategy of all keyspaces is : simpleStrategy and
>> replicationFactor is 3
>>
>>     So would it be possible if keyspaces use same strategy, the value of
>> tokenToHost map use a same map. So it would extremely reduce the memory
>> usage
>>
>>      thanks a lot
>>
>> --
>> ------
>> Joseph Gao
>> PhoneNum:15210513582
>> QQ: 409343351
>>
>
>
>
> --
> ------
> Joseph Gao
> PhoneNum:15210513582
> QQ: 409343351
>



-- 
------
Joseph Gao
PhoneNum:15210513582
QQ: 409343351

Reply via email to