Vela β†’ ntse cache rau lub sijhawm series thiab ntau dua

Hauv fintech, peb feem ntau yuav tsum ua cov ntaub ntawv loj heev ntawm cov ntaub ntawv pauv pauv nyiaj. Peb tau txais cov ntaub ntawv los ntawm ntau qhov chaw, thiab lawv txhua tus muaj nws tus kheej lub tswv yim ntawm yuav ua li cas ntxiv cov nqi pauv rau tag kis, hnub tom qab tag kis, lub hli tom ntej thiab txawm tias peb xyoos tom ntej. Yog tias tsuas yog ib tus neeg tuaj yeem kwv yees tus nqi txoj cai, nws yuav yog lub sijhawm kaw lub lag luam thiab tsuas yog ruam hloov nyiaj rov qab thiab tawm mus. Qee qhov chaw muaj kev ntseeg siab dua, qee qhov muab cov khib nyiab tag nrho, nrog qhov tsis tshua muaj kev suav nrog yuav luag qhov tseeb, tab sis rau cov khub niam txiv kab txawv. Peb txoj hauj lwm yog sift los ntawm cov kaum tawm txhiab tus nqi ntawm ib ob thiab txiav txim siab seb yuav ua li cas qhia rau cov neeg siv khoom. Peb yuav tsum tau lim tawm ib qho txiaj ntsig zoo los ntawm tons ntawm av thiab av, ib yam li flamingos ua noj su.

Vela β†’ ntse cache rau lub sijhawm series thiab ntau dua

Ib qho tshwj xeeb tshwj xeeb ntawm flamingos yog lawv cov beak loj heev downwardly nkhaus, uas lawv lim zaub mov los ntawm dej los yog av nkos.
 - Wiki

Yog li ntawd lub tsev qiv ntawv tau yug los Vela, uas khaws ib lub xeev cache rau ntau yam txiaj ntsig ntawm lub sijhawm teev tseg. Nyob rau hauv lub hood, nws lim tawm cov ntaub ntawv phem thiab outdated ntawm ya, thiab kuj muab kev nkag mus rau qhov tseeb N validated qhov tseem ceeb rau txhua tus yuam sij (txiaj khub, hauv peb rooj plaub).

Wb hais tias peb sau cov nqi rau peb lub txiaj khub. Yooj yim txhais Vela khaws lub xeev tam sim no nws yuav zoo li no:

defmodule Pairs do
  use Vela,
    eurusd: [sorter: &Kernel.<=/2],
    eurgbp: [limit: 3, errors: 1],
    eurcad: [validator: Pairs]

  @behaviour Vela.Validator

  @impl Vela.Validator
  def valid?(:eurcad, rate), do: rate > 0
end

Hloov kho cov nqi

Vela.put/3 Cov haujlwm yuav ua raws li hauv qab no:

  • yuav ua rau validator ntawm tus nqi, yog tias ib qho tau txhais (saib tshooj Kev lees paub hauv qab no);
  • yuav ntxiv tus nqi rau kab ntawm cov txiaj ntsig zoo yog tias qhov kev lees paub tau ua tiav, lossis rau kab kev pabcuam :__errors__ txwv tsis pub;
  • yuav ua rau sorting yog sorter txhais rau tus yuam sij muab, los yog yuav tsuas muab tus nqi ntawm lub taub hau ntawm daim ntawv (LUB NEEJ, saib tshooj Kev cais tawm hauv qab no);
  • yuav luas kab raws li qhov parameter :limit dhau los ntawm kev tsim;
  • yuav rov qab kho cov qauv Vela.

iex|1 > pairs = %Pairs{}
iex|2 > Vela.put(pairs, :eurcad, 1.0)
#β‡’ %Pairs{..., eurcad: [1.0], ...}
iex|3 > Vela.put(pairs, :eurcad, -1.0)
#β‡’ %Pairs{__errors__: [eurcad: -1.0], ...}
iex|4 > pairs |> Vela.put(:eurusd, 2.0) |> Vela.put(:eurusd, 1.0)
#β‡’ %Pairs{... eurusd: [1.0, 2.0]}

Tsis tas li ntawd Vela siv Access, yog li koj tuaj yeem siv ib qho ntawm cov qauv ua haujlwm rau kev sib sib zog nqus hloov kho cov qauv los ntawm arsenal los hloov kho qhov tseem ceeb Kernel: Kernel.get_in/2, Kernel.put_in/3, Kernel.update_in/3, Kernel.pop_in/2, Thiab Kernel.get_and_update_in/3.

Kev lees paub

Tus validator tuaj yeem txhais tau tias:

  • kev ua haujlwm sab nraud nrog ib qho kev sib cav (&MyMod.my_fun/1), nws tsuas yuav tau txais tus nqi rau validation;
  • kev ua haujlwm sab nraud nrog ob qhov kev sib cav, &MyMod.my_fun/2, nws yuav tau ib khub serie, value rau validation;
  • kev siv module Vela.Validator;
  • configuration parameter threshold, thiab - optionally - compare_by, saib tshooj Piv hauv qab.

Yog tias validation ua tiav, tus nqi ntxiv rau cov npe hauv qab tus yuam sij sib raug; txwv tsis pub, tuple {serie, value} mus rau :__errors_.

Sib piv

Cov nqi khaws cia hauv cov kab no tuaj yeem yog dab tsi. Qhia Vela piv rau lawv, nws yog ib qho tsim nyog yuav tau hloov compare_by parameter nyob rau hauv series txhais (tshwj tsis yog qhov tseem ceeb tsis tuaj yeem muab piv nrog tus qauv Kernel.</2); qhov parameter no yuav tsum yog hom (Vela.value() -> number()). Los ntawm lub neej ntawd nws yooj yim & &1.

Tsis tas li, koj tuaj yeem dhau qhov parameter rau kab txhais comparator xam cov nqi delta (min/max); piv txwv li, los ntawm kev xa tawm Date.diff/2 Raws li kev sib piv, koj tuaj yeem tau txais qhov tseeb deltas rau hnub.

Lwm txoj hauv kev yooj yim rau kev ua haujlwm yog kom dhau qhov ntsuas threshold, uas txhais qhov siab tshaj plaws pub piv ntawm tus nqi tshiab rau {min, max} lub sijhawm. Txij li nws tau teev tseg raws li feem pua, daim tshev tsis siv comparatortab sis tseem siv compare_by. Piv txwv li, txhawm rau txheeb xyuas tus nqi pib rau hnub tim, koj yuav tsum qhia meej compare_by: &DateTime.to_unix/1 (kom tau txais tus lej suav) thiab threshold: 1, ua rau muaj nuj nqis tshiab tsuas yog tso cai yog tias lawv nyob hauv Β±band ncua sij hawm los ntawm cov nqi tam sim no.

Thaum kawg, koj tuaj yeem siv Vela.equal?/2 piv ob lub caches. Yog tias tus nqi txhais tau tias muaj nuj nqi equal?/2 los yog compare/2, ces cov haujlwm no yuav raug siv rau kev sib piv, txwv tsis pub peb siv stupidly ==/2.

Tau txais txiaj ntsig

Kev ua lub xeev tam sim no feem ntau pib nrog kev hu Vela.purge/1, uas tshem tawm cov txiaj ntsig uas tsis siv lawm (yog validator khi rau timestamps). Ces koj hu tau Vela.slice/1uas yuav rov qab los keyword nrog cov npe kab ua tus yuam sij thiab thawj, qhov tseem ceeb.

Koj kuj siv tau get_in/2/pop_in/2 rau qib qis nkag mus rau qhov tseem ceeb hauv txhua kab.

Daim ntawv thov

Vela tuaj yeem ua tau zoo heev raws li lub sij hawm series cache nyob rau hauv lub xeev txheej txheem xws li GenServer/Agent. Peb xav kom tsis txhob siv qhov tseem ceeb ntawm chav kawm, thiab ua qhov no peb tsuas yog khaws cov txheej txheem nrog lub xeev ua tiav Vela, nrog tus validator qhia hauv qab no.

@impl Vela.Validator
def valid?(_key, %Rate{} = rate),
  do: Rate.age(rate) < @death_age

ΠΈ Vela.purge/1 ntsiag to tshem tawm tag nrho cov nqi stale txhua zaus peb xav tau cov ntaub ntawv. Txhawm rau nkag mus rau qhov txiaj ntsig tiag peb tsuas yog hu Vela.slice/1, thiab thaum yuav tsum muaj keeb kwm me me ntawm chav kawm (tag nrho cov koob), peb tsuas yog xa rov qab nws - twb tau txheeb xyuas - nrog cov txiaj ntsig tau lees paub.

Zoo siab lub sij hawm series caching!

Tau qhov twg los: www.hab.com

Ntxiv ib saib