cassandra-user mailing list archives

Site index · List index
Message view « Date » · « Thread »
Top « Date » · « Thread »
From "B. Todd Burruss" <bburr...@real.com>
Subject Re: Dividing the client load between machines in Cassandra
Date Wed, 17 Mar 2010 16:24:15 GMT
below is the commented out code i once used.  i think it is from the 0.5 
days, so it might not even work now.  not sure.  the bootstrapHostArr is 
simply a list of host information used to bootstrap the process.  
connectToHost is a method used to generate a Cassandra.Client object.  
there is sample code on cassandra wiki for doing this.  good luck!

// can't use this on cassandra because the tokens returned are for the 
"internal cassandra server comm", not the thrift IPs
//        String    hostList = null;
//        for ( HostInfo hi : bootstrapHostArr ) {
//            Cassandra.Client    client = null;
//            try {
//                client = connectToHost( hi.getHostName(), hi.getPort() );
//                hostList = client.get_string_property( "token map" );
//                break;
//            }
//            catch ( TTransportException e ) {
//                logger.error( "cannot connect to bootstrap node - will 
try another if available : " + hi.getNameAndPort() );
//            }
//            catch ( TException e ) {
//                logger.error( "cannot retrieve host list from node - 
will try another if available : " + hi.getNameAndPort() );
//            }
//            finally {
//                if ( null != client ) {
//                    disconnectFromCluster( client );
//                }
//            }
//        }
//   
//        if ( null != hostList ) {           
//            ArrayList<String>    newArr;
//            try {
//                JSONObject    jsonObj = new JSONObject( hostList );
//                String[]    ringArr = JSONObject.getNames( jsonObj );
//                newArr = new ArrayList<String>( ringArr.length );
//               
//                for ( int i=0;i < ringArr.length;i++ ) {
//                    String    hostName = jsonObj.getString( ringArr[i] );
//                    if ( !hostIgnoreSet.contains(hostName) ) {
//                        newArr.add( hostName );
//                    }
//                }
//            }
//            catch ( JSONException e ) {
//                throw new ClusterRuntimeException( "Could not parse 
JSON returned from Cassandra - don't know what to do?  ARRRRGGGG" );
//            }


Sonny Heer wrote:
> Is there some example code on how to do this?
>
> On Tue, Mar 16, 2010 at 3:07 PM, Jonathan Ellis <jbellis@gmail.com> wrote:
>   
>> token map is an internal representation, so returning the internal IPs
>> is correct, even though this makes it slightly more difficult to use
>> for thrift clients.
>>
>> On Tue, Mar 16, 2010 at 4:55 PM, B. Todd Burruss <bburruss@real.com> wrote:
>>     
>>> if you choose #3 - get_string_property("token map") - keep in mind that the
>>> IPs returned from this call are the IPs used for "ListenAddress" param in
>>> storage-conf.xml.  In my case we have two NICs and I set this to be an IP
>>> that is only for "node to node" communication.  The "ThriftAddress" param is
>>> the one i really want.  maybe this has been changed, "fixed" ;), haven't
>>> tested in a while.
>>>
>>> Jonathan Ellis wrote:
>>>       
>>>> http://wiki.apache.org/cassandra/FAQ#node_clients_connect_to
>>>>
>>>> On Tue, Mar 16, 2010 at 4:30 PM, Sonny Heer <sonnyheer@gmail.com> wrote:
>>>>
>>>>         
>>>>> How can I accomplish this?
>>>>>
>>>>> The way I'm doing it now it is creating a TSocket connection using a
>>>>> static IP of one of the boxes on Cassandra:
>>>>>       TTransport tr = new TSocket(host, port.intValue());
>>>>>       TProtocol proto = new TBinaryProtocol(tr);
>>>>>       Cassandra.Client client = new Cassandra.Client(proto);
>>>>>       tr.open();
>>>>>
>>>>> With a larger cluster I would imagine there is another preferred
>>>>> solution with no single point of failure (e.g. that one box  goes
>>>>> down).
>>>>>
>>>>>
>>>>>           

Mime
View raw message