Hector (API) - Hector (API) - Wikipedia
Původní autoři | Ran Tavory |
---|---|
Stabilní uvolnění | 2.0 / 16. července 2014[1] |
Úložiště | github |
Napsáno | Jáva |
Typ | Sloupově orientovaný DBMS |
Licence | Licence MIT |
webová stránka | pěkný otisk![]() |
Sekýrovat je klient na vysoké úrovni API pro Apache Cassandra. Pojmenoval podle Sekýrovat, válečník z Troy v řecká mytologie, je to náhrada za klienta Cassandra Java nebo Thrift,[3] který je zapouzdřený Hectorem.[4] Má také Maven přístup do úložiště.[5]
Dějiny
Protože je Cassandra dodávána s nízkou úrovní Thrift (protokol) existoval potenciál vyvinout lepší protokol pro vývojáře aplikací. Hector vyvinul Ran Tavory jako rozhraní na vysoké úrovni, které překrývá nedostatky Thrift. Je licencován s licencí MIT, která umožňuje použít, upravit, rozdělit a změnit design.[pochybný ]
Funkce
Funkce Hector na vysoké úrovni jsou[3]
- Objektové rozhraní na vysoké úrovni pro Cassandru: Je inspirováno hlavně klientem Cassandra-java. API je definováno v rozhraní Keyspace.
- Sdružování připojení. Stejně jako ve velkých aplikacích, obvyklý vzor pro DAO je velký počet čtení / zápisů. Pro klienty je příliš nákladné otevírat nová připojení s každým požadavkem. Klientovi tedy mohou snadno dojít dostupné zásuvky, pokud funguje dostatečně rychle. Hector poskytuje sdružování připojení a pěkný rámec, který spravuje podrobnosti.
- Podpora převzetí služeb při selhání: Protože Cassandra je úložiště distribuovaných dat, kde hostitelé (uzly ) může jít dolů. Hector má své vlastní politika převzetí služeb při selhání.
Typ | Komentář |
---|---|
FAIL_FAST | Pokud dojde k chybě, selže |
ON_FAIL_TRY_ONE_NEXT_AVAILABLE | Než se vzdá, vyzkouší ještě jednoho hostitele |
ON_FAIL_TRY_ALL_AVAILABLE | Než se vzdá, vyzkouší všechny dostupné hostitele |
- JMX podpora: Hector vystavuje JMX pro mnoho důležitých běhových metrik, jako je počet dostupných připojení, nečinná připojení, statistika chyb.
- Vyrovnávání zatížení: V novější verzi existuje jednoduché vyvažování zátěže.[6]
- Podporuje vzor návrhu příkazů, který klientům umožňuje soustředit se na jejich obchodní logiku a nechat Hectora, aby se postaral o požadovanou instalaci.
Metriky dostupnosti
Hector odhaluje čítače dostupnosti a statistiky prostřednictvím JMX.[7]
Vyrovnávání zatížení
Hector dodržuje dvě zásady vyrovnávání zátěže s LoadBalancingPolicy
rozhraní. Výchozí nastavení se nazývá RoundRobinBalancingPolicy
a je jednoduchý každý s každým distribuční algoritmus. The LeastActiveBalancingPolicy
směruje požadavky do fondů, které mají nejnižší počet aktivních připojení, a zajišťuje tak dobré šíření využití v klastru. .[8]
Sdružování
The Vyčerpaná politika
určuje, jak jsou řízeny základní fondy připojení klienta. V současné době jsou k dispozici tři možnosti:[9]
Typ | Komentář |
---|---|
WHEN_EXHAUSTED_FAIL | Selže akvizice, když už nejsou k dispozici další klienti |
KDY_EXHAUSTED_GROW | Fond se automaticky zvyšuje, aby reagoval na zvýšení zatížení |
WHEN_EXHAUSTED_BLOCK | Blokovat akvizici, dokud nebude klient k dispozici (výchozí) |
Příklady kódu
Jako příklad lze uvést implementaci jednoduchého distribuovaného hashtable nad Cassandrou je uveden.
/** * Vložte novou hodnotu s klíčem * @param key Klíč pro hodnotu * @param value String value to insert */ veřejnost prázdnota vložit(finále Tětiva klíč, finále Tětiva hodnota) hodí Výjimka { vykonat(Nový Příkaz(){ veřejnost Neplatné vykonat(finále Klíčový prostor ks) hodí Výjimka { ks.vložit(klíč, createColumnPath(COLUMN_NAME), bajtů(hodnota)); vrátit se nula; } }); } /** * Získejte hodnotu řetězce. * @return Hodnota řetězce; null, pokud pro daný klíč neexistuje žádná hodnota. */ veřejnost Tětiva dostat(finále Tětiva klíč) hodí Výjimka { vrátit se vykonat(Nový Příkaz(){ veřejnost Tětiva vykonat(finále Klíčový prostor ks) hodí Výjimka { Snaž se { vrátit se tětiva(ks.getColumn(klíč, createColumnPath(COLUMN_NAME)).getValue()); } úlovek (NotFoundException E) { vrátit se nula; } } }); } /** * Smažte klíč z Cassandry */ veřejnost prázdnota vymazat(finále Tětiva klíč) hodí Výjimka { vykonat(Nový Příkaz(){ veřejnost Neplatné vykonat(finále Klíčový prostor ks) hodí Výjimka { ks.odstranit(klíč, createColumnPath(COLUMN_NAME)); vrátit se nula; } }); }
Reference
- ^ https://github.com/hector-client/hector/releases
- ^ https://github.com/hector-client/hector/blob/master/README
- ^ A b Ran Tavory. „Hector - klient Java Cassandra“. http://prettyprint.me/: PrettyPrint.me. Citováno 2011-03-23.
Po vybalení z krabice poskytuje Cassanra surového klienta šetrnosti, což je v pořádku, ale postrádá mnoho funkcí nezbytných pro klienty v reálném světě. Pro vyplnění této mezery jsem postavil Hectora.
Zde jsou funkce Hector na vysoké úrovni, které jsou aktuálně hostovány na github.- Objektové rozhraní na vysoké úrovni pro Cassandru.
- Podpora převzetí služeb při selhání.
- Sdružování připojení.
- Podpora JMX.
- Podpora návrhového vzoru Command umožňující klientům soustředit se na svou obchodní logiku a nechat hector postarat se o požadovanou instalaci.
- ^ „Hector Client pro Apache Cassandra: Zapouzdření Thrift API“ (PDF). http://www.datastax.com/: DataStax. Citováno 2011-04-12.
Hector nyní zcela zapouzdřuje Thrift API, takže vývojáři musí jednat pouze s klientem Hector pomocí známých návrhových vzorů. Původní API je stále k dispozici pro stávající uživatele k přechodu na jejich aktuální projekty i pro ty, kterým práce s Thriftem vyhovuje.
- ^ „Hector Client pro Apache Cassandra: Plně Mavenized“ (PDF). http://www.datastax.com/: DataStax. Citováno 2011-04-12.
Od beta verze Cassandra 0.7.0 nabízí Riptano přístup k úložišti maven pro závislosti vyžadované pro použití Cassandry přes Hector.
- ^ Ran Tavory. "Vyrovnávání zatížení a vylepšené převzetí služeb při selhání v Hectoru". http://prettyprint.me/: PrettyPrint.me. Citováno 2011-03-23.
Přidal jsem velmi jednoduchou funkci vyrovnávání zátěže a vylepšené chování převzetí služeb při selhání pro Hector. Hector je klient Java Cassandra. Více informací o něm naleznete v mém předchozím příspěvku Hector - klient Java Cassandra. Ve verzi 0.5.0-6 jsem přidal vyvážení zátěže chudého člověka a také vylepšené chování při převzetí služeb při selhání.
- ^ „Hector Client pro Apache Cassandra: Dostupnost metrik“ (PDF). http://www.datastax.com/: DataStax. Citováno 2011-04-12.
Pro usnadnění plynulejších operací a lepšího povědomí o výkonových charakteristikách vystavuje Hector jak čítače dostupnosti, tak volitelně statistiky výkonu prostřednictvím JMX.
- ^ „Klient Hector pro Apache Cassandra: Základní rozložení zátěže“ (PDF). http://www.datastax.com/: DataStax. Citováno 2011-04-12.
Hector zajišťuje plug-in vyvážení zátěže přes
LoadBalancingPolicy
rozhraní. Po vybalení z krabice jsou k dispozici dvě základní implementace:LeastActiveBalancingPolicy
(výchozí) aRoundRobinBalancingPolicy
.LeastActiveBalancingPolicy
směruje požadavky do fondů s nejnižším počtem aktivních připojení. Tím je zajištěno dobré šíření využití v klastru odesláním požadavků na stroj, který má nejméně připojení.RoundRobinBalancingPolicy
implementuje jednoduchý distribuční algoritmus každý s každým. - ^ „Hector Client pro Apache Cassandra: Konfigurace sdružování“ (PDF). http://www.datastax.com/: DataStax. Citováno 2011-04-12.
Chování podkladových fondů klientských připojení lze ovládat pomocí ExhaustedPolicy. […]