2012-05-21 21 views
9

API używam, spymemcached, w zasadzie dajeJak puli połączeń memcached w Javie (spymemcached)

MemcachedClient memc = new MemCachedClient(new InetSocketAddress("host", port)); 

Tak naprawdę nie dać mi funkcję connect() lub isConnected(). Interfejs API oferuje DefaultConnectionFactory, ale na pierwszy rzut oka nie wygląda na to, że zarządza pulą połączeń. Czy ktoś wie, jak to zrobić w spymemcached lub w innej bibliotece memcached Java?

Bardziej ogólnie - jaki jest najbardziej "moralny" sposób, aby moja aplikacja była odporna na utratę połączenia?

Odpowiedz

14

Po wywołaniu konstruktora MemcachedClient automatycznie łączy się z serwerem memcached. Nie ma metody connect() lub isConnected(). Jeśli stracisz połączenie z Spymemcached, spróbujesz połączyć się ponownie. Ponadto, DefaultConnectionFactory służy do określania specjalnych atrybutów połączenia (na przykład sposobu mieszania i trybu niepowodzenia). Jeśli chcesz użyć fabryki połączeń, musisz użyć konstruktora MemcachedClient, który pobiera ConnectionFactory i List<InetSocketAddress>.

Spymemcached używa pojedynczego wątku IO, ale działa jak klient wielowątkowy. Na przykład z jednym wątkiem, możesz zrobić do 50k operacji na sekundę. Jeśli chcesz utworzyć pulę wątków, musisz to zrobić w aplikacji użytkownika.

Bardziej ogólnie - jaki jest najbardziej "moralny" sposób, aby moja aplikacja była odporna na utratę połączenia?

Tak jak wspomniałem powyżej, Spymemcached spróbuje ponownie się połączyć, jeśli utraci połączenie z serwerem. Ten proces zwykle zajmuje około 17 ms. Większość osób korzystających z klienta tworzy pulę wątków w swoim kodzie aplikacji.

+0

Wszystko, co potrzebowałem wiedzieć. Miałem nadzieję, że ponowne połączenie zostanie zamknięte. Wielkie dzięki. – djechlin

0

Możesz początkowo utworzyć pulę obiektów. Następnie podczas wykonywania operacji ustawiania, usuwania lub pobierania możesz wypożyczać obiekty z puli. MemcachedClient automatycznie połączy się z serwerem po wywołaniu jego konstruktora.

0

Niektórzy używają DBCP do łączenia połączeń. Możesz obejrzeć projekt 3levelmemcache pod adresem github z puli.