Blockchaininizdə neçə TPS var?

Qeyri-texniki şəxsin hər hansı paylanmış sistemlə bağlı sevimli sualı "Blokçeyninizdə neçə tps var?" Bununla belə, cavabda verilən nömrənin adətən sual verənin eşitmək istədikləri ilə çox az ümumiliyi var. Əslində, o, "blokçeyniniz mənim biznes tələblərimə uyğun olacaqmı" deyə soruşmaq istəyirdi və bu tələblər bir rəqəm deyil, bir çox şərtlərdir - burada şəbəkə səhvlərinə dözümlülük, yekun tələblər, ölçülər, əməliyyatların xarakteri və bir çox digər parametrlər var. Beləliklə, "nə qədər tps" sualının cavabı çətin ki, sadə olsun və demək olar ki, heç vaxt tamamlanmır. Kifayət qədər mürəkkəb hesablamalar aparan onlarla və ya yüzlərlə qovşaqdan ibarət paylanmış sistem şəbəkənin vəziyyəti, blokçeynin məzmunu, texniki nasazlıqlar, iqtisadi problemlər, şəbəkəyə hücumlar və bir çox başqa səbəblərlə bağlı çoxlu sayda müxtəlif vəziyyətlərdə ola bilər. . Performans problemlərinin mümkün olduğu mərhələlər ənənəvi xidmətlərdən fərqlənir və blokçeyn şəbəkə serveri verilənlər bazası, veb server və torrent müştəri funksiyalarını birləşdirən şəbəkə xidmətidir ki, bu da onu bütün alt sistemlərdə yükləmə profili baxımından son dərəcə mürəkkəb edir. : prosessor, yaddaş, şəbəkə, yaddaş

Belə olur ki, mərkəzləşdirilməmiş şəbəkələr və blokçeynlər mərkəzləşdirilmiş proqram tərtibatçıları üçün olduqca spesifik və qeyri-adi proqramdır. Buna görə də mərkəzləşdirilməmiş şəbəkələrin fəaliyyətinin və davamlılığının mühüm aspektlərini, onların ölçülməsinə və darboğazların tapılmasına yanaşmaları vurğulamaq istərdim. Blockchain istifadəçilərinə xidmət göstərmə sürətini məhdudlaşdıran müxtəlif performans məsələlərini nəzərdən keçirəcəyik və bu tip proqram təminatının xarakterik xüsusiyyətlərini qeyd edəcəyik.

Blockchain müştərisi tərəfindən xidmət sorğusunun mərhələləri

Hər hansı bir az və ya çox mürəkkəb xidmətin keyfiyyəti haqqında vicdanla danışmaq üçün yalnız orta dəyərləri deyil, həm də maksimum/minimum, medianları, faizləri nəzərə almaq lazımdır. Nəzəri olaraq, bəzi blokçeyndə 1000 tps haqqında danışa bilərik, lakin 900 əməliyyat böyük sürətlə tamamlanıbsa və 100-ü bir neçə saniyə ərzində "ilişib" qalarsa, bütün əməliyyatlar üzrə toplanan orta vaxt müştəri üçün tamamilə ədalətli bir metrik deyil. bir neçə saniyə ərzində əməliyyatı tamamlaya bilmədim. Buraxılmış konsensus dövrələri və ya şəbəkə parçalanması nəticəsində yaranan müvəqqəti “deşiklər” sınaq skamyalarında əla performans göstərən xidməti böyük dərəcədə məhv edə bilər.

Bu cür darboğazları müəyyən etmək üçün əsl blokçeynin istifadəçilərə xidmət göstərməkdə çətinlik çəkə biləcəyi mərhələləri yaxşı başa düşmək lazımdır. Gəlin əməliyyatın çatdırılması və emal edilməsi, həmçinin blokçeynin yeni vəziyyətinin əldə edilməsi dövrünü təsvir edək ki, müştəri ondan öz əməliyyatının işləndiyini və uçota alındığını yoxlaya bilər.

  1. əməliyyat müştəri üzərində formalaşır
  2. əməliyyat müştəridə imzalanır
  3. müştəri qovşaqlardan birini seçir və öz əməliyyatını ona göndərir
  4. müştəri əməliyyatının nəticələrinin görünməsini gözləyən qovşağın dövlət məlumat bazasında yeniləmələrə abunə olur
  5. node əməliyyatı p2p şəbəkəsi üzərində paylayır
  6. bir neçə və ya bir BP (blok istehsalçısı) dövlət məlumat bazasını yeniləyərək yığılmış əməliyyatları emal edir
  7. BP tələb olunan sayda əməliyyatları emal etdikdən sonra yeni blok təşkil edir
  8. BP p2p şəbəkəsi üzərində yeni blok paylayır
  9. yeni blok müştərinin daxil olduğu node-a çatdırılır
  10. node dövlət verilənlər bazasını yeniləyir
  11. node müştəri ilə bağlı yeniləməni görür və ona əməliyyat bildirişi göndərir

İndi bu mərhələlərə daha yaxından nəzər salaq və hər mərhələdə potensial performans problemlərini təsvir edək. Mərkəzləşdirilmiş sistemlərdən fərqli olaraq, biz şəbəkə müştərilərində kodun icrasını da nəzərdən keçirəcəyik. Çox vaxt, TPS ölçərkən, əməliyyatın işləmə müddəti müştəridən deyil, qovşaqlardan toplanır - bu tamamilə ədalətli deyil. Müştəri qovşağın əməliyyatını nə qədər tez emal etdiyinə əhəmiyyət vermir, onun üçün ən vacib şey blokçeynə daxil olan bu əməliyyat haqqında etibarlı məlumatın ona çatdığı andır. Məhz bu göstərici əməliyyatın icra müddətidir. Bu o deməkdir ki, müxtəlif müştərilər, hətta eyni əməliyyatı göndərməklə, kanaldan, yükdən və qovşağın yaxınlığından və s. asılı olaraq tamamilə fərqli vaxtlar ala bilərlər. Beləliklə, bu vaxtı müştərilərlə ölçmək mütləq lazımdır, çünki optimallaşdırılmalı olan parametr budur.

Müştəri tərəfində əməliyyatın hazırlanması

İlk iki nöqtədən başlayaq: əməliyyat müştəri tərəfindən formalaşır və imzalanır. Qəribədir ki, bu da müştəri baxımından blokçeyn performansının darboğazı ola bilər. Bu, bütün hesablamaları və verilənlərlə əməliyyatları öz üzərinə götürən mərkəzləşdirilmiş xidmətlər üçün qeyri-adi haldır və müştəri sadəcə olaraq hazır nəticə əldə edərək böyük həcmdə məlumat və ya hesablamalar tələb edə bilən qısa sorğu hazırlayır. Blokçeynlərdə müştəri kodu getdikcə daha güclü olur və blokçeyn nüvəsi getdikcə daha yüngül olur və kütləvi hesablama tapşırıqları adətən müştəri proqram təminatına ötürülür. Blockchain-də bir əməliyyatı kifayət qədər uzun müddətə hazırlaya bilən müştərilər var (müxtəlif merkle sübutları, qısa sübutlar, hədd imzaları və müştəri tərəfindəki digər mürəkkəb əməliyyatlardan danışıram). Asan zəncirdə yoxlamanın və müştəri ilə əməliyyatın ağır hazırlanmasının yaxşı nümunəsi Merkle-tree əsasında siyahıya üzvlük sübutudur. məqalə.

Həmçinin unutmayın ki, müştəri kodu sadəcə olaraq blokçeynə əməliyyatlar göndərmir, əvvəlcə blokçeynin vəziyyətini sorğulayır – və bu fəaliyyət şəbəkənin və blokçeyn qovşaqlarının sıxlığına təsir göstərə bilər. Beləliklə, ölçmə apararkən, müştəri kodunun davranışını mümkün qədər tamamilə təqlid etmək məqsədəuyğun olardı. Blockchaininizdə bəzi aktivləri köçürmək üçün ən sadə əməliyyata müntəzəm rəqəmsal imza qoyan adi yüngül müştərilər olsa belə, hər il müştəri üzərində daha kütləvi hesablamalar aparılır, kripto alqoritmləri güclənir və emalın bu hissəsi gələcəkdə əhəmiyyətli darboğaza çevrilir. Odur ki, diqqətli olun və 3.5 saniyə davam edən əməliyyatda əməliyyatın hazırlanması və imzalanmasına 2.5 saniyənin, şəbəkəyə göndərilməsinə və cavab gözləməsinə 1.0 saniyənin sərf edildiyi vəziyyəti qaçırmayın. Bu darboğazın risklərini qiymətləndirmək üçün yalnız blokçeyn qovşaqlarından deyil, müştəri maşınlarından ölçülər toplamaq lazımdır.

Əməliyyatın göndərilməsi və onun vəziyyətinin monitorinqi

Növbəti addım əməliyyatı seçilmiş blokçeyn qovşağına göndərmək və onu tranzaksiya hovuzuna qəbul etmək statusunu almaqdır. Bu mərhələ adi verilənlər bazasına girişə bənzəyir; node əməliyyatı hovuzda qeyd etməli və p2p şəbəkəsi vasitəsilə bu barədə məlumat yaymağa başlamalıdır. Burada performansın qiymətləndirilməsinə yanaşma ənənəvi Web API mikroservislərinin fəaliyyətinin qiymətləndirilməsinə bənzəyir və blokçeynlərdəki əməliyyatların özləri yenilənə və statuslarını aktiv şəkildə dəyişə bilər. Ümumiyyətlə, bəzi blokçeynlərdə əməliyyat məlumatlarının yenilənməsi bir neçə dəfə baş verə bilər, məsələn, zəncir çəngəlləri arasında keçid zamanı və ya BP-lər bloka əməliyyat daxil etmək niyyətlərini elan etdikdə. Bu hovuzun ölçüsünə və oradakı əməliyyatların sayına qoyulan məhdudiyyətlər blokçeynin fəaliyyətinə təsir göstərə bilər. Tranzaksiya hovuzu mümkün olan maksimum ölçüyə qədər doldurularsa və ya RAM-a uyğun gəlmirsə, şəbəkə performansı kəskin şəkildə düşə bilər. Blokçeynlərin lazımsız mesajların selindən qorunmaq üçün mərkəzləşdirilmiş vasitələri yoxdur və əgər blokçeyn yüksək həcmli əməliyyatları və aşağı ödənişləri dəstəkləyirsə, bu, əməliyyat hovuzunun daşmasına səbəb ola bilər - başqa bir potensial performans darboğazı.

Blockchain-də müştəri tranzaksiyanı bəyəndiyi hər hansı blokçeyn qovşağına göndərir, əməliyyatın hashı adətən göndərməzdən əvvəl müştəriyə məlumdur, ona görə də onun etməli olduğu yeganə şey əlaqəyə nail olmaq və ötürüldükdən sonra blokçeynin dəyişməsini gözləməkdir. onun vəziyyəti, onun əməliyyatını təmin edir. Qeyd edək ki, “tps” ölçməklə siz blokçeyn qovşağına qoşulmağın müxtəlif üsulları üçün tamamilə fərqli nəticələr əldə edə bilərsiniz. Bu, adi HTTP RPC və ya “abunə” nümunəsini həyata keçirməyə imkan verən WebSocket ola bilər. İkinci halda, müştəri daha əvvəl bildiriş alacaq və qovşaq əməliyyat statusu ilə bağlı cavablara daha az resurs (əsasən yaddaş və trafik) sərf edəcək. Beləliklə, "tps" ölçərkən müştərilərin qovşaqlara necə qoşulduğunu nəzərə almaq lazımdır. Buna görə də, bu darboğazın risklərini qiymətləndirmək üçün benchmark blockchain müştəriləri həm WebSocket, həm də HTTP RPC sorğuları ilə real şəbəkələrə uyğun nisbətdə təqlid etməyi, həmçinin əməliyyatların xarakterini və onların ölçüsünü dəyişdirməyi bacarmalıdır.

Bu darboğazın risklərini qiymətləndirmək üçün yalnız blokçeyn qovşaqlarından deyil, müştəri maşınlarından da ölçülər toplamaq lazımdır.

P2p şəbəkəsi vasitəsilə əməliyyatların və blokların ötürülməsi

Blokçeynlərdə iştirakçılar arasında əməliyyatları və blokları ötürmək üçün peer-to-peer (p2p) şəbəkəsindən istifadə edilir. Əməliyyatlar qovşaqlardan birindən başlayaraq, əməliyyatları bloklara yığan və eyni p2p-dən istifadə edərək bütün şəbəkə qovşaqlarına yeni bloklar paylayan həmyaşıd blok istehsalçılarına çatana qədər şəbəkə boyunca yayılır. Ən müasir p2p şəbəkələrinin əsasını Kademlia protokolunun müxtəlif modifikasiyaları təşkil edir. Burada bu protokolun yaxşı xülasəsi və burada - BitTorrent şəbəkəsində müxtəlif ölçmələri olan məqalə, ondan başa düşmək olar ki, bu tip şəbəkə mərkəzləşdirilmiş xidmətin sərt şəkildə konfiqurasiya edilmiş şəbəkəsindən daha mürəkkəb və daha az proqnozlaşdırıla bilər. Həmçinin, burada Ethereum qovşaqları üçün müxtəlif maraqlı ölçülərin ölçülməsi haqqında məqalə.

Qısacası, bu cür şəbəkələrdəki hər bir həmyaşıd, məzmunun ünvanlandığı məlumat bloklarını tələb etdiyi digər həmyaşıdların öz dinamik siyahısını saxlayır. Həmyaşıd sorğu qəbul etdikdə ya lazımi məlumatları verir, ya da sorğunu siyahıdan növbəti psevdo-təsadüfi həmyaşıdına ötürür və cavab aldıqdan sonra onu sorğuçuya ötürür və bir müddət yaddaşda saxlayır. növbəti dəfə daha əvvəl məlumat bloku. Beləliklə, populyar məlumatlar çoxlu sayda həmyaşıdların çoxlu sayda keşlərində başa çatır və populyar olmayan məlumatlar tədricən əvəz olunur. Həmyaşıdlar kimin kimə nə qədər məlumat ötürməsinin qeydlərini aparır və şəbəkə aktiv distribyutorların reytinqlərini artırmaqla və onlara daha yüksək səviyyədə xidmət göstərməklə stimullaşdırmağa çalışır, qeyri-aktiv iştirakçıları avtomatik olaraq həmyaşıdlar siyahısından çıxarır.

Beləliklə, tranzaksiya indi bütün şəbəkədə paylanmalıdır ki, blok istehsalçıları onu görə bilsin və bloka daxil etsin. Düyün hər kəsə yeni bir əməliyyatı aktiv şəkildə “paylayır” və gözləyən müştərini xəbərdar etmək üçün indeksində tələb olunan əməliyyatın görünəcəyi bloku gözləyən şəbəkəni dinləyir. Şəbəkənin p2p şəbəkələrində yeni əməliyyatlar və bloklar haqqında məlumatı bir-birinə ötürməsi üçün tələb olunan vaxt çox sayda amillərdən asılıdır: yaxınlıqda işləyən dürüst qovşaqların sayı (şəbəkə nöqteyi-nəzərindən), “isti- bu qovşaqların önbelleği, blokların ölçüsü, əməliyyatlar, dəyişikliklərin xarakteri, şəbəkə coğrafiyası, qovşaqların sayı və bir çox digər amillər. Bu cür şəbəkələrdə performans göstəricilərinin kompleks ölçülməsi mürəkkəb məsələdir, eyni zamanda həm müştərilər, həm də həmyaşıdlar (blokçeyn qovşaqları) üzrə sorğunun emal vaxtını qiymətləndirmək lazımdır. P2p mexanizmlərinin hər hansı birindəki problemlər, məlumatların səhv çıxarılması və keşləşdirilməsi, aktiv həmyaşıdların siyahılarının səmərəsiz idarə edilməsi və bir çox digər amillər bütövlükdə bütün şəbəkənin səmərəliliyinə təsir edən gecikmələrə səbəb ola bilər və bu darboğaz təhlil etmək ən çətin olanıdır. , test və nəticələrin şərhi.

Blockchain emalı və dövlət məlumat bazasının yenilənməsi

Blockchain-in ən vacib hissəsi konsensus alqoritmi, onun şəbəkədən alınan yeni bloklara tətbiqi və nəticələrin dövlət məlumat bazasında qeydə alınması ilə əməliyyatların işlənməsidir. Zəncirə yeni blok əlavə etmək və sonra əsas zənciri seçmək mümkün qədər tez işləməlidir. Bununla belə, real həyatda “gərəkdir” “işləyir” demək deyil və məsələn, iki uzun rəqabətli zəncirin daim öz aralarında keçid etdiyi, hər keçiddə hovuzdakı minlərlə əməliyyatın metadatasını dəyişdirdiyi bir vəziyyəti təsəvvür etmək olar. , və daim dövlət məlumat bazasını geri qaytarır. Bu mərhələ darboğazın müəyyən edilməsi baxımından p2p şəbəkə qatından daha sadədir, çünki əməliyyatın icrası və konsensus alqoritmi ciddi şəkildə deterministikdir və burada hər hansı bir şeyi ölçmək daha asandır.
Əsas odur ki, bu mərhələnin performansında təsadüfi deqradasiyanı şəbəkə problemləri ilə qarışdırmayın - qovşaqlar blokları və əsas zəncir haqqında məlumatı çatdırmaqda daha yavaşdır və xarici müştəri üçün bu, yavaş bir şəbəkə kimi görünə bilər, baxmayaraq ki, problem buradadır. tamam başqa yer.

Bu mərhələdə performansı optimallaşdırmaq üçün qovşaqların özlərindən ölçüləri toplamaq və izləmək və onlara dövlət məlumat bazasının yenilənməsi ilə əlaqəli olanları daxil etmək faydalıdır: qovşaqda işlənmiş blokların sayı, onların ölçüsü, əməliyyatların sayı, zəncir çəngəlləri arasında keçidlərin sayı, etibarsız blokların sayı, virtual maşının işləmə müddəti, məlumatların ötürülmə vaxtı və s. Bu, şəbəkə problemlərinin zəncirvari emal alqoritmlərindəki səhvlərlə qarışdırılmasının qarşısını alacaq.

Virtual maşın emal əməliyyatları blokçeynin işini optimallaşdıra biləcək faydalı məlumat mənbəyi ola bilər. Yaddaş ayırmalarının sayı, oxuma/yazma təlimatlarının sayı və müqavilə kodunun icrasının səmərəliliyi ilə bağlı digər göstəricilər tərtibatçılara çoxlu faydalı məlumatlar verə bilər. Eyni zamanda, ağıllı müqavilələr proqramlardır, yəni nəzəri cəhətdən onlar hər hansı bir resursu istehlak edə bilərlər: cpu/yaddaş/şəbəkə/saxlama, buna görə də əməliyyatın işlənməsi kifayət qədər qeyri-müəyyən bir mərhələdir, əlavə olaraq versiyalar arasında hərəkət edərkən çox dəyişir. və müqavilə kodları dəyişdirilərkən. Buna görə də, blokçeyn performansını effektiv şəkildə optimallaşdırmaq üçün tranzaksiya emalı ilə bağlı ölçülər də lazımdır.

Müştəri tərəfindən blokçeynə əməliyyatın daxil edilməsi barədə bildirişin alınması

Bu, blokçeyn müştərisinin xidməti qəbul etməsinin son mərhələsidir; digər mərhələlərlə müqayisədə böyük əlavə xərclər yoxdur, lakin hələ də müştərinin qovşaqdan həcmli cavab alma ehtimalını nəzərdən keçirməyə dəyər (məsələn, ağıllı müqavilə). bir sıra məlumatların qaytarılması). Hər halda, bu məqam “blokçeyninizdə neçə tps var?” sualını verən şəxs üçün ən vacibdir, çünki Bu anda xidmətin alınma vaxtı qeyd olunur.

Bu yerdə həmişə müştərinin blokçeyndən cavab gözləməsi üçün sərf etməli olduğu tam vaxtın göndərilməsi var; bu dəfə istifadəçi öz ərizəsində təsdiq gözləyəcək və onun optimallaşdırılmasıdır. tərtibatçıların əsas vəzifəsi.

Nəticə

Nəticədə, biz blokçeynlərdə həyata keçirilən əməliyyat növlərini təsvir edə və onları bir neçə kateqoriyaya ayıra bilərik:

  1. kriptoqrafik çevrilmələr, sübut konstruksiyası
  2. peer-to-peer şəbəkəsi, əməliyyat və blok replikasiyası
  3. əməliyyatların işlənməsi, smart müqavilələrin icrası
  4. blokçeynindəki dəyişikliklərin dövlət məlumat bazasına tətbiqi, əməliyyatlar və bloklar haqqında məlumatların yenilənməsi
  5. dövlət verilənlər bazası, blokçeyn node API, abunə xidmətləri üçün yalnız oxumaq üçün sorğular

Ümumiyyətlə, müasir blokçeyn qovşaqlarına texniki tələblər son dərəcə ciddidir - kriptoqrafiya üçün sürətli CPU-lar, dövlət verilənlər bazasını saxlamaq və tez daxil olmaq üçün böyük həcmdə RAM, çoxlu sayda eyni vaxtda açıq birləşmələrdən istifadə edərək şəbəkə qarşılıqlı əlaqəsi və böyük yaddaş. Bu cür yüksək tələblər və müxtəlif növ əməliyyatların bolluğu istər-istəməz qovşaqların kifayət qədər resurslara malik olmaya biləcəyinə gətirib çıxarır və sonra yuxarıda müzakirə olunan mərhələlərdən hər hansı biri ümumi şəbəkə performansı üçün başqa bir darboğaza çevrilə bilər.

Blokçeynlərin işini dizayn edərkən və qiymətləndirərkən bütün bu məqamları nəzərə almalı olacaqsınız. Bunun üçün siz müştərilərdən və şəbəkə qovşaqlarından eyni vaxtda ölçüləri toplamalı və təhlil etməli, onlar arasında korrelyasiya axtarmalı, müştərilərə xidmət göstərmək üçün lazım olan vaxtı təxmin etməli, bütün əsas resursları nəzərə almalısınız: cpu/memory/şəbəkə/storage , onların necə istifadə edildiyini anlayın və bir-birinə təsir edin. Bütün bunlar müxtəlif blokçeynlərin sürətlərini “nə qədər TPS” şəklində müqayisə etməyi son dərəcə nankor bir iş edir, çünki çox sayda müxtəlif konfiqurasiya və vəziyyət var. Böyük mərkəzləşdirilmiş sistemlərdə, yüzlərlə serverdən ibarət klasterlərdə bu problemlər də mürəkkəbdir və çoxlu sayda müxtəlif ölçülərin toplanması tələb olunur, lakin blokçeynlərdə p2p şəbəkələri, virtual maşınları emal edən müqavilələr, daxili iqtisadiyyatlar, dərəcələrin sayı səbəbindən. azadlıq daha böyükdür, bu, hətta bir neçə serverdə testi edir, qeyri-indikativdir və reallıqla demək olar ki, heç bir əlaqəsi olmayan yalnız son dərəcə təxmini dəyərləri göstərir.

Buna görə də, blokçeyn nüvəsini inkişaf etdirərkən, performansı qiymətləndirmək və "keçən dəfə ilə müqayisədə yaxşılaşdımı?" sualına cavab vermək üçün onlarla qovşaqdan ibarət blokçeynin işə salınmasını təşkil edən və avtomatik olaraq etalon işə salan və ölçüləri toplayan olduqca mürəkkəb proqram təminatından istifadə edirik. ; bu məlumat olmadan birdən çox iştirakçı ilə işləyən protokolları sazlamaq olduqca çətindir.

Beləliklə, “blokçeyninizdə neçə TPS var?” sualını aldıqda, həmsöhbətinizə çay təklif edin və ondan bir neçə qrafikə baxmağa hazır olub-olmadığını soruşun, həmçinin blokçeyn performans problemlərinin hər üç qutusunu və təkliflərinizi dinləyin. onları həll etmək...

Mənbə: www.habr.com

Добавить комментарий