KKBOX 的 WWDC 2016 讀書會影片

KKBOX 今年也舉辦了 WWDC 影片的讀書會,我們挑選了一些我們比較有興趣的主題,在公司內分享。您可以從下方找到我們的讀書會錄影,以及每場讀書會對應的 WWDC 官方影片。

Continue reading

Posted in Code, iOS, Mac | Tagged , , , | 2 Comments

KKBOX 的音樂檔案儲存技術

前情提要

時間拉回到 2013 年,KKBOX 在當年的 COSCUP 曾介紹過如何使用 MogileFS 這套 DFS(Distributed file systems),儲存其音樂服務的各種檔案。

Slide: 全台灣最宅的科科科技如何利用 MogileFS 儲存數千萬個音樂檔案
錄影:

現在的狀況

時隔三年,雖然各間雲端服務商都有提供可靠的儲存技術可以使用,但 KKBOX 還是繼續使用原本的 MogileFS 來儲存大量的音樂檔案,隨著串接的唱片及版權公司逐年增加,音檔數量一直不斷成長。2013 年突破 1,000 萬首,2016/8/1 最新公布的數字(賀!KKBOX曲庫國際級水準 擴增至超過3000萬首歌!)是 3,000 萬首,這是取得授權上架的數字,實際上 KKBOX 後端的曲庫數量是超過這個數字。

MogileFS 規模

  • 儲存伺服器超過 75 台。
  • 總硬碟超過 2,300 顆。
  • 總儲存空間超過 10 PB
  • 使用 8 個機櫃。

Metadata Database

儲存檔案 Metadata 的 Database 技術沒有變化,依然使用 MySQL 搭配 HeartbeatDRBD 達到 High Availability

Tracker

Tracker 原本利用部分 storage server 分擔 replicate 工作,但遇到效能問題,所以改使用 4 台 dedicated 的伺服器負責 Tracker 角色。

每台 Tracker 都是兩張 1Gbps NIC 設定 802.3ad 模式的 Linux Bonding。

Storage Server 硬體規格

  • 系統碟用 2 顆 500GB SATA 硬碟設定成 RAID 1
  • 36 顆 6TB WD 紅標硬碟儲存 MogileFS 檔案。
  • 兩張 1Gbps NIC 利用 Linux Bonding Driver 設定標準 802.3ad 模式 LACP。
  • 一台 storage server 有 200TB 的空間。
  • 一機櫃 10 台 storage server 能提供 2PB 空間。

網路架構

  • tracker 和 storage server 都是兩條 1Gbps LACP 接到 Top-of-Rack 的 L2 Switch。
  • 每台 Top-of-Rack 都是兩條 10Gbps 光纖 LACP 到資料中心的 Core Router。

三年來的使用心得

優點

  • 成本相較企業級儲存解決方案(NetApp, EMC, …)低。
  • 容易擴充,KKBOX 從最一開始的 3 台 data node 逐漸成長到現在的超過 75 台。
  • 直接使用 NginxWebDAV module 包裝磁碟讀寫行為,能提供很高的效能,實際使用上能輕易的吃滿 storage server 的 2Gbps 頻寬。

缺點

  • 沒有自動 rebalance 的功能,在擴充容量後需要自行下指令 rebalance,讓各台間的磁碟使用量一致。
  • MogileFS 策略上會優先往磁碟使用量低的 device 寫入新資料,在平常的寫入量就不低的情況下,新增的 data node 數量太少,就容易有磁碟 I/O 及網路傳輸瓶頸。
Posted in Uncategorized | 3 Comments

Open source our Marco Polo DNS Daemon

Today we open source Marco Polo DNS Daemon.

KKBOX provides music services over 6 regions, including Taiwan, Hong Kong, Singapore, Malaysia, Japan, and Thailand. We deploy technologies to improve performance and user experience. We build serveral data centers in Taiwan, and partner with EdgeCast, Akamai, and CloudFront to make sure our users get best performance.

We implemented algorithms in API-level to select best server or CDN vendor for delivering audio data. API-level algorithms gave us flexibility to dispatch clients.

However, there is still something we cannot control in API-level, like image service. We want to dispatch clients to different data centers or CDN vendors in DNS-level.

Marco Polo DNS Daemon is a DNS server written by Perl, which can return different CNAME results based on client’s DNS resolver IP address and edns-client-subnet information. This allows us to control traffic by country code and AS number.

For example, we want to use country code and expect it returns a CNAME record to test.kkcube.com:

$ dig test.kkcube.com.country.mp.kkcube.com @8.8.8.8

And it returns:

;; ANSWER SECTION:
test.kkcube.com.country.mp.kkcube.com. 20 IN CNAME TW.test.kkcube.com.

Which is because I am in Taiwan. And if you want to use AS number:

$ dig test.kkcube.com.asn.mp.kkcube.com @8.8.8.8

Then it will return:

;; ANSWER SECTION:
test.kkcube.com.asn.mp.kkcube.com. 20 IN CNAME  3462.test.kkcube.com.

Which AS3462 belongs to my ISP, HiNet. Now you can setup test.kfs.io CNAME to test.kkcube.com.country.mp.kkcube.com, and setup another DNS record for TW.test.kkcube.com to accelerate Taiwan’s clients.

Please feel free to give us feedback in GitHub.

Posted in DNS | Tagged , , , , , , , , , , , , , | Leave a comment

Android at Google I/O 2016 上集

Google I/O 2016 結束一段時間了,今年總共放出影片 182 部,其中和 Android 相關的影片有 65 部,為了要快速了解今年本部門的守備範圍內有哪些新東西,大家分著把影片看過一輪後再與彼此分享,順便各自寫了些摘要分享出來給國內的 App 開發者們。

Android at Google I/O 2016 中集
Android at Google I/O 2016 下集

Continue reading

Posted in Uncategorized | 2 Comments

Android at Google I/O 2016 中集

Google I/O 2016 結束一段時間了,今年總共放出影片 182 部,其中和 Android 相關的影片有 65 部,為了要快速了解今年本部門的守備範圍內有哪些新東西,大家分著把影片看過一輪後再與彼此分享,順便各自寫了些摘要分享出來給國內的 App 開發者們。

Android at Google I/O 2016 上集
Android at Google I/O 2016 下集

Continue reading

Posted in Uncategorized | 1 Comment

Android at Google I/O 2016 下集

Google I/O 2016 結束一段時間了,今年總共放出影片 182 部,其中和 Android 相關的影片有 65 部,為了要快速了解今年本部門的守備範圍內有哪些新東西,大家分著把影片看過一輪後再與彼此分享,順便各自寫了些摘要分享出來給國內的 App 開發者們。

Android at Google I/O 2016 上集
Android at Google I/O 2016 中集

Continue reading

Posted in Uncategorized | 1 Comment

KKBOX for UWP (10.0.22.0)

<KKBOX for UWP 新體驗新方向> 介紹 KKBOX 在 Windows 10 新版本的功能介紹,不知道大家是否已經安裝且享受它了呢?

團隊持續努力開發與修正新的版本,今天要介紹 10.0.22.0 版本的相關內容。

  • 新增播放定時器功能

設定自動關閉音樂的時間,讓您聽著最愛的音樂入睡,不用擔心過度耗電的問題!Desktop/Mobile 均支援。

sleep_timer

 

  • 新增在我的音樂庫內搜尋歌曲

相信您聽過很多讓您回味無窮的歌曲,但是不小心忘記放在我的音樂庫裡面的哪一個歌單了?沒有問題,新增了讓您可搜尋我的音樂庫,歌曲不再忘記在哪裡。
search_mylibrary_1

 

  • Desktop 新增整頁模式或是分割模式顯示的按鈕

根據用戶的回饋: 希望在 Desktop 模式可以保持跟 Mobile 一樣的體驗。新增了讓您在Desktop 自行決定享受體驗的方式。

  • 分割模式

split_view

  • 整頁模式

single_view

  • 維持瀏覽記錄

過去只要您切換不同的 tabs (ex: 我的音樂庫,綫上精選,電臺…) 目前瀏覽的記錄就消失,無法使用返回鍵看到剛才的瀏覽的內容,造成使用上很不便利。該版本修正它,讓您可以悠遊的瀏覽與返回想要的內容。
history

 

  • 調整線上搜尋的主頁

過去進入線上搜尋只會顯示熱門關鍵字,無法有效地幫助您找到想要的歌曲。因此,調整爲預設顯示適合您的搜尋內容。
search

 

  • 增加聊天室特別功能

跟隨喜歡的台長或是藝人時,聊天室裏面總是很多看不完的訊息,想要直接看台長或是清掉現在的訊息。沒問題,現在提供給您。
dj

如果您自己是開台的台長可在聊天室裡面 tag 對象,針對他發言哦。
dj2
一起開台來變成名人且得到更多新功能吧!

 

  • 給予我們評分

KKBOX for UWP 的版本需要您的支援,如果在使用過程裡面跳出請求您幫忙評分時,要記得幫忙到 Store 裡面給予評分哦。好的壞的都希望您提供寶貴的意見。感謝!
wp_ss_20160621_0001

 

修正 Bugs 與 UI/UX 優化:

  • 調整效能
  • 修正隨機播放無法使用
  • 修正下載後的歌曲無法播放,點擊離線歌曲播放跟歌詞不一致
  • 優化在手機版本的橫向顯示
  • 莫明閃退
  • 修正歌曲同步失敗問題

 

以上是這次 10.0.22.0 釋出的相關功能與修正。錯誤修正是我們的義務,過程造成所有用戶的不便,真的深表歉意。我們會加強各方面的檢查。

想知道更多功能與體驗新版本的魅力嗎?

到【Get it on Windows 10】下載吧! 一起享受 KKBOX 在 Windows 10 上的新體驗。

如果您的設備還不是 Windows 10 請走這邊  [Desktop 升級] 或 [Mobile 升級]。

KKBOX .NET Team 將持續開發更穩定與接近其他平臺所支援的功能,讓喜愛 KKBOX 與熟悉 Windows 的用戶都能有享受更好的音樂生活。

KKBOX 需要您的支援,Windows 10 / Windows 10 Mobile 更需要您的認同。

如果有任何問題歡迎寫信到  uwp-dev-intl@kkbox.com,非常感謝。

Posted in Windows | Tagged , , | Leave a comment

在 KKBOX 中使用 Python 的經驗

KKStream 的工程師 Drake Guan 上個月在台北的 Python 聚會—Taipei.py—當中,分享了 KKBOX 過去幾年如何導入 Python 程式語言的經驗。您可以在 slide share 網站中找到這份分享的投影片。

Posted in Events, Uncategorized | Tagged , | Leave a comment

KKBOX for UWP 新體驗新方向

很榮幸向大家介紹 KKBOX 針對 Windows 10 所精心打造的新版本:KKBOX for UWP。

Universal Windows Platform (UWP) 是 Microsoft 針對 Windows 10 開始所推出的新型開發架構 ,目的是讓所有運作 Windows 10 的設備,例如:Mobile,Desktop,Xbox,HoloLens,Windows 10 IoT,…等都能執行該架構所開發出來的 Apps。這樣有利於延展 App 的使用設備範圍,並創造更多的收益。

KKBOX .NET Team 累積一年的 Windows Store/Windows Phone 的 Apps 開發經驗後,再次以短時間與所有部門的全力協助合作下重新打造了適合於 Windows 10 的 KKBOX。

KKBOX for UWP 提供許多新的功能,並且優化了適合更多效能與穩定度:

    • 針對 UWP 適用於各種大小尺寸螢幕的特性,做了最好的使用者體驗
    • Desktop / Tablet / Mobile 享受一致的體驗與功能
    • 獨立 Player bar,更方便地控制播放
    • 同時支援 Touch 與 Mouse 的操作
    • 更穩定的播放機制
    • 支援 Windows Continuum
    • 逐步優化 App 整體效能
    • 補上同 Android / iOS 已支援的相關 KKBOX 功能
    • 還有正在努力開發…

接著一起來體驗 KKBOX for UWP 版本的效果吧!

 

  • 大螢幕提供分割畫面,同時閲讀上下一頁的內容

multi_view_000

大螢幕相對可顯示內容的範圍變大,增加分割畫面機制讓用戶可以一次閲讀上下頁的內容。

m_player_bar

小螢幕的部分則維持手機版本的顯示與操作方式。

 

  • 大小螢幕都能享受一致的體驗

開發符合 UWP 的 Design Guideline,并且統一 Desktop 與 Mobile 的使用經驗,讓用戶不需要特別針對不同的尺寸或搭配的輸入方式做調整,享受一致的體驗。

 

  • 支援大小螢幕的 Nowplaying 與 Player Bar

m_player

w_player

相同的 Nowplaying 在大小不同尺寸畫面享受的體驗依舊一致,并適合各自的顯示内容。

s_bar_change

獨立播放列讓用戶更容易操作到播放控制。在小尺寸的畫面時可直接在播放列上使用手勢左右滑動或是滑鼠的左右滑動,切換上下一首歌曲;大尺寸的畫面時折可以在封面圖上達到相同的效果。

 

  • 在我的音樂庫裏面支援手勢的操作

wp_ss_20160401_0002 wp_ss_20160401_0003

在我的音樂庫裏面,用戶可針對自訂歌單做手勢的左右滑動,往左滑會顯示刪除歌單選項,往右滑會顯示編輯歌單名稱的功能。更適合 Touch 的操作習慣。

 

  • 習慣橫向拿手機嗎?沒有問題我們也支援了

ob_00 ob_01

橫向一樣可以操作並且學習歌曲。(畫面不滿意,沒有問題!我們已經在處理!)

 

  • 支援 Windows Continuum

S_4109748802172

如果您有購買 Windows Continuum 或是您的螢幕/電視本身有支援 Miracast 的功能,新的 Windows 10 Mobile 手機 (Lumia 950/950 XL 或是其他設備) 可以將新的 UWP 投影過去。KKBOX for UWP 針對這樣的特性做了一些調整,支援在電視或是更大尺寸的畫面操作。

 

  • 運作在 Raspberry Pi 2 (Windows 10 IoT) 一樣沒有問題

iot_uwp_s

KKBOX for UWP 一樣支援 Windows 10 IoT 的設備,該版本目前仍在測試中,提供與目前運作在 Desktop/Mobile 一樣的功能個。我們將繼續調整適合運作在 IoT 設備規格版本 。

 

以上截取 KKBOX for UWP 增加的特性與調整。想知道更多功能與體驗新版本的魅力嗎?

到【Get it on Windows 10】下載吧! 一起享受 KKBOX 在 Windows 10 上的新體驗。

如果您的設備還不是 Windows 10 請走這邊  [Desktop 升級] 或 [Mobile 升級]。

KKBOX .NET Team 將持續開發更穩定與接近其他平臺所支援的功能,讓喜愛 KKBOX 與熟悉 Windows 的用戶都能有享受更好的音樂生活。

KKBOX 需要您的支援,Windows 10 / Windows 10 Mobile 更需要您的認同。

如果有任何問題歡迎寫信到  uwp-dev-intl@kkbox.com,非常感謝。

 


在 10.0.8.0 的版本送出後我們已經陸續收到一些問題的回報跟建議。真的非常感謝大家。

我們會繼續修正並且放出版本更新,敬請期待。

 

KKBOX .NET Team 全體人員感謝所有喜愛 KKBOX 與 Windows 的用戶。更感謝協助幫忙測試與設計符合 UWP 的全體合作夥伴,非常感謝。

Posted in Windows | Tagged , , | 1 Comment

Apple TV Tech Talks 東京場

Apple TV Tech Talks 東京場

蘋果在 2015 年十二月到 2016 年一月,在世界幾個主要都市舉辦一系列名為 Apple TV Tech Talks 的官方技術講座,主題為去年十月推出的第四代 Apple TV 上的 App 開發。

KKBOX 派出兩員參加 2016/1/21 在東京新宿舉辦的場次。在早上八點,冒著低溫趕到大樓林立的東京都廳對面的活動場地希爾頓飯店後,開始一整天的活動。蘋果派出三名 envanglist,進行總共九場、每場約三十分鐘的英文技術演講,也就是除休息時間外的連續五的小時的課程,除了與開發本身的議程之外,也包含部分設計與市場行銷的議題。

此外也有一個 Q&A Lounge 供開發者詢問開發過程中所遇到的問題。我們之前遇到了一些問題,也在現場獲得解決,不過我們現在還不方便透露我們遇到了怎樣的問題,先就當天的內容做一摘要。

本文也刊於 Rocket Café

Continue reading

Posted in Events | Tagged , , | Leave a comment