Museria - mərkəzləşdirilməmiş musiqi yaddaşı

Museria - mərkəzləşdirilməmiş musiqi yaddaşı

Bir gün özümə musiqi seçmək və evdə/küçədə/məşqdə və s. dinləmək üçün ərizə yazmaq qərarına gəldim. Və bütün bunlar mənim minimum iştirakımla bir axınla işləsin. Mən bir memarlıq yaratdım, bir prototip hazırladım və nəhayət bir “kiçik problem”lə qarşılaşdım.

Mahnı fayllarının özlərini haradan əldə etmək aydın deyil. Bu vaxta qədər VKontakte artıq api-ni bağlamışdı, böyük musiqi portallarında hər şey səssiz idi, hətta mahnılar parçalanmamaq üçün parçalara ayrıldı. Qalanların hamısı bir ton reklam və hər cür zibil, hər cür şübhəli qrabber proqramları və digər "çirkli" seçimləri olan bəzi fərdi uçan saytlar idi. Ümumiyyətlə, heç də yaxşı bir həll yoxdur. Siz, əlbəttə ki, bəzi Yandex musiqisinə və ya digərlərinə abunə ala bilərsiniz. Ancaq yenə də heç bir yerdə açıq ictimai API yoxdur və proqramlı olaraq musiqiyə çıxışınız yoxdur. Bir neçə böyük şirkət başqalarının musiqiyə çıxışını mahiyyətcə məhdudlaşdırıb. Niyə bu ümumiyyətlə baş verdi? Dərin qazanda məlum oldu ki, əsas problem müəllif hüququdur. Abunəlik şəklində mövcud həll bir çox kommersiya musiqi müəlliflərinə və eyni şirkətlərə uyğun gəlir. Eyni zamanda qeyri-kommersiya və yarı-kommersiya xarakterli musiqilər də ümumi siyahıya düşür. Ya hər şeyi ödəyirsən, ya da heç bir şeyə qulaq asmırsan.

Və bütün bunlarla nə edəcəyimi düşünməyə başladım. Musiqinin pulsuz yayılmasını necə təşkil edə bilərik? Özüm musiqi yaratsam və ondan pul qazanmaq istəsəm nə edərdim? Mahnılarım pirat olsaydı, istərdim? Onsuz da hansı alternativ həll yolu var?

Nəticədə həll edilməli olan iki əsas problem var:

  • Proqram təminatı daxil olmaqla, əksər insanlar üçün əlverişli üsullardan istifadə edərək musiqinin pulsuz yayılmasının təşkili.
  • Musiqi yaradıcılarına pul qazanmaq üçün alternativlər təklif edir

Qlobal mərkəzləşdirilməmiş musiqi yaddaşı

Əvvəlcə mövcud həll yollarını tapmağa və bunun əsasında hər şeyi yaratmağa çalışdım. Bir müddət axtardıqdan sonra ilk bəyəndiyim oldu ipfs. Mən ideyamı həyata keçirməyə başladım, lakin bir müddət sonra bu həlldə bir neçə kritik problem aşkar etdim:

  • Ipfs - hər şey və hər kəs üçün saxlama. Şəkillər, musiqi və videolar və istədiyiniz hər şey var. Ümumiyyətlə, belə böyük bir planet "zibil qutusu". Buna görə də, qovşağınızı işə saldığınız zaman dərhal böyük bir yük alırsınız. Maşın sadəcə ağrıdan qıvrılır.
  • Bir növ yarımçıq “zibil” toplama mexanizmi. İndi necə olduğunu bilmirəm, amma o anda konfiqurasiyada yaddaşı on giqabayt məlumatla məhdudlaşdırmaq istədiyinizi yazmısınızsa, bu heç nə demək deyil. Yaddaş bir çox konfiqurasiya parametrlərinə məhəl qoymadan böyüdü. Nəticədə, ipfs lazımsızları necə sıfırlayacağını anlayana qədər böyük bir sabit disk ehtiyatına sahib olmaq lazım idi.
  • Kitabxanadan istifadə zamanı (indi necə olduğunu bilmirəm) müştərinin həyata keçirmə vaxtı yox idi. Siz faylı almaq üçün sorğu göndərirsiniz və o, mövcud deyilsə, sadəcə asırsınız. Əlbəttə ki, insanlar problemi qismən həll edən hər cür həll yolu tapdılar, lakin bunlar qoltuqaltılar idi. Bu şeylər qutudan çıxmalıdır.

Hələ bir çox kiçik problemlər var idi və təəssürat aydın idi: bu layihə üçün istifadə edilə bilməz. Mən saxlama yeri axtarmağa, müxtəlif variantları araşdırmağa davam etdim, lakin heç vaxt uyğun bir şey tapmadım.

Sonda qərara gəldim ki, özüm mərkəzləşdirilməmiş bir yaddaş yazmağa çalışmağa dəyər. Özünü planetlərarası kimi göstərməsə belə, konkret bir işi həll edəcək.

Və belə çıxdı yayıla bilən, anbar, metastokla, museriya, museria-qlobal.

yayıla bilən - bu, qovşaqları şəbəkədə birləşdirməyə imkan verən əsas, ən aşağı təbəqədir. Təxminən 10000 server əsasında qismən həyata keçirdiyim alqoritmi ehtiva edir. Alqoritmin tam versiyasını həyata keçirmək daha çətindir və bir neçə əlavə ay (bəlkə də daha çox) tələb olunur.

Bu yazıda yayıla biləni ətraflı təsvir etməyəcəyəm, nə vaxtsa ayrı bir yazmaq daha yaxşıdır. Burada yalnız bəzi xüsusiyyətləri qeyd edəcəm:

  • Http/https vasitəsilə işləyir.
  • Müəyyən bir tapşırıq üçün ayrı bir şəbəkə yarada bilərsiniz, bu, hər bir fərdi layihənin yükünü onların hamısının eyni şəbəkədə olması ilə müqayisədə əhəmiyyətli dərəcədə azaldacaq.
  • Taym-autları və digər xırda şeyləri olan mexanizm əvvəlcə düşünülmüşdü. Və bu, həm müştəridə, həm də qovşaqda bütün üsullar üçün işləyir. Siz tətbiqinizdən parametrləri çevik şəkildə idarə edə bilərsiniz.
  • Kitabxana nodejs-də yazılmışdır. Yığın performans problemləri onun qeyri-mərkəzləşdirilmiş təbiəti ilə kompensasiya olunur. Düyünlərin sayını artırmaqla yükü "yaymaq" olar. Bunun müqabilində bir çox üstünlüklər var: nəhəng icma, sadəlik və istifadə rahatlığı, izomorf müştəri, heç bir xarici asılılıq və s.

anbar faylları şəbəkədə saxlamağa imkan verən yayıla bilən təbəqədən miras qalmış təbəqədir. Hər bir faylın məzmununun öz hashı var ki, ondan sonra onu əldə etmək olar. Fayllar bloklara bölünmür, lakin tamamilə saxlanılır.

metastokla - faylları deyil, məlumatları şəbəkədə saxlamağa imkan verən yayıla bilən təbəqədən miras qalmış təbəqə. İnterfeys Nosql verilənlər bazasına bənzəyir. Siz, məsələn, yaddaşa bir fayl əlavə edə, onun hashini əldə edə və nəyəsə keçidlə metastocle yaza bilərsiniz.

museriya - storacle və metastocle irsi. Bu təbəqə musiqinin saxlanmasına birbaşa cavabdehdir. Yaddaş yalnız mp3 faylları və id3 teqləri ilə işləyir.

Mahnının “açarı” kimi onun tam adı formada istifadə olunur Rəssam (TPE1) - Başlıq (TIT2). Məsələn:

  • Kükürd - Yük
  • Hi-rez - Lost My Way (feat. Emilio Rojas, Dani Devinci)

Mahnı adlarının necə formalaşdığını mümkün qədər ətraflı öyrənə bilərsiniz. burada. Funksiyaya baxmaq lazımdır utils.beautifySongTitle().

Düyün parametrlərində müəyyən edilmiş uyğunluqların faizi uyğunluq hesab olunur. Məsələn, 0.85 dəyəri o deməkdir ki, əgər əsas müqayisə funksiyası (mahnı adları) 85%-dən çox oxşarlıq tapırsa, deməli, eyni mahnıdır.

Bənzərliyi təyin etmək üçün alqoritm orada, funksiyadadır utils.getSongSimilarity().

Mahnının örtüyü, sonradan əldə etmək üçün, etiketlər vasitəsilə də əlavə edilə bilər (APIC). Utilitlər etiketlərin qəbulu və işlənməsi üçün bütün lazımi üsullara malikdir.

Müştəri vasitəsilə saxlama ilə işləmək nümunəsini tapa bilərsiniz oxuməni.

Yuxarıdakı təbəqələrin hamısı müstəqildir və digər layihələr üçün aşağı təbəqələr kimi ayrıca istifadə edilə bilər. Məsələn, artıq kitabların saxlanması üçün lay yaratmaq ideyası var.

museria-qlobal qlobal musiqi şəbəkəsində öz nodeunuzu işə salmaq üçün artıq konfiqurasiya edilmiş git deposudur. Klonlaşdırma npm i && npm başlayın və əsasən budur. Siz onu daha ətraflı konfiqurasiya edə, Docker-də işlədə və s. Ətraflı məlumatı buradan əldə etmək olar github.

Repozitoriya yeniləndikdə, qovşağınızı yeniləməlisiniz. Əsas və ya kiçik versiya nömrəsi dəyişirsə, bu hərəkət məcburidir, əks halda köhnə qovşaqlar şəbəkə tərəfindən nəzərə alınmayacaq.

Mahnılarla əl ilə və proqramlı şəkildə işləyə bilərsiniz. Hər bir node müxtəlif tapşırıqlar üçün bir server işlədir. O cümlədən, standart son nöqtəyə baş çəkdiyiniz zaman musiqi ilə işləmək üçün interfeys alacaqsınız. Məsələn, gedə bilərsiniz kök node (bağlantı sonradan uyğun olmaya bilər, giriş qovşaqları da əldə edilə bilər teleqram, və ya Github-da yeniləmələri axtarın).

Bu yolla siz mahnıları axtarıb yaddaşa yükləyə bilərsiniz. Mahnıların yüklənməsi iki rejimdə baş verə bilər: normal və moderator. İkinci rejim o deməkdir ki, iş proqram deyil, şəxs tərəfindən həyata keçirilir. Və əlavə edərkən bu qutuyu işarələsəniz, captcha-nı həll etməli olacaqsınız. Mahnılar -1, 0 və ya 1 prioritetləri ilə əlavə edilə bilər. Prioritet 1 yalnız moderasiya rejimində təyin edilə bilər. Prioritetlər lazımdır ki, yaddaş mövcud mahnını yenisi ilə əvəz etməyə çalışdığınız zaman nə edəcəyinizi daha effektiv şəkildə həll edə bilsin. Prioritet nə qədər yüksək olarsa, mövcud faylın üzərinə yazmaq ehtimalınız bir o qədər yüksək olar. Bu, spamla mübarizə aparmağa kömək edir və yüklənmiş mahnıların keyfiyyətini artırır.

Yaddaşınıza mahnılar əlavə etməyə başlasanız, bu sahə tələb olunmasa da, şəkilləri (qapaq) əlavə etməyə çalışın. 99% hallarda, Google-da mahnı adlarına əsaslanan ilk şəkillər albom örtükləridir.

Texniki olaraq faylların əlavə edilməsi necə baş verir, bir sözlə:

  • Müştəri bir müddət koordinator olacaq pulsuz node ünvanını alır.
  • Mahnının əlavə edilməsi funksiyası işə salınır (şəxs və ya kod tərəfindən) və son nöqtəyə koordinator əlavə etmək üçün sorğu verilir.
  • Koordinator neçə dublikatın saxlanacağını hesablayır (konfiqurasiya edilə bilən parametr).
  • Saxlama üçün ən uyğun qovşaqlar axtarılır.
  • Fayl birbaşa bu qovşaqlara gedir.

Fayllar texniki cəhətdən necə qəbul edilir:

  • Müştəri bir müddət koordinator olacaq pulsuz node ünvanını alır.
  • Mahnının (şəxs və ya kod tərəfindən) qəbulu funksiyası işə salınır və koordinatorun son nöqtəsində onu qəbul etmək üçün sorğu verilir.
  • Koordinator keşdə linkin olub-olmadığını yoxlayır. Biri varsa və işləyirsə, o, dərhal müştəriyə qaytarılır, əks halda qovşaqlar mövcudluq üçün sorğulanır.
  • Fayl, əgər tapılarsa, linkdən alınır.

Musiqi Yaradıcıları üçün Alternativlər

Məni həmişə sual maraqlandırıb ki, bir çox yaradıcılıq işlərinin dəyərini obyektiv şəkildə necə qiymətləndirmək olar? Məsələn, insan niyə öz musiqi albomunu 10 dollara təklif edir? Ya 20 dollara, ya da 100 dollara. Alqoritm haradadır? Məsələn, biz hansısa fiziki məhsuldan, hətta bir çox xidmət növündən danışırıqsa, o zaman heç olmasa dəyəri hesablayıb ondan irəli gedə bilərik.

Yaxşı, deyək ki, biz 10 dollar mərc edirik. Bu çox təsirlidir? Tutaq ki, haradasa alboma və ya oradan mahnıya qulaq asdım və minnətdarlığımı bildirmək qərarına gəldim. Amma hisslərimə və öz imkanlarıma görə 3 dollar mənim tavanımdır. Bəs biz nə etməliyik? Çox güman ki, əksər insanlar kimi heç nə etməyəcəyəm.

Yaradıcı iş üçün bir növ sabit qiymət təyin etməklə siz sadəcə olaraq özünüzü məhdudlaşdırırsınız, daha çox insanın sizə daha az pul göndərməsinə mane olursunuz ki, bu da ümumilikdə sizin təyin etdiyiniz qiymətə satın alanlardan daha təsir edici ola bilər. Mənə elə gəlir ki, yaradıcılıq məhz ianələrin hökm sürməli olduğu sahədir. Bunu etmək üçün sizə lazımdır:

  • İnsanlara bu şəkildə şükür etməyi öyrədin. Yaradıcıların özləri ianə almaq istədiklərini açıq şəkildə göstərməlidirlər, hər yerdə müxtəlif ödəniş üsullarına keçidlər əlavə etməlidirlər və s.
  • Bu prosesləri sadələşdirmək və gücləndirmək üçün daha çox mexanizmlərə ehtiyac var. Məsələn, müəllif hüququ bağlantılarından istifadə edərək yaradıcılıq üçün ianə edə biləcəyiniz bir növ qlobal veb sayt yaradın.

    Deyək ki, link belə bir şeydir:

    http://someartistsdonationsite.site/category/artist?external-info

    Bunu musiqiçilərə daraltsaq, onda:

    http://someartistsdonationsite.com/music/miyagi?song=blabla

    İfaçı ləqəbini yoxlamalı və ona əlavə etməlidir.

    Biz museria müştərisinə belə bir keçid yaratmaq üçün funksiya əlavə edirik və depodan istifadə edən bütün layihələr öz vebsaytlarında/tətbiqlərində mahnıların yanında bu keçidlərlə ianə düymələri yerləşdirə bilər. İstifadəçilərin çox tez və asanlıqla ianə etmək imkanı var. Təbii ki, bu yanaşma yalnız saxlama yolu ilə deyil, istənilən layihə və yaradıcılıq kateqoriyasında istifadə edilə bilər.

Niyə məhz musiqi saxlama qurğusuna ehtiyacınız var və siz orada necə iştirak edə bilərsiniz?

  • Əgər siz musiqi ilə bağlı bir layihə üzərində işləyirsinizsə və ya layihə yaratmağı planlaşdırırsınızsa, deməli hər şey bunun üçün nəzərdə tutulub. Siz onlayn mahnı axınını artırmaqla mahnıları saxlamaq və əldə etmək üçün museria-dan istifadə edə bilərsiniz. Eyni zamanda, ən azı özünüzə aid bir node qaldırmaq və saxlamaq qabiliyyətiniz varsa, bu, şəbəkənin inkişafına ən yaxşı töhfə olacaqdır.
  • Yəqin ki, siz başqa bir rol oynamağa hazırsınız: kodla kömək edin və ya verilənlər bazasını doldurun və idarə edin, layihə haqqında məlumatı dostlarınıza paylayın və s.
  • Ola bilsin ki, bu ideya xoşunuza gəldi və maddi cəhətdən kömək etməyə hazırsınız ki, o, bütün yaşasın və inkişaf etsin. Nə qədər çox qovşaq, bir o qədər çox mahnı.
  • Və ya sadəcə bir anda mahnı tapıb yükləməlisiniz. Bunu çox sadə, məsələn, vasitəsilə edə bilərsiniz teleqram botu.

Layihə hazırda ilkin mərhələdədir. Test şəbəkəsi işə salındı, qovşaqlar tez-tez yenidən başlaya bilər, yeniləmələr tələb olunur və s. Qiymətləndirmə dövründə heç bir kritik problem yoxdursa, həmin şəbəkə əsas şəbəkəyə çevrilir.

Bənzər bir keçiddən istifadə edərək, node haqqında məlumatı kənardan görə bilərsiniz: mahnıların sayı, boş yer və s http://node-address/status və ya http://node-address/status?pretty

Kontaktlarım:

Mənbə: www.habr.com

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