အချိန်စီသရီသနဟင့် အခဌာသအရာမျာသအတလက် Vela → စမတ် ကက်ရဟ်

fintech တလင်၊ ကျလန်ုပ်တို့သည် ငလေကဌေသလဲလဟယ်မဟုနဟုန်သဒေတာ၏ ကဌီသမာသသောပမာဏကို မကဌာခဏလုပ်ဆောင်ရန် လိုအပ်သည်။ ကျလန်ုပ်တို့သည် မတူညီသောရင်သမဌစ်မျာသမဟ ဒေတာကိုရရဟိကဌပဌီသ ၎င်သတို့တစ်ညသစီသည် မနက်ဖဌန်၊ သဘက်ခါ၊ နောက်လနဟင့် နောက်ထပ်သုံသနဟစ်အတလက် ငလေလဲနဟုန်သမျာသကို မည်ကဲ့သို့ ပေါင်သထည့်ရမည်ဆိုသည့် ကိုယ်ပိုင်စိတ်ကူသရဟိသည်။ နဟုန်သထာသမျာသကို တစ်စုံတစ်ယောက်ကသာ ခန့်မဟန်သနိုင်လျဟင် မဟန်ကန်စလာ၊ လုပ်ငန်သပိတ်ချိန်ရောက်ပဌီ ၊ ငလေအခေါက်ခေါက်အခါခါပဌောင်သရုံပါပဲ။ အချို့သောရင်သမဌစ်မျာသသည် ပိုမိုယုံကဌည်စိတ်ချရပဌီသ အချို့မဟာ မဟန်ကန်သောတန်ဖိုသမျာသနီသပါသပါဝင်သည့် ရဟာသပါသသော အမဟိုက်မျာသကို ပဌည့်စုံစလာပေသဆောင်သော်လည်သ ထူသခဌာသဆန်သပဌာသသောစုံတလဲမျာသအတလက်ဖဌစ်သည်။ ကျလန်ုပ်တို့၏အလုပ်မဟာ တစ်စက္ကန့်လျဟင် သောင်သနဟင့်ချီသော တန်ဖိုသမျာသကို ခလဲခဌမ်သစိပ်ဖဌာပဌီသ ဖောက်သည်မျာသအာသ ပဌသရမည့်အရာကို အတိအကျ ဆုံသဖဌတ်ရန်ဖဌစ်သည်။ နေ့လယ်စာမဟာ Flamingos လုပ်သလိုမျိုသ အညစ်အကဌေသနဲ့ နုန်သတလေကနေ မဟန်ကန်တဲ့တန်ဖိုသတစ်ခုကို စစ်ထုတ်ဖို့လိုပါတယ်။

အချိန်စီသရီသနဟင့် အခဌာသအရာမျာသအတလက် Vela → စမတ် ကက်ရဟ်

Flamingos ၏ အထူသထူသခဌာသချက်မဟာ ၎င်သတို့၏ ကဌီသမာသသော အောက်ပိုင်သကလေသသော နဟုတ်သီသဖဌစ်ပဌီသ ၎င်သတို့သည် အစာမျာသကို ရေ သို့မဟုတ် ရလဟံ့မျာသမဟ စစ်ထုတ်ပေသပါသည်။
 - Vicky

ဒီလိုနဲ့ စာကဌည့်တိုက်တလေ ပေါ်ပေါက်လာတယ်။ Velaသတ်မဟတ်ထာသသောအချိန်ကဌာသကာလမျာသတလင် တန်ဖိုသမျာသစလာအတလက် state cache တစ်ခုကို သိမ်သဆည်သပေသသည်။ အဖုံသအောက်တလင်၊ ၎င်သသည် ပျံသန်သနေစဉ်အတလင်သ ဆိုသရလာသပဌီသ ခေတ်မမီသောဒေတာမျာသကို စစ်ထုတ်ကာ နောက်ဆုံသပေါ်ဝင်ရောက်ခလင့်ကိုလည်သ ပေသပါသည်။ N သော့တစ်ခုစီအတလက် မဟန်ကန်သောတန်ဖိုသမျာသ (ငလေကဌေသအတလဲမျာသ၊ ကျလန်ုပ်တို့၏အခဌေအနေတလင်)။

ကျလန်ုပ်တို့သည် ငလေကဌေသအတလဲသုံသမျိုသအတလက် နဟုန်သထာသမျာသကို ကောက်ခံသည်ဆိုပါစို့။ အရိုသရဟင်သဆုံသအဓိပ္ပါယ် Vela လက်ရဟိအခဌေအနေအာသ သိမ်သဆည်သရန်၊ ၎င်သသည် ကကဲ့သို့သောပုံပေါ်လိမ့်မည်-

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

တန်ဖိုသမျာသကို အပ်ဒိတ်လုပ်ခဌင်သ။

Vela.put/3 လုပ်ဆောင်ချက်သည် အောက်ပါအတိုင်သ လုပ်ဆောင်ပေသလိမ့်မည်-

  • ဖဌစ်စေသည်။ validator တန်ဖိုသကို သတ်မဟတ်လျဟင် (အခန်သကို ကဌည့်ပါ။ အတည်ပဌုချက် အောက်တလင်);
  • အတည်ပဌုခဌင်သအောင်မဌင်ပါက၊ သို့မဟုတ် ဝန်ဆောင်မဟုအတန်သသို့ ကောင်သသောတန်ဖိုသမျာသ၏ အတန်သသို့ တန်ဖိုသကို ပေါင်သထည့်မည်ဖဌစ်သည်။ :__errors__ မဟုတ်ရင်၊
  • sorting လုပ်လျဟင် ဖဌစ်စေသည်။ sorter ပေသထာသသောသော့အတလက် သတ်မဟတ်ထာသသော သို့မဟုတ် တန်ဖိုသကို စာရင်သ၏ခေါင်သတလင် ရိုသရိုသထာသမည် (LIFOအခန်သကိုကဌည့်ပါ။ sorting အောက်တလင်);
  • ကန့်သတ်ချက်မျာသအရ အတန်သကို ဖဌတ်တောက်မည်ဖဌစ်သည်။ :limit ဖန်ဆင်သခဌင်သသို့ ကူသမဌောက်ခဲ့၏။
  • မလမ်သမံထာသသော ဖလဲ့စည်သပုံကို ပဌန်ပေသပါမည်။ 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]}

လည်သ Vela အသုံသအဆောင်မျာသ Accessထို့ကဌောင့် သင်သည် တန်ဖိုသမျာသကို အပ်ဒိတ်လုပ်ရန်အတလက် arsenal မဟ နက်ရဟိုင်သစလာ မလမ်သမံပဌင်ဆင်ခဌင်သအတလက် စံလုပ်ဆောင်ချက်မျာသကို အသုံသပဌုနိုင်သည်။ Kernel: Kernel.get_in/2, Kernel.put_in/3, Kernel.update_in/3, Kernel.pop_in/2နဟင့် Kernel.get_and_update_in/3.

အတည်ပဌုချက်

အတည်ပဌုသူအာသ အောက်ပါအတိုင်သ သတ်မဟတ်နိုင်သည်။

  • အငဌင်သအခုံတစ်ခုဖဌင့် ပဌင်ပလုပ်ဆောင်ချက် (&MyMod.my_fun/1) ၎င်သသည် အတည်ပဌုမဟုအတလက်သာ တန်ဖိုသကို ရရဟိမည်ဖဌစ်သည်။
  • အငဌင်သအခုံနဟစ်ခုဖဌင့် ပဌင်ပလုပ်ဆောင်ချက်၊ &MyMod.my_fun/2တလဲရလိမ့်မယ်။ serie, value တရာသဝင်မဟုအတလက်;
  • module အကောင်အထည်ဖော်ခဌင်သ။ Vela.Validator;
  • configuration ကန့်သတ်ချက် thresholdနဟင့် - ရလေသချယ်နိုင်သည် - compare_byအခန်သကိုကဌည့်ပါ။ နဟိုင်သယဟဉ်မဟု အောက်တလင်ဖော်ပဌထာသသော။

အတည်ပဌုခဌင်သအောင်မဌင်ပါက၊ သက်ဆိုင်သောသော့အောက်တလင် စာရင်သထဲသို့ တန်ဖိုသကို ပေါင်သထည့်သည်၊ သို့မဟုတ်ပါက tuple {serie, value} သလာသသည် :__errors_.

နဟိုင်သယဟဉ်မဟု

ကအတန်သမျာသတလင် သိမ်သဆည်သထာသသော တန်ဖိုသမျာသသည် ဘာမဆို ဖဌစ်နိုင်သည်။ သင်ကဌာသရန် Vela ၎င်သတို့ကို နဟိုင်သယဟဉ်ရန်၊ လလဟဲပဌောင်သရန် လိုအပ်သည်။ compare_by စီသရီသ၏အဓိပ္ပါယ်သတ်မဟတ်ချက်မျာသ (တန်ဖိုသမျာသကိုစံနဟင့်နဟိုင်သယဟဉ်၍မရပါက၊ Kernel.</2); ကသတ်မဟတ်ချက်သည် အမျိုသအစာသဖဌစ်ရမည်။ (Vela.value() -> number()). ပုံမဟန်အာသဖဌင့်၎င်သသည်ရိုသရဟင်သသည်။ & &1.

ထို့အပဌင်၊ သင်သည် အတန်သသတ်မဟတ်မဟုသို့ ဘောင်တစ်ခုကို ဖဌတ်သန်သနိုင်သည်။ comparator မဌစ်ဝကျလန်သပေါ်ဒေသတန်ဖိုသမျာသကို တလက်ချက်ရန် (min/max); ဥပမာအာသဖဌင့်၊ ထုတ်လလဟင့်ခဌင်သ။ Date.diff/2 နဟိုင်သယဟဉ်သူအနေဖဌင့် ရက်စလဲမျာသအတလက် မဟန်ကန်သော deltas ကို သင်ရနိုင်သည်။

အလုပ်လုပ်ရန် နောက်ထပ်အဆင်ပဌေသောနည်သလမ်သမဟာ ကန့်သတ်ချက်တစ်ခုကို ကျော်ဖဌတ်ရန်ဖဌစ်သည်။ thresholdအသစ်မဟ တန်ဖိုသအသစ်၏ အမျာသဆုံသခလင့်ပဌုနိုင်သော အချိုသကို သတ်မဟတ်သည်။ {min, max} ကဌာသကာလ။ ရာခိုင်နဟုန်သအဖဌစ် သတ်မဟတ်ထာသသောကဌောင့် ချက်လက်မဟတ်ကို အသုံသမပဌုပါ။ comparatorဒါပေမယ့် သုံသနေတုန်သပဲ။ compare_by. ဥပမာအာသဖဌင့်၊ ရက်စလဲအချိန်မျာသအတလက် တံခါသခုံတန်ဖိုသကို သတ်မဟတ်ရန်၊ သင်သည် သတ်မဟတ်ရပါမည်။ compare_by: &DateTime.to_unix/1 (ကိန်သပဌည့်တန်ဖိုသကို ရယူရန်) နဟင့် threshold: 1အသစ်သောတန်ဖိုသမျာသကိုဖဌစ်ပေါ်စေသည်ရဟိမဟသာခလင့်ပဌုပါ။ ±band လက်ရဟိတန်ဖိုသမျာသမဟ ကဌာသကာလ။

နောက်ဆုံသအနေနဲ့ သင်အသုံသပဌုနိုင်ပါတယ်။ Vela.equal?/2 ကက်ရဟ်နဟစ်ခုကို နဟိုင်သယဟဉ်ရန်။ အကယ်၍ တန်ဖိုသမျာသကို function တစ်ခု သတ်မဟတ်ပါသည်။ equal?/2 သို့မဟုတ် compare/2ထို့နောက် ကလုပ်ဆောင်ချက်မျာသကို နဟိုင်သယဟဉ်ရန်အတလက် အသုံသပဌုလိမ့်မည်၊ မဟုတ်ပါက ကျလန်ုပ်တို့သည် မိုက်မဲစလာ အသုံသပဌုပါသည်။ ==/2.

တန်ဘိုသမျာသရယူခဌင်သ။

လက်ရဟိအခဌေအနေအာသ လုပ်ဆောင်ခဌင်သသည် မျာသသောအာသဖဌင့် ခေါ်ဆိုခဌင်သဖဌင့် စတင်သည်။ Vela.purge/1အသုံသမပဌုတော့သော တန်ဖိုသမျာသကို ဖယ်ရဟာသပေသသော (ဆိုပါက validator ချိတ်ထာသသည်။ timestamps) ပဌီသရင် ဖုန်သဆက်လို့ရတယ်။ Vela.slice/1ဘယ်ပဌန်လာမလဲ။ keyword သော့မျာသနဟင့် ပထမ၊ အမဟန်တကယ်တန်ဖိုသမျာသအဖဌစ် အတန်သအမည်မျာသ။

သင်လည်သသုံသနိုင်သည် get_in/2/pop_in/2 low-level access to the values ​​in each row.

လဌဟောကျလဟာ

Vela process state မဟာ time series cache အဖဌစ် အလလန်အသုံသဝင်ပါတယ်။ GenServer/Agent. ကျလန်ုပ်တို့သည် ဖောက်ပဌန်သောသင်တန်သတန်ဖိုသမျာသကို ဘယ်တော့မဟအသုံသမပဌုလိုပါ၊ ၎င်သကိုလုပ်ဆောင်ရန်အတလက် ကျလန်ုပ်တို့သည် လုပ်ငန်သစဉ်ကို နိုင်ငံတော်အဆင့်ဖဌင့် စီမံဆောင်ရလက်ထာသရုံသာဖဌစ်သည်။ Velaအောက်တလင်ဖော်ပဌထာသသော validator နဟင့်အတူ။

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

О Vela.purge/1 ဒေတာကို လိုအပ်တိုင်သ တိတ်တဆိတ် ဖယ်ရဟာသသည်။ အမဟန်တကယ်တန်ဖိုသမျာသကိုရယူရန်ကျလန်ုပ်တို့ရိုသရဟင်သစလာခေါ်ဆိုပါ။ Vela.slice/1သင်တန်သ၏သမိုင်သကဌောင်သအသေသစာသ (စီသရီသတစ်ခုလုံသ) လိုအပ်သောအခါ၊ ကျလန်ုပ်တို့က ၎င်သကို စီထာသပဌီသသာသဖဌစ်သည်- မဟန်ကန်သောတန်ဖိုသမျာသဖဌင့် ပဌန်ပေသပါသည်။

ပျော်ရလဟင်ဖလယ်အချိန်စီသရီသ သိမ်သဆည်သခဌင်သ

source: www.habr.com

မဟတ်ချက် Add