Museria - ħażna deċentralizzata tal-mużika

Museria - ħażna deċentralizzata tal-mużika

Ġurnata waħda ddeċidejt li nikteb applikazzjoni biex nagħżel il-mużika għalija nnifsi u nismagħha d-dar/fit-triq/workouts, eċċ. U biex dan kollu jaħdem fi fluss, b’parteċipazzjoni minima minni. Ħriġt b’arkitettura, fassalt prototip, u eventwalment iltqajt ma’ “problema żgħira.”

U mhuwiex ċar fejn tikseb il-fajls tal-kanzunetti nfushom. Sa dan iż-żmien, VKontakte kien diġà għalaq l-api, fuq portali tal-mużika kbar kollox kien ukoll siekta, anke kanzunetti ngħataw f'biċċiet sabiex ma jiġux parsed. Dak kollu li baqa 'kienu xi siti individwali fly-by-night b'tunnellata ta' reklamar u kull xorta ta 'żibel, kull xorta ta' programmi ta 'grabber dubjużi u għażliet oħra "maħmuġin". B'mod ġenerali, mhux soluzzjoni waħda tassew tajba. Tista ', ovvjament, tixtri abbonament għal xi mużika Yandex jew simili. Iżda għal darb'oħra, m'hemm l-ebda API pubbliku miftuħ kullimkien u m'għandekx aċċess għall-mużika b'mod programmatiku. Diversi kumpaniji kbar essenzjalment illimitaw l-aċċess ta' ħaddieħor għall-mużika. Għaliex ġara dan kollu? Tħaffer aktar fil-fond, deher ċar li l-problema ewlenija kienet id-drittijiet tal-awtur. Is-soluzzjoni attwali fil-forma ta 'abbonamenti jaqbel ħafna awturi tal-mużika kummerċjali u dawn l-istess kumpaniji. Fl-istess ħin, mużika mhux kummerċjali u semi-kummerċjali wkoll taqa 'fil-lista ġenerali. Int jew tħallas għal kollox jew tisma’ xejn.

U bdejt naħseb x’għandi nagħmel b’dan kollu. Kif nistgħu norganizzaw id-distribuzzjoni bla ħlas tal-mużika? X'nagħmel kieku kont qed noħloq il-mużika jien u ridt nagħmel flus minnha? Nixtieq kieku l-kanzunetti tiegħi kienu piratati? X'soluzzjoni alternattiva hemm xorta waħda?

Bħala riżultat, hemm żewġ problemi ewlenin li jeħtieġ li jiġu solvuti:

  • Organizzazzjoni ta 'distribuzzjoni b'xejn ta' mużika bl-użu ta 'metodi konvenjenti għal ħafna nies, inkluż softwer.
  • Joffri alternattivi għall-ħallieqa tal-mużika biex jagħmlu l-flus

Ħażna tal-mużika deċentralizzata globali

Inizjalment, ippruvajt insib soluzzjonijiet eżistenti u noħloq kollox ibbażat fuq dan. Wara xi żmien ta’ tfittxija, l-ewwel waħda li għoġobni kienet ipfs. Bdejt nimplimenta l-idea tiegħi, iżda wara ftit skoprejt diversi problemi kritiċi f'din is-soluzzjoni:

  • Ipfs - ħażna għal kollox u għal kulħadd. Hemm stampi u mużika u videos u dak kollu li trid. B'mod ġenerali, tali "dustbin" planetarju kbir. Għalhekk, meta tniedi n-node tiegħek, immedjatament tirċievi tagħbija enormi. Il-karozza hija biss writhing bl-uġigħ.
  • Xi tip ta 'mekkaniżmu ta' ġbir ta '"żibel" mhux mitmum. Ma nafx kif inhi issa, iżda f'dak il-mument, jekk ktibt fil-konfigurazzjoni li ridt tillimita l-ħażna għal għaxar gigabytes ta 'dejta, allura ma kien ifisser xejn. Il-ħażna kibret, injorat ħafna parametri ta 'konfigurazzjoni. Bħala riżultat, kien meħtieġ li jkun hemm riżerva kbira ta 'hard disk sakemm ipfs dehret kif reset dak mhux meħtieġ.
  • Fil-ħin tal-użu tal-librerija (ma nafx kif inhi issa), il-klijent ma kellux timeouts implimentati. Inti tibgħat talba biex tirċievi fajl, u jekk ma teżistix, allura inti biss hang. Naturalment, in-nies ħarġu b'kull xorta ta 'soluzzjonijiet li parzjalment solvew il-problema, iżda dawn kienu krozzi. Dawn l-affarijiet għandhom joħorġu mill-kaxxa.

Kien għad hemm ħafna problemi minuri, u l-impressjoni kienet ċara: dan ma jistax jintuża għall-proġett. Komplejt infittex faċilità tal-ħażna, esplorajt għażliet differenti, iżda qatt ma sibt xi ħaġa xierqa.

Fl-aħħar, iddeċidejt li kien ta 'min nipprova nikteb ħażna deċentralizzata jien stess. Anke jekk ma jippretendux li huwa interplanetarju, se ssolvi problema speċifika.

U għalhekk irriżulta jinfirex, ħażna, metastoklu, museria, museria-global.

jinfirex - dan huwa s-saff ewlieni, l-aktar baxx li jippermettilek tgħaqqad nodi f'netwerk. Fiha algoritmu, li s'issa implimentajt parzjalment ibbażat fuq madwar 10000 servers. Il-verżjoni sħiħa tal-algoritmu hija ħafna aktar diffiċli biex tiġi implimentata u tkun teħtieġ diversi xhur addizzjonali (forsi aktar).

Mhux se niddeskrivi li jista 'jinfirex fid-dettall f'dan l-artikolu; huwa aħjar li tikteb waħda separata xi darba. Hawnhekk ser ninnota biss xi karatteristiċi:

  • Jaħdem permezz http/https.
  • Tista 'toħloq netwerk separat għal kompitu speċifiku, li se jnaqqas b'mod sinifikanti t-tagħbija fuq kull proġett individwali milli kieku kienu kollha fuq l-istess netwerk.
  • Inizjalment kien maħsub mekkaniżmu b'timeouts u affarijiet żgħar oħra. U dan jaħdem għall-metodi kollha kemm fil-klijent kif ukoll fin-node. Tista' timmaniġġja s-settings b'mod flessibbli minn ġewwa l-applikazzjoni tiegħek.
  • Il-librerija hija miktuba f'nodejs. Il-kwistjonijiet tal-prestazzjoni tal-munzell huma kkumpensati min-natura deċentralizzata tiegħu. It-tagħbija tista 'tiġi "mifruxa" billi jiżdied in-numru ta' nodi. Bi tpattija, hemm ħafna vantaġġi: komunità enormi, sempliċità u faċilità ta 'użu, klijent isomorfiku, ebda dipendenzi esterni, eċċ.

ħażna huwa saff li jintiret minn spreadable li jippermettilek taħżen fajls fuq in-netwerk. Kull fajl għandu l-hash tiegħu stess tal-kontenut tiegħu, li jista 'jintuża biex jiġi rkuprat aktar tard. Fajls mhumiex maqsuma fi blokki, iżda huma maħżuna għal kollox.

metastoklu - saff wiret minn spreadable, li jippermettilek taħżen data fuq in-netwerk, iżda mhux fajls. L-interface hija simili għal database Nosql. Tista ', pereżempju, iżżid fajl ma' storacle, tikseb il-hash tiegħu u tiktebha fuq metastocle b'link għal xi ħaġa.

museria - jintiret minn storacle u metastocle. Dan is-saff huwa direttament responsabbli għall-ħażna tal-mużika. Il-ħażna taħdem biss b'fajls mp3 u tags id3.

Bħala "ċavetta" għall-kanzunetta, l-isem sħiħ tagħha jintuża fil-forma Artist (TPE1) - Titolu (TIT2). Pereżempju:

  • Brimstone - Il-Piż
  • Hi-rez - Lost My Way (feat. Emilio Rojas, Dani Devinci)

Tista 'ssir taf bl-aktar dettall possibbli kif it-titli tal-kanzunetti huma ffurmati. hawn. Trid tħares lejn il-funzjoni utils.beautifySongTitle().

Il-perċentwal ta' logħbiet definiti fis-settings tan-nodi jitqies bħala taqbila. Pereżempju, valur ta '0.85 ifisser li jekk il-funzjoni ta' paragun ewlieni (ismijiet tal-kanzunetti) sabet xebh ta 'aktar minn 85%, allura hija l-istess kanzunetta.

L-algoritmu għad-determinazzjoni tax-xebh qiegħed hemm, fil-funzjoni utils.getSongSimilarity().

Qoxra għall-kanzunetta, għal riċevuta aktar tard, tista 'wkoll titwaħħal permezz ta' tikketti (APIC). L-utilitajiet għandhom il-metodi kollha meħtieġa biex jirċievu u jipproċessaw it-tikketti.

Eżempju ta 'ħidma bil-ħażna permezz ta' klijent jista 'jinstab fi README.

Is-saffi kollha ta 'hawn fuq huma awtonomi u jistgħu jintużaw separatament bħala saffi aktar baxxi għal proġetti oħra. Pereżempju, diġà hemm idea li tagħmel saff għall-ħażna tal-kotba.

museria-global huwa repożitorju git diġà kkonfigurat għat-tnedija tan-node tiegħek fin-netwerk globali tal-mużika. Klonazzjoni npm i && npm tibda u dan huwa bażikament. Tista 'tikkonfiguraha f'aktar dettall, tmexxiha f'Docker, eċċ. Informazzjoni dettaljata hija disponibbli fuq github.

Meta r-repożitorju jiġi aġġornat, għandek bżonn taġġorna n-node tiegħek. Jekk in-numru tal-verżjoni maġġuri jew minuri jinbidel, allura din l-azzjoni hija obbligatorja, inkella n-nodi qodma jiġu injorati min-netwerk.

Tista 'taħdem ma' kanzunetti manwalment u programmatically. Kull nodu jmexxi server għal kompiti differenti. Inkluż, meta żżur l-endpoint default, tirċievi interface biex taħdem mal-mużika. Per eżempju, inti tista 'tmur nodu tal-għerq (il-link jista 'ma jkunx rilevanti aktar tard, nodi ta' input jistgħu wkoll jinkisbu fi telegramma, jew tfittex aġġornamenti fuq Github).

Dan il-mod tista 'tfittex u ttella' kanzunetti fil-ħażna. It-tlugħ ta' kanzunetti jista' jsir f'żewġ modi: normali u moderat. It-tieni mod ifisser li x-xogħol jitwettaq minn persuna, mhux programm. U jekk tiċċekkja din il-kaxxa meta żżid, ikollok bżonn issolvi l-captcha. Kanzunetti jistgħu jiġu miżjuda bi prijoritajiet -1, 0 jew 1. Prijorità 1 tista 'tiġi ssettjata biss fil-mod moderat. Huma meħtieġa prijoritajiet sabiex il-ħażna tkun tista 'tiddeċiedi b'mod aktar effettiv x'għandek tagħmel meta tipprova tissostitwixxi kanzunetta eżistenti b'waħda ġdida. Aktar ma tkun għolja l-prijorità, iktar tkun probabbli li tikteb fuq il-fajl eżistenti. Dan jgħin fil-ġlieda kontra l-ispam u jżid il-kwalità tal-kanzunetti mniżżla.

Jekk tibda żżid kanzunetti mal-ħażna tiegħek, ipprova tehmeż immaġini (qoxra), għalkemm dan il-qasam mhux meħtieġ. F'99% tal-każijiet, l-ewwel immaġini fuq Google bbażati fuq it-titli tal-kanzunetti huma covers tal-album.

Kif iseħħ teknikament iż-żieda tal-fajls, fil-qosor:

  • Il-klijent jirċievi l-indirizz ta 'node ħieles, li se jsir koordinatur għal xi żmien.
  • Il-funzjoni taż-żieda ta 'kanzunetta hija attivata (minn persuna jew kodiċi), u ssir talba biex jiżdied koordinatur mal-endpoint.
  • Il-koordinatur jikkalkula kemm għandhom jiġu maħżuna duplikati (parametru konfigurabbli).
  • L-aktar nodi adattati għall-iffrankar huma mfittxija.
  • Il-fajl imur direttament għal dawn in-nodi.

Kif teknikament il-fajls jiġu riċevuti:

  • Il-klijent jirċievi l-indirizz ta 'node ħieles, li se jsir koordinatur għal xi żmien.
  • Il-funzjoni li tirċievi kanzunetta (minn persuna jew kodiċi) hija attivata, u ssir talba biex tirċeviha fil-punt tat-tmiem tal-koordinatur.
  • Il-koordinatur jiċċekkja għall-preżenza tal-link fil-cache. Jekk ikun hemm wieħed u qed jaħdem, huwa immedjatament ritornat lill-klijent, inkella n-nodi huma mistħarrġa għad-disponibbiltà.
  • Il-fajl jasal mill-link, jekk jinstab wieħed.

Alternattivi għall-Ħallieq tal-Mużika

Dejjem kont interessat fil-mistoqsija ta’ kif wieħed jista’ jevalwa b’mod oġġettiv il-valur ta’ ħafna xogħlijiet kreattivi? Għaliex, pereżempju, persuna toffri l-album tal-mużika tagħha għal $10? Jew għal $20 jew $100. Fejn hu l-algoritmu? Meta, pereżempju, qed nitkellmu dwar xi prodott fiżiku, jew saħansitra ħafna tipi ta 'servizzi, allura nistgħu tal-inqas nikkalkulaw l-ispiża u nipproċedu minn dak.

Tajjeb, ejja ngħidu li aħna bet $10. Dan huwa effettiv ħafna? Ejja ngħidu li smajt album xi mkien jew kanzunetta minn hemm u ddeċidejt li nuri l-gratitudni tiegħi. Imma skont is-sentimenti tiegħi u l-kapaċitajiet tiegħi stess, $3 huwa l-limitu massimu tiegħi. Allura x'għandna nagħmlu? X'aktarx ma nagħmel xejn, bħal ħafna nies.

Billi tistabbilixxi xi tip ta 'prezz fiss għal xogħol kreattiv, inti sempliċiment tillimita lilek innifsek, billi tipprevjeni numru akbar ta' nies milli jibagħtulek inqas flus, li b'kollox jista 'jkun aktar impressjonanti minn dawk li se jixtru bil-prezz li tiffissa. Jidhirli li l-kreattività hija eżattament il-qasam fejn id-donazzjonijiet għandhom jirregolaw l-ewwel. Biex tagħmel dan għandek bżonn:

  • Tgħallem lin-nies biex jirringrazzjaw b’dan il-mod. Il-ħallieqa nfushom iridu juru b'mod ċar li jixtiequ jirċievu donazzjonijiet, iżidu links għal metodi ta 'ħlas differenti kullimkien, eċċ.
  • Jinħtieġu aktar mekkaniżmi biex jissimplifikaw u jissaħħu dawn il-proċessi. Pereżempju, oħloq xi tip ta’ websajt globali fejn tista’ tagħti donazzjoni għall-kreattività billi tuża links tad-drittijiet tal-awtur.

    Ejja ngħidu li l-link hija xi ħaġa bħal din:

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

    Jekk innaqqsuha għal mużiċisti, allura:

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

    L-artist jeħtieġ li jivverifika l-laqam tiegħu u jehmeż miegħu.

    Qed inżidu funzjoni biex niġġeneraw link bħal dan mal-klijent tal-museja, u l-proġetti kollha li jużaw ir-repożitorju jistgħu jpoġġu buttuni ta’ donazzjoni b’dawn il-links ħdejn il-kanzunetti fuq il-websajts/applikazzjonijiet tagħhom. L-utenti għandhom l-opportunità li jagħmlu donazzjoni malajr u faċilment. Naturalment, dan l-approċċ jista 'jintuża fi kwalunkwe proġett u kategorija ta' kreattività, mhux biss permezz tal-ħażna.

Għaliex eżattament għandek bżonn faċilità ta 'ħażna tal-mużika, u kif tista' tipparteċipa fiha?

  • Jekk qed taħdem fuq proġett relatat mal-mużika, jew qed tippjana li toħloq wieħed, allura dan huwa dak kollu li kien maħsub għalih. Tista 'tuża museria biex taħżen u tirkupra kanzunetti, u żżid il-fluss ta' kanzunetti onlajn. Jekk, fl-istess ħin, għandek il-ħila li tgħolli u żżomm mill-inqas nodu wieħed tiegħek, allura dan ikun l-aħjar kontribut għall-iżvilupp tan-netwerk.
  • Forsi inti lest li tieħu xi rwol ieħor: tgħin bil-kodiċi, jew imla u timmodera d-database, tqassam informazzjoni dwar il-proġett lill-ħbieb tiegħek, eċċ.
  • Forsi għoġbok l-idea u lest li tgħin finanzjarjament sabiex kollox jgħix u jiżviluppa. L-aktar nodi, l-aktar kanzunetti.
  • Jew għandek bżonn biss issib u tniżżel kanzunetta f'xi punt. Tista 'tagħmel dan b'mod sempliċi ħafna, pereżempju, permezz telegramma bot.

Il-proġett issa jinsab fl-istadju tal-bidu nett. Tnieda netwerk tat-test, in-nodi jistgħu jerġgħu jibdew spiss, jeħtieġu aġġornamenti, eċċ. Jekk ma jkunx hemm problemi kritiċi matul il-perjodu ta' evalwazzjoni, dan l-istess netwerk jinbidel f'wieħed ewlieni.

Tista 'tara informazzjoni dwar in-nodu minn barra: in-numru ta' kanzunetti, spazju ħieles, eċċ., billi tuża link bħal http://node-address/status jew http://node-address/status?pretty

Il-kuntatti tiegħi:

Sors: www.habr.com

Żid kumment