Nastavenie nasadenia HarperDB vo viacerých regiónoch na
HarperDB, globálne distribuovaná dátová a aplikačná platforma, je teraz k dispozícii na DigitalOcean Marketplace, čo používateľom DigitalOcean poskytuje rýchly spôsob, ako spustiť HarperDB.
HarperDB je jedinečná, pretože kombinuje vysoko výkonnú databázu, používateľsky vytvorené vlastné aplikácie a streamovanie dát v reálnom čase do jednej platformy. Technológia bola vytvorená so zameraním na výkon a jednoduchosť použitia. Vďaka flexibilným používateľom definovaným rozhraniam API, jednoduchému rozhraniu HTTP/S a vysokovýkonnému jednomodelovému úložisku údajov, ktoré vyhovuje pracovným zaťaženiam NoSQL aj SQL, sa HarperDB škáluje s vašou aplikáciou od overenia konceptu až po produkciu.
Replikačný engine HarperDB replikuje údaje medzi inštanciami HarperDB pomocou vysoko výkonného, obojsmerného pub/sub modelu pre jednotlivé tabuľky. Môže to byť v neobmedzenom počte uzlov, čo v konečnom dôsledku umožňuje neobmedzený globálny rozsah. HarperDB tiež vyfúkne konkurenciu z vody, pokiaľ ide o výkon, s viac ako 20 tisíc zápismi/sekundu/uzol a 120 tisíc čítaní/sekundu/uzol.
V tomto návode si prejdeme nastavenie HarperDB vo viacerých regiónoch prostredníctvom DigitalOcean Droplets a predvedieme vytvorenie jednoduchej vrstvy API pomocou vlastných funkcií.
Po prihlásení do DigitalOcean prejdite na trhovisko a kliknite na "Vytvoriť HarperDB Droplet":
Vytvoríme dve inštancie: jednu v New Yorku a jednu v San Franciscu. Vyberte typ kvapky (na ukážkové účely budem používať základnú úroveň) a pripojte zväzok. Môžete si vybrať možnosť automatického formátovania a pripojenia, pokiaľ nechcete spravovať konfiguráciu LVM sami.
Počkajte, kým sa v každom regióne vytvoria dve droplety a poznačte si IP adresy. Tiež budeme musieť povoliť brány firewall pre HarperDB Studio na interakciu s našimi inštanciami.
Prejdite do časti Sieťové > brána firewall a otvorte porty 9925-9926 a 9932:
Nakoniec ssh do Droplets a skontrolujte obsah ~/.harperdb na prihlasovacie údaje, ktoré boli vytvorené automaticky. Tieto podrobnosti budete potrebovať v ďalšej časti.
HarperDB Studio je online portál na správu inštancií HarperDB. HarperDB má super výkonnú bezplatnú úroveň s možnosťou upgradovať na platený model podľa potreby. Informácie o cenách nájdete tu.
Prejdite na studio.harperdb.io a kliknite na "Vytvoriť novú cloudovú inštanciu HarperDB" a vyberte možnosť "Podnik". Potom podľa toho vyplňte informácie o inštancii:
Používateľské meno/heslo je z vyššie uvedeného súboru .harperdb a hostiteľ je IP adresa vášho dropletu. Je dôležité kliknúť na tlačidlo SSL, pretože inštalácia na trhovisku má povolené SSL.
Po kliknutí na položku Podrobnosti inštancie vás môže zobraziť upozornenie na prijatie certifikátov s vlastným podpisom. Kliknite na odkaz vo svojom prehliadači a prijmite tieto certifikáty. Po niekoľkých sekundách sa vaša inštancia zobrazí na tabuli.
Teraz, keď sú naše databázy nastavené, môžeme vytvárať schémy a tabuľky. Vytvoríme schému s názvom dev a tabuľku s názvom dog s hash atribútom id:
Potom môžeme použiť príkazy curl na pridanie nejakých údajov:
curl -k --location 'https://<my-ip>:9925' \
--header 'Content-Type: application/json' \
--header 'Authorization: <YourBase64EncodedInstanceUser:Pass>' \
--data-raw '{
"operation": "insert",
"schema": "dev",
"table": "dog",
"records": [
{
"dog_name": "Charlie",
"age": 2
}
]
}'
Jednou z príjemných vlastností HarperDB je, že majú v databáze zabudovanú prvotriednu podporu replikácie. Prejdite na kartu replikácie v štúdiu HarperDB a vytvorte používateľa klastra, ktorý povolí klastrovanie.
Urobte to pre obe droplety a počkajte, kým sa databáza reštartuje. Potom môžete pridať každú inštanciu na karte klastrovania s možnosťami publikovania/odberu:
HarperDB dosahuje replikáciu v asynchrónnom pub/sub modeli. V našom príklade budeme chcieť nastaviť aplikáciu s viacerými oblasťami, ktorá dokáže načítať údaje, takže povoľte obe možnosti publikovania a odberu.
Môžete skúsiť pridať ďalší údajový bod a mali by sa zobraziť údaje na karte prehľadávania pre obe inštancie.
HarperDB umožňuje používateľom definovať ľahkú vrstvu API pomocou funkcie nazývanej Vlastné funkcie. Vlastné funkcie kombinujú bezserverové funkcie so základnou databázou a zrútia zásobník do jedného riešenia s možnosťou definovať vlastné koncové body API, ktoré majú priamy prístup k základným operáciám HarperDB. Bezserverové vlastné funkcie HarperDB, poháňané Fastify, sú rovnaké ako funkcie AWS Lambda alebo uložené procedúry. Funkcie sú nenáročné na údržbu a ľahko sa vyvíjajú; Definujte logiku a vyberte, kedy sa má spustiť.
Vlastné funkcie použijeme na nasadenie jednoduchej funkcie, ktorá načíta údaje spolu s informáciami o oblasti.
Ak to chcete urobiť, prejdite do adresára /opt/hdb/custom_functions v dropletoch HarperDB. Potom vytvorte nový adresár s názvom "digitalocean ". Tu inicializujeme projekt npm:
npm init -y
npm install @fastify/env
Používame knižnicu @fastify/env na načítanie premenných prostredia, kde budeme kódovať informácie o regióne.
Vytvorte index.js v novom adresári trás:
mkdir routes
touch routes/index.js
Potom prilepte nasledujúci kód:
import fastifyEnv from '@fastify/env'
import { fileURLToPath } from 'url'
import path from 'path'
const schema = {
type: 'object',
required: ['DO_REGION'],
properties: {
DO_REGION: {
type: 'string'
},
}
}
const __filename = fileURLToPath(import.meta.url)
const __dirname = path.dirname(__filename)
const options = {
schema,
dotenv: {
path: `${__dirname}/.env`,
debug: true
},
data: process.env
}
export default async (server, { hdbCore, logger }) => {
await server.register(fastifyEnv, options);
server.route({
url: '/',
method: 'GET',
handler: async () => {
const body = {
operation: 'sql',
sql: 'SELECT * FROM dev.dog ORDER BY dog_name',
};
const results = await hdbCore.requestWithoutAuthentication({ body });
const response = {
region: process.env.DO_REGION,
results
}
return response
},
});
};
Potom vytvorte súbor .env a pridajte DO_REGION informácie, ako napríklad:
DO_REGION=new-york
Nakoniec sme pripravení otestovať našu aplikáciu, ktorá načíta všetky záznamy z našej tabuľky dev.dog zoradené podľa dog_name atribútu.
Koncový bod vlastnej funkcie je predvolene <adresa>:9926/<názov-funkcie>. Takže v našom prípade by to bolo <ip-adresa>:9926/digitalocean.
Vyberte si IP adresu Droplet, ktorá je vo vašom okolí. Akonáhle tento koncový bod zvlníme, vrátime sa späť:
{
"region": "new-york",
"results": [
{
"age": 2,
"dog_name": "Charlie"
},
{
"age": 4,
"dog_name": "Coco"
}
]
}
Všimnite si, že v mojom prípade som oslovil región New Yorku (všimnite si tiež, že som predtým pridal iný záznam).
Rovnaký výstup môžete získať z iného regiónu s výnimkou správnych údajov o regióne (napr. San Francisco).
Ak chcete smerovať prevádzku na základe geolokácie, môžete tieto koncové body integrovať do globálneho nástroja na vyrovnávanie zaťaženia alebo použiť službu DNS, ktorá môže zodpovedajúcim spôsobom smerovať prenosy.
V tomto článku sme videli, ako nastaviť konfiguráciu HarperDB pre viac oblastí s replikáciou na DigitalOcean. S novou šablónou trhu je triviálne roztočiť nové inštancie HarperDB na požiadanie. Prešli sme si aj to, ako povoliť replikáciu, a pridali sme ukážkové vlastné funkcie, aby sme ukázali, ako je možné pridať vrstvu API s malými režijnými nákladmi.







