Museria - markazlashtirilmagan musiqa saqlash

Museria - markazlashtirilmagan musiqa saqlash

Bir kuni men o'zim uchun musiqa tanlash va uni uyda / ko'chada / mashg'ulotlarda va hokazolarda tinglash uchun ariza yozishga qaror qildim. Va bularning barchasi mening minimal ishtirokim bilan oqimda ishlaydi. Men arxitekturani o'ylab topdim, prototipni chizdim va oxir-oqibat bitta "kichik muammoga" duch keldim.

Va qo'shiq fayllarini qaerdan olish mumkinligi aniq emas. Bu vaqtga kelib, VKontakte allaqachon api-ni yopib qo'ygan edi, katta musiqa portallarida hamma narsa o'chirilgan, hatto qo'shiqlar parchalanib ketmasligi uchun parcha-parcha berilgan. Bir tonna reklama va har xil axlatlar, har xil shubhali grabber dasturlari va boshqa "iflos" variantlarga ega bo'lgan ba'zi bir kecha-kunduz uchadigan saytlar qoldi. Umuman olganda, bitta yaxshi yechim yo'q. Siz, albatta, ba'zi Yandex musiqalariga obuna sotib olishingiz mumkin yoki shunga o'xshash. Ammo yana, hech qanday joyda ochiq ochiq API yo'q va siz musiqaga dasturiy ravishda kirish imkoniga ega emassiz. Bir qancha yirik kompaniyalar boshqalarning musiqaga kirishini cheklab qo'ygan. Nima uchun bu umuman sodir bo'ldi? Chuqurroq qazilsa, asosiy muammo mualliflik huquqi ekanligi ayon boβ€˜ldi. Obuna ko'rinishidagi joriy yechim ko'plab tijorat musiqa mualliflari va xuddi shu kompaniyalarga mos keladi. Shu bilan birga, notijorat va yarim tijorat musiqalari ham umumiy ro'yxatga kiradi. Siz yo hamma narsa uchun to'laysiz yoki umuman hech narsa tinglamaysiz.

Va men bularning barchasi bilan nima qilishni o'ylay boshladim. Musiqani bepul tarqatishni qanday tashkil qilishimiz mumkin? Agar men o'zim musiqa yaratsam va undan pul ishlamoqchi bo'lsam nima qilgan bo'lardim? Qo'shiqlarim pirat bo'lsa, menga yoqadimi? Qanday muqobil yechim bor?

Natijada, hal qilinishi kerak bo'lgan ikkita asosiy muammo mavjud:

  • Ko'pchilik uchun qulay usullardan, shu jumladan dasturiy ta'minotdan foydalangan holda musiqani bepul tarqatishni tashkil etish.
  • Musiqa ijodkorlariga pul ishlash uchun muqobil variantlarni taklif qilish

Global markazlashtirilmagan musiqa xotirasi

Dastlab men mavjud echimlarni topishga harakat qildim va shu asosda hamma narsani yaratishga harakat qildim. Biroz vaqt qidirgandan so'ng, birinchisi menga yoqdi ipfs. Men o'z g'oyamni amalga oshirishni boshladim, lekin bir muncha vaqt o'tgach, men ushbu yechimda bir nechta muhim muammolarni topdim:

  • Ipfs - hamma narsa va hamma uchun saqlash. Tasvirlar, musiqa va videolar va siz xohlagan hamma narsa mavjud. Umuman olganda, bunday katta sayyora "chang'i". Shuning uchun, siz tugunni ishga tushirganingizda, siz darhol katta yuk olasiz. Mashina shunchaki og'riqdan burishmoqda.
  • Qandaydir tugallanmagan "axlat" yig'ish mexanizmi. Hozir qandayligini bilmayman, lekin o'sha paytda siz konfiguratsiyada saqlashni o'n gigabayt ma'lumot bilan cheklashni xohlayotganingizni yozgan bo'lsangiz, bu hech narsani anglatmaydi. Saqlash ko'plab konfiguratsiya parametrlarini e'tiborsiz qoldirib, o'sdi. Natijada, ipfs keraksiz narsalarni qanday tiklashni aniqlamaguncha, qattiq diskning katta zaxirasiga ega bo'lish kerak edi.
  • Kutubxonadan foydalanish vaqtida (hozir qandayligini bilmayman), mijozda taym-autlar amalga oshirilmagan. Siz faylni olish uchun so'rov yuborasiz va agar u mavjud bo'lmasa, siz shunchaki osib qo'yasiz. Albatta, odamlar muammoni qisman hal qiladigan har qanday vaqtinchalik echimlarni o'ylab topishdi, ammo bular tayoqchalar edi. Bu narsalar qutidan chiqishi kerak.

Hali ko'p kichik muammolar bor edi va taassurot aniq edi: buni loyiha uchun ishlatib bo'lmaydi. Men saqlash joyini qidirishni davom ettirdim, turli xil variantlarni o'rgandim, lekin hech qachon mos keladigan narsani topmadim.

Oxir-oqibat, men markazlashtirilmagan saqlashni o'zim yozishga harakat qilishga arziydi, deb qaror qildim. Agar u o'zini sayyoralararo deb ko'rsatmasa ham, muayyan muammoni hal qiladi.

Va shunday bo'ldi tarqaladigan, omborxona, metastokula, museria, museria-global.

tarqaladigan - bu tugunlarni tarmoqqa birlashtirish imkonini beruvchi asosiy, eng quyi qatlam. Unda men hozirgacha 10000 XNUMX ga yaqin serverlar asosida qisman amalga oshirgan algoritm mavjud. Algoritmning to'liq versiyasini amalga oshirish ancha qiyin va qo'shimcha bir necha oy (ehtimol ko'proq) talab qiladi.

Men ushbu maqolada tarqaladigan narsalarni batafsil tasvirlab bermayman, bir kun kelib alohida yozish yaxshidir. Bu erda men faqat ba'zi xususiyatlarni qayd etaman:

  • Http/https orqali ishlaydi.
  • Muayyan vazifa uchun alohida tarmoq yaratishingiz mumkin, bu har bir alohida loyihadagi yukni ularning barchasi bitta tarmoqda bo'lganidan ko'ra sezilarli darajada kamaytiradi.
  • Taymerlar va boshqa kichik narsalar bilan mexanizm dastlab o'ylab topilgan. Va bu mijoz va tugundagi barcha usullar uchun ishlaydi. Siz ilovangizdan sozlamalarni moslashuvchan tarzda boshqarishingiz mumkin.
  • Kutubxona nodejs-da yozilgan. Stackning ishlash muammolari uning markazlashtirilmagan tabiati bilan qoplanadi. Yuk tugunlar sonini ko'paytirish orqali "tarqalishi" mumkin. Buning evaziga ko'plab afzalliklar mavjud: ulkan jamoa, soddaligi va foydalanish qulayligi, izomorf mijoz, tashqi bog'liqliklar yo'qligi va boshqalar.

omborxona Tarmoqqa fayllarni saqlash imkonini beruvchi tarqaladigan qatlamdan meros qilib olingan qatlamdir. Har bir fayl o'z mazmuniga ega bo'lib, undan keyinroq uni olish uchun foydalanish mumkin. Fayllar bloklarga bo'linmaydi, lekin butunlay saqlanadi.

metastokula - fayllarni emas, balki tarmoqda ma'lumotlarni saqlash imkonini beruvchi tarqaladigan qatlamdan meros bo'lib qolgan qatlam. Interfeys Nosql ma'lumotlar bazasiga o'xshaydi. Siz, masalan, faylni omborga qo'shishingiz, uning xeshini olishingiz va biror narsaga havola bilan metastoklga yozishingiz mumkin.

museria - storakla va metastokuladan meros bo'lib o'tadi. Ushbu qatlam musiqani saqlash uchun bevosita javobgardir. Saqlash faqat mp3 fayllari va id3 teglari bilan ishlaydi.

Qo'shiq uchun "kalit" sifatida uning to'liq nomi shaklda ishlatiladi Ijrochi (TPE1) - Sarlavha (TIT2). Masalan:

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

Qo'shiq nomlari qanday shakllanganligini iloji boricha batafsilroq bilib olishingiz mumkin. shu yerda. Funktsiyaga qarash kerak utils.beautifySongTitle().

Tugun sozlamalarida aniqlangan moslik foizi mos deb hisoblanadi. Masalan, 0.85 qiymati, agar kalit taqqoslash funktsiyasi (qo'shiq nomlari) 85% dan ortiq o'xshashlikni topsa, u bir xil qo'shiq ekanligini anglatadi.

O'xshashlikni aniqlash algoritmi funksiyada mavjud utils.getSongSimilarity().

Qo'shiqning qopqog'i, keyinchalik olish uchun teglar orqali ham biriktirilishi mumkin (APIC). Utilitlar teglarni qabul qilish va qayta ishlash uchun barcha kerakli usullarga ega.

Mijoz orqali saqlash bilan ishlash misolida topish mumkin Readme.

Yuqoridagi barcha qatlamlar o'z-o'zidan mavjud va boshqa loyihalar uchun quyi qatlamlar sifatida alohida ishlatilishi mumkin. Masalan, kitoblarni saqlash uchun qatlam yaratish g'oyasi allaqachon mavjud.

museria-global global musiqa tarmog'ida o'z tuguningizni ishga tushirish uchun allaqachon sozlangan git omboridir. Klonlash npm i && npm boshlang va bu asosan. Siz uni batafsilroq sozlashingiz, Docker-da ishga tushirishingiz va hokazo. Batafsil ma'lumotni quyidagi manzilda olishingiz mumkin github.

Ombor yangilanganda, siz tuguningizni yangilashingiz kerak. Agar asosiy yoki kichik versiya raqami o'zgartirilsa, bu harakat majburiydir, aks holda eski tugunlar tarmoq tomonidan e'tiborga olinmaydi.

Siz qo'shiqlar bilan qo'lda va dasturiy tarzda ishlashingiz mumkin. Har bir tugun turli vazifalar uchun serverni boshqaradi. Shu jumladan, standart so'nggi nuqtaga tashrif buyurganingizda, siz musiqa bilan ishlash uchun interfeys olasiz. Masalan, siz borishingiz mumkin ildiz tugun (bog'lanish keyinchalik tegishli bo'lmasligi mumkin, kirish tugunlarini ham olish mumkin telegramma, yoki Github-da yangilanishlarni qidiring).

Shu tarzda siz qo'shiqlarni qidirishingiz va xotiraga yuklashingiz mumkin. Qo'shiqlarni yuklash ikki rejimda amalga oshirilishi mumkin: oddiy va moderator. Ikkinchi rejim ishning dastur emas, balki shaxs tomonidan amalga oshirilishini anglatadi. Va agar siz qo'shish paytida ushbu katakchani belgilasangiz, captcha ni hal qilishingiz kerak bo'ladi. Qo'shiqlar -1, 0 yoki 1 ustuvorliklari bilan qo'shilishi mumkin. 1-chi ustuvorlikni faqat moderatsiya rejimida o'rnatish mumkin. Mavjud qo'shiqni yangisiga almashtirishga harakat qilganingizda, xotira nima qilish kerakligini samaraliroq hal qilishi uchun ustuvorliklar kerak. Ustuvorlik qanchalik baland bo'lsa, mavjud faylni qayta yozish ehtimoli shunchalik yuqori bo'ladi. Bu spam bilan kurashishga yordam beradi va yuklab olingan qo'shiqlar sifatini oshiradi.

Agar siz xotirangizga qo'shiqlar qo'shishni boshlasangiz, bu maydon talab qilinmasa ham, rasmlarni (qopqoq) qo'shishga harakat qiling. 99% hollarda qoΚ»shiq nomlariga asoslangan Googledagi birinchi rasmlar albom muqovalaridir.

Fayllarni texnik jihatdan qo'shish qanday sodir bo'ladi, qisqacha aytganda:

  • Mijoz bir muddat koordinatorga aylanadigan bepul tugunning manzilini oladi.
  • Qo'shiqni qo'shish funktsiyasi ishga tushiriladi (shaxs yoki kod tomonidan) va so'nggi nuqtaga koordinator qo'shish uchun so'rov yuboriladi.
  • Koordinator qancha dublikat saqlanishi kerakligini hisoblab chiqadi (konfiguratsiya qilinadigan parametr).
  • Saqlash uchun eng mos tugunlar qidiriladi.
  • Fayl to'g'ridan-to'g'ri ushbu tugunlarga boradi.

Fayllar texnik jihatdan qanday qabul qilinadi:

  • Mijoz bir muddat koordinatorga aylanadigan bepul tugunning manzilini oladi.
  • Qo'shiqni qabul qilish funktsiyasi (shaxs yoki kod tomonidan) ishga tushiriladi va uni qabul qilish so'rovi koordinatorning so'nggi nuqtasida amalga oshiriladi.
  • Koordinator keshda havola mavjudligini tekshiradi. Agar mavjud bo'lsa va u ishlayotgan bo'lsa, u darhol mijozga qaytariladi, aks holda tugunlar mavjudligi uchun so'rov qilinadi.
  • Fayl, agar topilgan bo'lsa, havoladan olinadi.

Musiqa ijodkorlari uchun muqobillar

Koβ€˜p ijodiy ishlarning qadrini qanday xolisona baholash mumkin, degan savol doim meni qiziqtirgan. Nega, masalan, bir kishi o'zining musiqiy albomini 10 dollarga taklif qiladi? 20 yoki 100 dollarga. Algoritm qayerda? Masalan, biz biron bir jismoniy mahsulot yoki hatto ko'p turdagi xizmatlar haqida gapiradigan bo'lsak, biz hech bo'lmaganda xarajatlarni hisoblab, undan harakat qilishimiz mumkin.

Mayli, deylik, biz 10 dollar tikdik. Bu juda samaralimi? Aytaylik, men qayerdadir albom yoki u yerdagi qoβ€˜shiqni tinglab, minnatdorchilik bildirishga qaror qildim. Lekin his-tuyg'ularim va o'z imkoniyatlarimga ko'ra, 3 dollar mening shiftimdir. Xo'sh, nima qilishimiz kerak? Ehtimol, men ko'pchilik kabi hech narsa qilmayman.

Ijodiy ish uchun qandaydir qat'iy narx belgilash orqali siz shunchaki o'zingizni cheklab qo'yasiz, bu esa ko'p odamlarning sizga kamroq pul yuborishiga yo'l qo'ymaydi, bu esa siz belgilagan narxda sotib oladiganlarga qaraganda ancha ta'sirchanroq bo'lishi mumkin. Menimcha, ijodkorlik aynan xayriyalar birinchi o'rinda turishi kerak bo'lgan sohadir. Buning uchun sizga kerak:

  • Odamlarga shu yo'l bilan minnatdorchilik bildirishni o'rgating. Ijodkorlarning o'zlari xayr-ehson olishni, hamma joyda turli to'lov usullariga havolalar qo'shishni xohlashlarini aniq ko'rsatishlari kerak.
  • Ushbu jarayonlarni soddalashtirish va mustahkamlash uchun ko'proq mexanizmlar kerak. Misol uchun, mualliflik huquqi havolalari yordamida ijodkorlik uchun xayriya qilishingiz mumkin bo'lgan global veb-sayt yarating.

    Aytaylik, havola shunga o'xshash:

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

    Agar biz musiqachilarni qisqartiradigan bo'lsak, unda:

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

    Ijrochi o'z taxallusini tasdiqlashi va unga biriktirishi kerak.

    Biz museria mijoziga bunday havolani yaratish funksiyasini qo'shmoqdamiz va ombordan foydalanadigan barcha loyihalar o'z veb-saytlari/ilovalaridagi qo'shiqlar yoniga ushbu havolalar bilan xayriya tugmalarini joylashtirishi mumkin. Foydalanuvchilar juda tez va oson xayriya qilish imkoniyatiga ega. Tabiiyki, bu yondashuv faqat saqlash orqali emas, balki har qanday loyiha va ijodkorlik toifasida qo'llanilishi mumkin.

Nima uchun aynan musiqa saqlash inshooti kerak va unda qanday ishtirok etish mumkin?

  • Agar siz musiqa bilan bog'liq loyiha ustida ishlayotgan bo'lsangiz yoki uni yaratishni rejalashtirmoqchi bo'lsangiz, unda hamma narsa bu uchun mo'ljallangan. Qo'shiqlarni saqlash va olish, onlayn qo'shiqlar oqimini oshirish uchun museria-dan foydalanishingiz mumkin. Agar bir vaqtning o'zida siz o'zingizning kamida bitta tugunni ko'tarish va ushlab turish qobiliyatiga ega bo'lsangiz, bu tarmoq rivojlanishiga eng yaxshi hissa bo'ladi.
  • Ehtimol, siz boshqa rolni o'z zimmangizga olishga tayyorsiz: kod bilan yordam berish yoki ma'lumotlar bazasini to'ldirish va boshqarish, do'stlaringizga loyiha haqida ma'lumot tarqatish va hk.
  • Ehtimol, sizga bu g'oya yoqqandir va u barcha yashashi va rivojlanishi uchun moliyaviy yordam berishga tayyor. Tugunlar qancha ko'p bo'lsa, shuncha ko'p qo'shiqlar.
  • Yoki bir nuqtada qo'shiqni topib yuklab olishingiz kerak bo'ladi. Buni juda oddiy, masalan, orqali qilishingiz mumkin telegram boti.

Loyiha hozir boshlang'ich bosqichda. Sinov tarmog'i ishga tushirildi, tugunlar tez-tez qayta ishga tushishi mumkin, yangilanishlarni talab qiladi va hokazo. Agar baholash davrida jiddiy muammolar bo'lmasa, xuddi shu tarmoq asosiy tarmoqqa aylantiriladi.

Siz tugun haqidagi ma'lumotni tashqaridan ko'rishingiz mumkin: qo'shiqlar soni, bo'sh joy va boshqalar kabi havoladan foydalanib http://node-address/status yoki http://node-address/status?pretty

Mening aloqalarim:

Manba: www.habr.com

a Izoh qo'shish