这是一道系统设计面试题,就是如何设计一个类似Spotify的音乐流媒体系统。在真正的面试中,通常,您会关注应用程序的一两个主要功能,但在本文中,我想对如何设计这样的系统进行一个较为全面的概述,然后您可以更深入地研究其中每个单独的部分。本文内容可以分为以下四点,分析系统的功能需求、用户量以及数据量设计系统的高层架构,包括移动应用程序、负载均衡器、Web服务器、数据存储等组件选择合适的存储结构,包括Blob存储和SQL数据库,并设计数据表和关系根据系统的扩展需求,引入CDN、缓存、数据库复制等技术,提高系统性能初始预估在这个阶段,我们假设系统需要处理50万用户和3000万首歌曲。我们将有播放歌曲的
一、初始阶段:基础版本需求: 初始要求是处理50万用户和3000万首歌曲。我们将有播放歌曲的用户和上传歌曲的艺术家。1.估算:数据计算让我们从估算我们需要的存储开始。首先,我们需要将歌曲存储在某种存储中。歌曲存储: Spotify等服务通常使用OggVorbis或AAC等格式进行流媒体传输,假设平均歌曲大小为3MB,我们需要3MB*3000万=90TB的存储空间用于歌曲。歌曲元数据: 我们还需要存储歌曲元数据和用户配置文件信息。每首歌平均的元数据大小约为100字节— 100字节*3000万=3GB用户元数据: 平均而言,我们将每个用户存储1KB的数据— 1KB*50万=0.5GB2.高级设计移
我正在使用node.js构建一个网站,可以在Spotify中跳过曲目和队列歌曲(用于学习Nodejs和JavaScript的项目)此代码在内部index.html中。document.getElementById('skip-song').addEventListener('click',function(){$.post({url:'https://api.spotify.com/v1/me/player/next',headers:{'Authorization':'Bearer'+access_token},success:function(response){console.log(r
我正在创建音乐应用。该应用程序需要检索有关轨道、专辑和艺术家的信息。它当前显示那个atm。我正在使用最后一个FM。但是,我想添加Spotify,以便它可以检索轨道进行播放。我想添加轨道的预览,这样当用户在应用程序上单击轨道时,他们会单击播放并播放歌曲(预览)。我想打开另一个xib来预览这首歌。我已经为我的应用程序提供了代码。截图显示它是如何流动的。这是我的第一个应用程序,请帮助。我不知道如何合并Spotify。非常感谢任何可以提供帮助的人。LastFm专辑、轨道和艺术家信息搜索。#import"MusicSearchServices.h"@implementationMusicSear
我尝试按照SpotifyiosSDK教程(https://developer.spotify.com/technologies/spotify-ios-sdk/tutorial/)进行操作。使用下面的SPTAuth方法构造登录URL后,本教程将使用以下方法检查登录URL是否为有效的Spotify授权URL:SPTAuth.defaultInstance().canHandleURL(loginURL)。但是,此方法返回false,阻止我登录用户。这是设置我的登录URL的代码:SPTAuth.defaultInstance().clientID="3d9c120475a047fab9b1
我用Swift制作了一个小应用程序,用户可以在其中搜索Spotify数据库中的歌曲。我正在使用WebAPI控制台>搜索项目。我的问题是新的OAuth系统,你必须在其中登录和所有其他东西。我的授权没问题,但是当我尝试使用以下代码获取访问token时,它返回以下错误:{"error":"server_error","error_description":"Unexpectedstatus:400"}。我的代码是:letkeys=""leturl=NSURL(string:"https://accounts.spotify.com/api/token")letsession=URLSessi
我想为Yaga类(class)创建自定义播放列表,并希望使用我们的应用程序播放。当达到某个特定时间间隔时,我还需要跳过播放列表的某些轨道。我曾尝试使用SpotifyWebAPI创建带有自定义轨道的播放列表。但是在尝试使用https://api.spotify.com/v1/me/player/play时所需上下文uri的端点,它会抛出非高级错误。我确保所有的范围都被使用。那么如果不是高级用户就没有办法进行流式传输吗?Alamofire.request("https://api.spotify.com/v1/me/player/play",method:.put,parameters:p
我正在查看CocoaLibSpotify,并尝试让一个简单的搜索请求正常工作。我这样提出请求:SPSearch*search=[[SPSearchalloc]initWithSearchQuery:@"Adele"inSession:[SPSessionsharedSession]];然后轮询搜索以返回:[searchsearchInProgress]但我从未见过searchInProgress返回NO-即。搜索似乎从未完成。我已经搜索了文档和示例,但它并没有帮助我理解如何正确使用SPSearch-绝对欢迎在这里提供一些帮助...谢谢,伊恩 最佳答案
到目前为止,我检查过的所有播放列表都返回了0个订阅者。难道我做错了什么?您需要特殊权限才能执行此操作吗?我正在使用cocoalibspotify2.2.0。代码如下:playlistURL=[NSURLURLWithString:@"spotify:user:tunigo:playlist:14KrfXbVeyzVek6UX8jUlH"];NSLog(@"%@",playlistURL);[[SPSessionsharedSession]playlistForURL:playlistURLcallback:^(SPPlaylist*playlist){if(playlist!=nil)
我正在使用Cocoalibspotify开发iOS应用程序。上周我将它提交给了AppStore。几天后,我收到一条消息,说他们没有测试帐户就无法测试我的应用程序。有什么方法可以让我获得一个测试高级spotify帐户,或者我是否必须创建一个新的30天免费试用帐户供他们测试?感谢您的帮助! 最佳答案 没有标准方法可以获取第二个高级帐户进行测试。如果您不愿意将自己的帐户详细信息提供给Apple,试用帐户可能是最好的方法。 关于ios-有什么方法可以获取SpotifyPremium帐户进行测试?