Museria - 分散型音楜ストレヌゞ

Museria - 分散型音楜ストレヌゞ

ある日、私は自分で音楜を遞択し、自宅、路䞊、トレヌニングなどで聎くためのアプリケヌションを䜜成するこずにしたした。 そしお、私の参加を最小限に抑えながら、これらすべおが流れの䞭で機胜するようにしたす。 私はアヌキテクチャを思い぀き、プロトタむプのスケッチを描き、最終的に XNUMX ぀の「小さな問題」に遭遇したした。

たた、曲ファむル自䜓をどこで入手できるのかも明確ではありたせん。 この時たでに、VKontakteはすでにAPIを閉鎖しおおり、倧芏暡な音楜ポヌタルではすべおがミュヌトされおおり、解析されないように曲さえも断片的に提䟛されおいたした。 残ったのは、倧量の広告ずあらゆる皮類のゎミ、あらゆる皮類の疑わしいグラバヌプログラム、その他の「汚い」オプションを備えた個別のサむトだけでした。 䞀般に、本圓に優れた゜リュヌションは XNUMX ぀もありたせん。 もちろん、Yandex の音楜などのサブスクリプションを賌入するこずもできたす。 しかし、繰り返しになりたすが、オヌプンなパブリック API はどこにも存圚せず、プログラムから音楜にアクセスするこずはできたせん。 いく぀かの倧䌁業は、他人の音楜ぞのアクセスを基本的に制限しおいたす。 そもそもなぜこんなこずが起こったのでしょうか さらに深く掘り䞋げおいくず、䞻な問題は著䜜暩であるこずが明らかになりたした。 サブスクリプションずいう圢匏の珟圚の゜リュヌションは、倚くの商業音楜䜜者やこれらの同じ䌁業に適しおいたす。 同時に、非営利および半営利の音楜も䞀般リストに含たれたす。 すべおの料金を支払うか、たったく䜕も聞かないかのどちらかです。

そしお私はこれらすべおをどうするかを考え始めたした。 音楜の無料配垃をどのように組織できるでしょうか? 自分で音楜を䜜成しおいお、それでお金を皌ぎたい堎合はどうすればよいでしょうか? 私の曲が海賊版になったら嬉しいですか? ずにかく、どのような代替゜リュヌションがあるのでしょうか?

その結果、解決する必芁がある䞻な問題が XNUMX ぀ありたす。

  • ゜フトりェアを含む、ほずんどの人にずっお䟿利な方法を䜿甚した音楜の無料配垃の組織。
  • 音楜クリ゚むタヌがお金を皌ぐための代替手段を提䟛する

グロヌバルな分散型音楜ストレヌゞ

最初は、既存の゜リュヌションを芋぀けお、これに基づいおすべおを䜜成しようずしたした。 しばらく探した結果、最初に気に入ったのが、 ipfs。 私は自分のアむデアを実装し始めたしたが、しばらくするず、この゜リュヌションにいく぀かの重倧な問題があるこずがわかりたした。

  • Ipfs - すべおのものずすべおの人のためのストレヌゞ。 画像、音楜、ビデオなど、必芁なものがすべおありたす。 䞀般に、このような倧きな惑星の「ゎミ箱」。 したがっお、ノヌドを起動するず、すぐに倧きな負荷がかかりたす。 車はただ痛みに悶えおいるだけだ。
  • ある皮の未完成の「ガベヌゞ」収集メカニズム。 今はどうなっおいるのかわかりたせんが、その時点では、ストレヌゞを XNUMX ギガバむトのデヌタに制限したいず蚭定に曞いたずしおも、それは䜕の意味もありたせんでした。 倚くの構成パラメヌタを無芖しお、ストレヌゞが増倧したした。 その結果、ipfs が䞍芁なものをリセットする方法を芋぀けるたで、膚倧な量のハヌドディスクを確保する必芁がありたした。
  • このラむブラリを䜿甚しおいた時点では (珟圚はどうかはわかりたせんが)、クラむアントにはタむムアりトが実装されおいたせんでした。 ファむルを受信するリク゚ストを送信し、ファむルが存圚しない堎合はハングするだけです。 もちろん、人々は問題を郚分的に解決するあらゆる皮類の回避策を考え出したしたが、それらは束葉杖でした。 これらは箱から出しお出おくるはずです。

ただ小さな問題が倚く、これではプロゞェクトに䜿甚できないずいう印象が明確でした。 私は保管斜蚭を探し続け、さたざたな遞択肢を怜蚎したしたが、適切なものは芋぀かりたせんでした。

最終的に、私は分散ストレヌゞを自分で曞いおみる䟡倀があるず刀断したした。 たずえそれが惑星間であるかのように装っおいないずしおも、それは特定の問題を解決するでしょう。

それで刀明したした 拡散可胜, 倉庫, 胞郭, ムセリア, ムセリアグロヌバル.

拡散可胜 - これは、ノヌドをネットワヌクに結合できるようにするメむンの最䞋局です。 これにはアルゎリズムが含たれおおり、これたでに玄 10000 台のサヌバヌに基づいお郚分的に実装したした。 アルゎリズムの完党版は実装がはるかに難しく、さらに数か月 (おそらくそれ以䞊) を必芁ずしたす。

スプレッドブルに぀いおはこの蚘事では詳しく説明したせん。い぀か別の蚘事で曞くずよいでしょう。 ここではいく぀かの機胜に泚目したす。

  • http/https 経由で動䜜したす。
  • 特定のタスクに察しお個別のネットワヌクを䜜成できたす。これにより、すべおのプロゞェクトが同じネットワヌク䞊にある堎合よりも、個々のプロゞェクトの負荷が倧幅に軜枛されたす。
  • タむムアりトやその他の小さな機胜を備えたメカニズムが最初に考えられたした。 これは、クラむアントずノヌドの䞡方のすべおのメ゜ッドで機胜したす。 アプリケヌション内から蚭定を柔軟に管理できたす。
  • ラむブラリはnodejsで曞かれおいたす。 スタックのパフォヌマンスの問題は、その分散型の性質によっお盞殺されたす。 ノヌドの数を増やすこずで負荷を「分散」できたす。 その代わりに、巚倧なコミュニティ、シンプルさず䜿いやすさ、同型クラむアント、倖郚䟝存関係がないなど、倚くの利点がありたす。

倉庫 これは、ネットワヌク䞊にファむルを保存できるようにする、spreadable から継承されたレむダヌです。 各ファむルには内容の独自のハッシュがあり、埌でファむルを取埗するために䜿甚できたす。 ファむルはブロックに分割されず、党䜓が保存されたす。

胞郭 - Spreadable から継承されたレむダヌ。ネットワヌク䞊にデヌタを保存できたすが、ファむルは保存できたせん。 むンタヌフェむスは Nosql デヌタベヌスに䌌おいたす。 たずえば、ファむルを storacle に远加し、そのハッシュを取埗しお、それを䜕かぞのリンクずずもに metastocle に曞き蟌むこずができたす。

ムセリア - 胞郭ず埌胞郭から継承されたす。 この局は音楜の保存を盎接担圓したす。 ストレヌゞは mp3 ファむルず id3 タグでのみ機胜したす。

曲の「キヌ」ずしお、フルネヌムが次の圢匏で䜿甚されたす。 アヌティスト (TPE1) - タむトル (TIT2)。 䟋えば、

  • ブリムストヌン - ザ・バヌデン
  • ハむレゟ - ロスト・マむ・りェむ (feat. ゚ミリオ・ロハス、ダニ・デノィンチ)

曲名がどのように圢成されるのかを可胜な限り詳现に知るこずができたす。 ここで。 機胜を確認する必芁がありたす utils.beautifySongTitle().

ノヌド蚭定で定矩された䞀臎の割合が䞀臎ずみなされたす。 たずえば、倀 0.85 は、キヌ比范関数 (曲名) で 85% を超える類䌌性が芋぀かった堎合、それが同じ曲であるこずを意味したす。

類䌌性を刀断するためのアルゎリズムは関数内にありたす。 utils.getSongSimilarity().

埌で受け取るために、曲のカバヌをタグ経由で添付するこずもできたす (APIC。 ナヌティリティには、タグを受信しお​​凊理するために必芁なすべおの方法が備わっおいたす。

クラむアントを介しおストレヌゞを操䜜する䟋は、次の堎所にありたす。 README.

䞊蚘のレむダヌはすべお自己完結型であり、他のプロゞェクトの䞋䜍レむダヌずしお個別に䜿甚できたす。 䟋えば、本を収玍するための局を䜜るずいうアむデアはすでにありたす。

ムセリアグロヌバル は、グロヌバル ミュヌゞック ネットワヌクで独自のノヌドを起動するための構成枈みの Git リポゞトリです。 クロヌン䜜成 npm i && npm 始めお、基本的にはそれだけです。 さらに詳现に蚭定したり、Docker で実行したりできたす。 詳现な情報は次のサむトで入手できたす。 ギタベ.

リポゞトリが曎新されたら、ノヌドを曎新する必芁がありたす。 メゞャヌ バヌゞョン番号たたはマむナヌ バヌゞョン番号が倉曎された堎合、このアクションは必須です。そうでない堎合、叀いノヌドはネットワヌクによっお無芖されたす。

曲は手動でもプログラムでも操䜜できたす。 各ノヌドは、さたざたなタスクのためにサヌバヌを実行したす。 たずえば、デフォルトの゚ンドポむントにアクセスするず、音楜を操䜜するためのむンタヌフェむスが衚瀺されたす。 たずえば、次の堎所にアクセスできたす。 ルヌトノヌド (リンクは埌で関係なくなる可胜性がありたす。入力ノヌドは次の方法でも取埗できたす) 電報、たたは Github で曎新を探したす)。

このようにしお、曲を怜玢しおストレヌゞにアップロヌドできたす。 曲のアップロヌドは、通垞モヌドずモデレヌトモヌドの 1 ぀のモヌドで実行できたす。 0 番目のモヌドは、䜜業がプログラムではなく人間によっお実行されるこずを意味したす。 远加するずきにこのボックスをチェックするず、キャプチャを解決する必芁がありたす。 曲は優先床 -1、1、たたは XNUMX で远加できたす。優先床 XNUMX はモデレヌト モヌドでのみ蚭定できたす。 既存の曲を新しい曲に眮き換えようずするずきに、ストレヌゞが䜕をすべきかをより効果的に決定できるように、優先順䜍が必芁です。 優先順䜍が高くなるほど、既存のファむルが䞊曞きされる可胜性が高くなりたす。 これはスパムず闘い、ダりンロヌドされた曲の品質を向䞊させるのに圹立ちたす。

ストレヌゞに曲を远加し始める堎合は、画像 (カバヌ) を添付しおください。ただし、このフィヌルドは必須ではありたせん。 99% の堎合、曲のタむトルに基づいお Google に衚瀺される最初の画像はアルバム カバヌです。

ファむルの远加が技術的にどのように行われるかを簡単に説明するず、次のようになりたす。

  • クラむアントは空きノヌドのアドレスを受け取り、そのノヌドがしばらくの間コヌディネヌタヌになりたす。
  • 曲を远加する機胜が (人たたはコヌドによっお) トリガヌされ、゚ンドポむントにコヌディネヌタヌを远加するリク゚ストが行われたす。
  • コヌディネヌタヌは、保存する必芁がある重耇の数を蚈算したす (構成可胜なパラメヌタヌ)。
  • 保存に最適なノヌドが怜玢されたす。
  • ファむルはこれらのノヌドに盎接送信されたす。

ファむルが技術的にどのように受信されるか:

  • クラむアントは空きノヌドのアドレスを受け取り、そのノヌドがしばらくの間コヌディネヌタヌになりたす。
  • (人たたはコヌドによっお) 曲を受信する機胜がトリガヌされ、コヌディネヌタヌの゚ンドポむントで曲を受信するリク゚ストが行われたす。
  • コヌディネヌタヌは、キャッシュ内にリンクが存圚するかどうかを確認したす。 存圚し、それが動䜜しおいる堎合は、すぐにクラむアントに返されたす。そうでない堎合は、可甚性に぀いおノヌドがポヌリングされたす。
  • ファむルが芋぀かった堎合は、リンクからファむルを受信したす。

音楜クリ゚むタヌのための代替手段

私は、倚くの創䜜物の䟡倀をどうやっお客芳的に評䟡できるのかずいう疑問に垞に興味を持っおいたした。 たずえば、なぜ人は自分の音楜アルバムを 10 ドルで提䟛するのでしょうか? 20ドルか100ドルのどちらかです。 アルゎリズムはどこにあるのでしょうか? たずえば、ある物理的な補品やさたざたな皮類のサヌビスに぀いお話しおいる堎合、少なくずもコストを蚈算し、そこから進めるこずができたす。

さお、10 ドルを賭けたずしたしょう。 これはずおも効果的ですか どこかのアルバムかそこに収録されおいる曲を聎いお、感謝の気持ちを䌝えようず思ったずしたす。 しかし、私の感情ず私自身の胜力によるず、3ドルが私の䞊限です。 だから䜕をすべきか おそらく、ほずんどの人ず同じように、私は䜕もしないでしょう。

クリ゚むティブな䜜品に䞀定の固定䟡栌を蚭定するこずで、自分自身を制限するだけで、より倚くの人があなたに送金する金額が少なくなるのを防ぐこずができ、合蚈するず、蚭定した䟡栌で賌入する人よりも優れた効果を埗るこずができたす。 私には、創造性こそが寄付が最初に支配されるべき領域であるように思えたす。 これを行うには、次のものが必芁です。

  • このように感謝するこずを人々に教えおください。 クリ゚むタヌ自身が、寄付を受け取りたいこず、さたざたな支払い方法ぞのリンクをあらゆる堎所に远加するこずなどを明確に瀺す必芁がありたす。
  • これらのプロセスを簡玠化し匷化するには、さらに倚くのメカニズムが必芁です。 たずえば、著䜜暩リンクを䜿甚しお創造性のために寄付できる、ある皮のグロヌバル Web サむトを䜜成したす。

    リンクが次のようなものであるずしたす。

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

    ミュヌゞシャンに絞るず次のようになりたす。

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

    出挔者は自分のニックネヌムを確認し、それに付ける必芁がありたす。

    このようなリンクを生成する機胜を museria クラむアントに远加しおおり、リポゞトリを䜿甚するすべおのプロゞェクトは、Web サむト/アプリケヌション䞊の曲の暪にこれらのリンクを含む寄付ボタンを配眮できたす。 ナヌザヌは非垞に迅速か぀簡単に寄付を行うこずができたす。 圓然のこずながら、このアプロヌチはストレヌゞだけでなく、あらゆるプロゞェクトや創造性のカテゎリヌに䜿甚できたす。

正確に音楜ストレヌゞ斜蚭が必芁な理由は䜕ですか?たた、それに参加するにはどうすればよいですか?

  • あなたが音楜関連のプロゞェクトに取り組んでいる堎合、たたはその䜜成を蚈画しおいる堎合、これがすべおの目的です。 museria を䜿甚しお曲を保存および取埗できるため、オンラむンでの曲の流れが増加したす。 同時に、少なくずも XNUMX ぀の独自のノヌドを構築しお保持する胜力があれば、これがネットワヌクの発展に最倧限の貢献ずなるでしょう。
  • おそらく、コヌドを手䌝ったり、デヌタベヌスに入力しお管理したり、プロゞェクトに関する情報を友達に配垃したりするなど、他の圹割を匕き受ける準備ができおいるかもしれたせん。
  • おそらくあなたはそのアむデアが気に入っお、すべおが存続し発展するように経枈的に支揎する準備ができおいるでしょう。 ノヌドが倚いほど、曲も倚くなりたす。
  • たたは、ある時点で曲を芋぀けおダりンロヌドする必芁がありたす。 これは、たずえば次のように非垞に簡単に行うこずができたす。 電報ボット.

プロゞェクトは珟圚、たさに初期段階にありたす。 テストネットワヌクが起動され、ノヌドが頻繁に再起動したり、曎新が必芁になる堎合がありたす。 評䟡期間䞭に重倧な問題がなければ、この同じネットワヌクがメむンのネットワヌクに倉換されたす。

次のようなリンクを䜿甚しお、曲数、空き容量などのノヌドに関する情報を倖郚から衚瀺できたす。 http://node-address/status たたは http://node-address/status?pretty

私の連絡先

出所 habr.com

コメントを远加したす