Tasques

Cozi de activitati sustinute de Elasticsearch (ES): Tasques

Pronuntat: / tɑːsks /, ca „sarcini”

Stiti, pentru sarcinile de fundal!

De ce sa folositi ES ca magazin de date Tasks? Este scalabil orizontal, foarte disponibil si ofera o multime de moduri incorporate de a va gestiona datele (gestionarea ciclului de viata, instantanee etc.).

Caracteristici:

  • Usor scalabil:
    • Serverele sunt apatrizi; doar invartiti mai mult, dupa cum este necesar
    • Motorul de stocare este Elasticsearch, a spus nuff.
  • Sarcinile sunt configurabile:
    • Prioritate
    • Programati pentru a rula mai tarziu
    • Incercari cu crestere exponentiala a intarzierilor de reincercare.
  • Idempotenta
  • Sarcini recurente care sunt repuse in mod repetat la intervale configurabile (format cron cu suport macro de baza la @every 1m)
    • De asemenea, accepta omiterea daca exista sarcini restante pentru o anumita activitate recurenta
  • Expirari pentru activitati care sunt preluate de lucratori, dar fie nu se raporteaza, fie nu se termina la timp.
  • Arhivarea sarcinilor finalizate (GATA sau GATA), de asemenea configurabile
    • Daca Managementul ciclului de viata al indexului (ILM) este activat (implicit), indexul arhivei este setat sa ruleze automat pentru o gestionare usoara a datelor vechi.
  • Revendicarea permite ca sarcinile care sunt preluate, dar care nu pot fi tratate, sa fie reluate fara consecinte.
  • API este expus ca Swagger; generati cu usurinta clienti in orice limba:
    • Utilizati clientul pentru a extrage sarcini din aplicatia dvs.
    • Lucratorii sunt doar o bucla in jurul clientului, apoi propria logica de afaceri pentru a face treaba reala.
  • Modele si tablouri de bord Kibana Index pre-insamantate pentru sarcini de monitorizare.
  • Configurare simpla: utilizati un fisier de configurare, optional suprascrieti cu variabile de mediu (12 factori gata).
  • Monitorizarea performantei aplicatiei: valorile sunt exportate in APM si disponibile din nou de la Kibana (mai multe mai jos)

Utilizare

Alergare

Tasques este disponibil ca o mica imagine Docker, cu imagini publicate automat de CI la apasari / imbinari pentru a impinge si a marca etichete.

Pentru a va face o idee rapida despre ceea ce este inclus si despre cum sa incepeti sa functionati cu Kubernetes:

  1. Mergeti la docker / k8s si rulati make install-eck deploy si asteptati pana cand podurile sunt gata (kubectl obtine poduri)
  2. Pentru Swagger, accesati localhost: 8080 / swagger / index.html
  3. Pentru a va conecta la Kibana pentru tablouri de bord si statistici APM, rulati make-credentials pentru a obtine parola de utilizator elastica si accesati localhost: 5601 pentru a va conecta.

Exista, de asemenea, un exemplu de proiect care demonstreaza mai amanuntit relatia aplicatie-sarcini-lucrator; va rugam sa consultati exemple / cifre pentru mai multe detalii.

Monitorizarea

Serverul accepta APM, asa cum este configurat in conformitate cu documentele oficiale.

Valabilitate ridicata

Serverul Tasque este in principiu apatrid; dar exista joburi recurente interne care trebuie luate in considerare, cum ar fi monitorizarea sarcinilor revendicate si expirarea acestora dupa cum este necesar si programarea sarcinilor recurente.

Aceste lucrari interne apar doar pe serverul Leader, asa cum este determinat de o blocare a liderului. Rasucind mai mult de un server Tasque, veti obtine nu numai avantajele ca puteti gestiona mai multa sarcina, dar va protejati si de potentialele perturbari in desfasurarea acestor sarcini interne, deoarece un nou lider va fi ales si va prelua daca actualul lider pierde conectivitatea sau este terminat.

Rularea mai multor servere permite, de asemenea, lansarea in timp liber a noilor versiuni ale serverului Tasques.

Livrare

Presupunand ca nu exista pierderi de date la nivelul ES, Tasques furnizeaza cel putin o data livrarea, asigurandu-se ca permite doar unui singur Lucrator (identificat prin Id) sa aiba pretentii la o Sarcina la un moment dat.

Daca exista pierderi / recuperari de date (recuperare instantanee, pierderi de nod ES), lucrarile ar putea fi distribuite de doua ori, deci este o idee buna sa faceti gestionarea lucrarilor idempotenta.

Idempotenta

Cand trimiteti / creati o sarcina, puteti specifica optional un camp „id”, care actioneaza o cheie de idempotenta specifica cozii (un UUID este generat si utilizat daca nu este specificat). Daca exista deja o Sarcina in Coada pe care ati specificat-o cu acea cheie, trimiterea nu va reusi.

Retineti ca idempotenta este doar pentru Sarcini nearhivate: este posibil ca o Sarcina sa fie creata cu acelasi Id ca o alta Sarcina deja arhivata.

guarras masturbandose pajas trans
violada xxx pelis porno españolas
megan montaner follando maduras americanas
esposas compartidas incesto madre hijos
videos prono trio por sorpresa
xxx incesto real xxx torrent magnet
madres incestuosas incesto jovencitas
vecinas cachondas abuelas a cuatro patas
monica hoyos porno porno español dinero
pilladas cagando pillados follando
folladas extremas videos heroticos
corridas en la garganta suegras españolas follando
enseñando a follar pilladas cagando
jolla pr viejas muy calientes
mujer masturbandose porno por el culo
violadas xxx travestis meando
pornolesvianas mujeres peludas follando
potno peliculas porno traducidas al castellano
maduras españolas anal peliculas eroticas alemanas
guarras.com videos porno trios español

Configurarea perioadei archive_older_than poate fi modificata daca aceasta este o problema.

Sarcini recurente

Tasques vine cu suport pentru programarea sarcinilor puse la coada la o anumita expresie cron (delegarea catre robconfig / cron, deci verificati acolo expresiile acceptate).

Exista, de asemenea, asistenta pentru a sari peste sarcinile de asteptare pentru o sarcina recurenta daca exista restante (care nu sunt moarte sau terminate) care ii apartin. Pentru sarcini recurente de inalta frecventa (mai mari decat o data la fiecare ~ 2 secunde), aceasta este supusa unor limitari in ES in sine, deoarece actualizeaza indicii pe un interval configurabil. Pentru a aborda acest lucru, puteti configura intervalul de reimprospatare a indexului ES pentru a fi mai frecvent sau puteti configura tasques in sine pentru a fi mai agresiv in ceea ce priveste indicii de reimprospatare (consultati config / tasques.example.yaml pentru detalii).

Dev

Necesita Go 1.13+.

  1. Instalati Go
  2. Folositi editorul / IDE-ul dvs. preferat
  3. Pentru actualizarea documentelor Swagger:
    1. Instalati Swaggo
    2. Rulati swag init -g app / main.go din directorul proiectului radacina
      • Verificati daca nu exista timp. Campurile de timp … exista o stare de curse acolo undeva
    3. Confirmati fisierele generate.
  4. Pentru actualizarea clientului Go:
    1. Instalati go-swagger
    2. Rulati swagger generati client -f docs / swagger.yaml
    3. Confirmati fisierele generate.

Rularea testelor

Teste unitare : du-te test. / …

Teste de integrare : go test -tags = integrare. / … (gaseste // + construi integrarea in partea de sus a fisierelor IT)

Ghidul codului

Codul subliniaza urmatoarele:

  1. Siguranta : codul trebuie sa faca ceea ce trebuie. Utilizati functii incorporate (incuietori, ID-uri tastate) si teste pentru a ajuta la maximizarea sigurantei.
  2. Eficienta : serverul si codul sau ar trebui sa fie destul de eficiente, astfel incat sa poata gestiona sarcini mari.
  3. Observabilitate : acolo unde este rezonabil, transmiteti un context pentru a putea exporta valori de performanta. Aceasta este o necesitate atunci cand efectuati orice tip de apel IO.
  4. Disponibilitate ridicata : serverul trebuie sa poata rula intr-un mod foarte disponibil pentru a maximiza robusul.
  5. Simplitate : API-ul trebuie sa fie simplu si usor de utilizat
  6. Mentenabilitate : internele trebuie sa fie cat se poate de simple si sa invite contributii. Folositi regula 3 pentru a sti cand trebuie generalizat ceva. Daca aveti dubii, repetati-va.

Credit

Acest proiect a fost inspirat de urmatoarele, in nici o ordine speciala

  • Telina
  • Resque
  • Sidekiq
  • Faktory
  • stoarce