中文字幕日韩一区二区_国产一区二区av_国产毛片av_久久久久国产一区_色婷婷电影_国产一区二区精品

淘寶圖片服務(wù)的學(xué)習(xí)

  一、淘寶網(wǎng)的困境

  對于淘寶網(wǎng)這樣的大型電子商務(wù)網(wǎng)站,對于圖片服務(wù)的要求特別的高。而且對于賣家來說,圖片遠(yuǎn)勝于文字描述,因此賣家也格外看重圖片的顯示質(zhì)量、訪問速度等問題。根據(jù)淘寶網(wǎng)的流量分析,整個淘寶網(wǎng)流量中,圖片的訪問流量會占到90%以上,而主站的網(wǎng)頁則占到不到10%。同時大量的圖片需要根據(jù)不同的應(yīng)用位置,生成不同大小規(guī)格的縮略圖。考慮到多種不同的應(yīng)用場景以及改版的可能性,一張原圖有可能需要生成20多個不同尺寸規(guī)格的縮略圖。

  淘寶整體圖片存儲系統(tǒng)容量1800TB(1.8PB),已經(jīng)占用空間990TB(約1PB)。保存的圖片文件數(shù)量達(dá)到286億多個,這些圖片文件包括根據(jù)原圖生成的縮略圖。平均圖片大小是17.45K;8K以下圖片占圖片數(shù)總量的61%,占存儲容量的11%。對于如此大規(guī)模的小文件存儲與讀取需要頻繁的尋道和換道,在大量高并發(fā)訪問量的情況下,非常容易造成讀取延遲。

  2007年之前淘寶采用NETApp公司的文件存儲系統(tǒng)。至2006年, NETApp公司最高端的產(chǎn)品也不能滿足淘寶存儲的要求。首先是商用的存儲系統(tǒng)沒有對小文件存儲和讀取的環(huán)境進(jìn)行有針對性的優(yōu)化;其次,文件數(shù)量大,網(wǎng)絡(luò)存儲設(shè)備無法支撐;另外,整個系統(tǒng)所連接的服務(wù)器也越來越多,網(wǎng)絡(luò)連接數(shù)已經(jīng)到達(dá)了網(wǎng)絡(luò)存儲設(shè)備的極限。此外,商用存儲系統(tǒng)擴(kuò)容成本高,10T的存儲容量需要幾百萬,而且存在單點故障,容災(zāi)和安全性無法得到很好的保證。

  二、淘寶網(wǎng)自主開發(fā)的目的

  1. 商用軟件很難滿足大規(guī)模系統(tǒng)的應(yīng)用需求,無論存儲還是CDN還是負(fù)載均衡,因為在廠商實驗室端,很難實現(xiàn)如此大的數(shù)據(jù)規(guī)模測試。
  2. 研發(fā)過程中,將開源和自主開發(fā)相結(jié)合,會有更好的可控性,系統(tǒng)出問題了,完全可以從底層解決問題,系統(tǒng)擴(kuò)展性也更高。
  3. 在一定規(guī)模效應(yīng)基礎(chǔ)上,研發(fā)的投入都是值得的。當(dāng)規(guī)模超過交叉點后自主研發(fā)才能收到較好的經(jīng)濟(jì)效果。實際上淘寶網(wǎng)的規(guī)模已經(jīng)遠(yuǎn)遠(yuǎn)超過了交叉點。
  4. 自主研發(fā)的系統(tǒng)可在軟件和硬件多個層次不斷的優(yōu)化。

  三、淘寶TFS的介紹

  1、TFS 1.0 版本

  從2006年開始,淘寶網(wǎng)決定自己開發(fā)一套針對海量小文件存儲難題的文件系統(tǒng),用于解決自身圖片存儲的難題。到2007年6月,TFS(淘寶文件系統(tǒng),Taobao File System)正式上線運營。在生產(chǎn)環(huán)境中應(yīng)用的集群規(guī)模達(dá)到了200臺PC Server(146G*6 SAS 15K Raid5),文件數(shù)量達(dá)到上億級別;系統(tǒng)部署存儲容量: 140 TB;實際使用存儲容量: 50 TB;單臺支持隨機(jī)IOPS 200+,流量3MBps。

  圖為淘寶集群文件系統(tǒng)TFS 1.0第一版的邏輯架構(gòu):集群由一對Name Server和多臺Data Server構(gòu)成,Name Server的兩臺服務(wù)器互為雙機(jī),就是集群文件系統(tǒng)中管理節(jié)點的概念。

  • 每個Data Server運行在一臺普通的Linux主機(jī)上
  • 以block文件的形式存放數(shù)據(jù)文件(一般64M一個block)
  • block存多份保證數(shù)據(jù)安全
  • 利用ext3文件系統(tǒng)存放數(shù)據(jù)文件
  • 磁盤raid5做數(shù)據(jù)冗余
  • 文件名內(nèi)置元數(shù)據(jù)信息,用戶自己保存TFS文件名與實際文件的對照關(guān)系–使得元數(shù)據(jù)量特別小。

  TFS最大的特點就是將一部分元數(shù)據(jù)隱藏到圖片的保存文件名上,大大簡化了元數(shù)據(jù),消除了管理節(jié)點對整體系統(tǒng)性能的制約,這一理念和目前業(yè)界流行的“對象存儲”較為類似。傳統(tǒng)的集群系統(tǒng)里面元數(shù)據(jù)只有1份,通常由管理節(jié)點來管理,因而很容易成為瓶頸。而對于淘寶網(wǎng)的用戶來說,圖片文件究竟用什么名字來保存實際上用戶并不關(guān)心,因此TFS在設(shè)計規(guī)劃上考慮在圖片的保存文件名上暗藏了一些元數(shù)據(jù)信息,例如圖片的大小、時間、訪問頻次等等信息,包括所在的邏輯塊號。而在元數(shù)據(jù)上,實際上保存的信息很少,因此元數(shù)據(jù)結(jié)構(gòu)非常簡單。僅僅只需要一個fileID,能夠準(zhǔn)確定位文件在什么地方。由于大量的文件信息都隱藏在文件名中,整個系統(tǒng)完全拋棄了傳統(tǒng)的目錄樹結(jié)構(gòu),因為目錄樹開銷最大。拿掉后,整個集群的高可擴(kuò)展性極大提高。

  2、 TFS 1.3版本

  到2009年6月,TFS 1.3版本上線,集群規(guī)模大大擴(kuò)展,部署到淘寶的圖片生產(chǎn)系統(tǒng)上,整個系統(tǒng)已經(jīng)從原有200臺PC服務(wù)器擴(kuò)增至440臺PC Server(300G*12 SAS 15K RPM) + 30臺PC Server (600G*12 SAS 15K RPM)。支持文件數(shù)量也擴(kuò)容至百億級別;系統(tǒng)部署存儲容量:1800TB(1.8PB);當(dāng)前實際存儲容量:995TB;單臺Data Server支持隨機(jī)IOPS 900+,流量15MB+;目前Name Server運行的物理內(nèi)存是217MB(服務(wù)器使用千兆網(wǎng)卡)。

tfs-2

  圖為TFS1.3版本的邏輯結(jié)構(gòu)圖,在TFS1.3版本中,淘寶網(wǎng)的軟件工作組重點改善了心跳和同步的性能,最新版本的心跳和同步在幾秒鐘之內(nèi)就可完成切換,同時進(jìn)行了一些新的優(yōu)化:包括元數(shù)據(jù)存內(nèi)存上,清理磁盤空間,性能上也做了優(yōu)化,包括:

  • 完全扁平化的數(shù)據(jù)組織結(jié)構(gòu),拋棄了傳統(tǒng)文件系統(tǒng)的目錄結(jié)構(gòu)。
  • 在塊設(shè)備基礎(chǔ)上建立自有的文件系統(tǒng),減少EXT3等文件系統(tǒng)數(shù)據(jù)碎片帶來的性能損耗
  • 單進(jìn)程管理單塊磁盤的方式,摒除RAID5機(jī)制
  • 帶有HA機(jī)制的中央控制節(jié)點,在安全穩(wěn)定和性能復(fù)雜度之間取得平衡。
  • 盡量縮減元數(shù)據(jù)大小,將元數(shù)據(jù)全部加載入內(nèi)存,提升訪問速度。
  • 跨機(jī)架和IDC的負(fù)載均衡和冗余安全策略。
  • 完全平滑擴(kuò)容。

  TFS主要的性能參數(shù)不是IO吞吐量,而是單臺PCServer提供隨機(jī)讀寫IOPS。由于硬件型號不同,很難給出一個參考值來說明性能。但基本上可以達(dá)到單塊磁盤隨機(jī)IOPS理論最大值的60%左右,整機(jī)的輸出隨盤數(shù)增加而線性增加。

  3、 TFS 2.0 版本

  TFS 2.0(下面簡稱TFS,目前已經(jīng)開源)是一個高可擴(kuò)展、高可用、高性能、面向互聯(lián)網(wǎng)服務(wù)的分布式文件系統(tǒng),主要針對海量的非結(jié)構(gòu)化數(shù)據(jù),它構(gòu)筑在普通的Linux機(jī)器集群上,可為外部提供高可靠和高并發(fā)的存儲訪問。TFS為淘寶提供海量小文件存儲,通常文件大小不超過1M,滿足了淘寶對小文件存儲的需求,被廣泛地應(yīng)用在淘寶各項應(yīng)用中。它采用了HA架構(gòu)和平滑擴(kuò)容,保證了整個文件系統(tǒng)的可用性和擴(kuò)展性。同時扁平化的數(shù)據(jù)組織結(jié)構(gòu),可將文件名映射到文件的物理地址,簡化了文件的訪問流程,一定程度上為TFS提供了良好的讀寫性能。

tfs-3-1

  一個TFS集群由兩個!NameServer節(jié)點(一主一備)和多個!DataServer節(jié)點組成。這些服務(wù)程序都是作為一個用戶級的程序運行在普通Linux機(jī)器上的。在TFS中,將大量的小文件(實際數(shù)據(jù)文件)合并成為一個大文件,這個大文件稱為塊(Block), 每個Block擁有在集群內(nèi)唯一的編號(Block Id), Block Id在!NameServer在創(chuàng)建Block的時候分配, !NameServer維護(hù)block與!DataServer的關(guān)系。Block中的實際數(shù)據(jù)都存儲在!DataServer上。而一臺!DataServer服務(wù)器一般會有多個獨立!DataServer進(jìn)程存在,每個進(jìn)程負(fù)責(zé)管理一個掛載點,這個掛載點一般是一個獨立磁盤上的文件目錄,以降低單個磁盤損壞帶來的影響。正常情況下,一個塊會在!DataServer上存在,主!NameServer負(fù)責(zé)Block的創(chuàng)建,刪除,復(fù)制,均衡,整理, !NameServer不負(fù)責(zé)實際數(shù)據(jù)的讀寫,實際數(shù)據(jù)的讀寫由!DataServer完成。

  • !NameServer主要功能是: 管理維護(hù)Block和!DataServer相關(guān)信息,包括!DataServer加入,退出, 心跳信息, block和!DataServer的對應(yīng)關(guān)系建立,解除。
  • !DataServer主要功能是: 負(fù)責(zé)實際數(shù)據(jù)的存儲和讀寫。

  同時為了考慮容災(zāi),!NameServer采用了HA結(jié)構(gòu),即兩臺機(jī)器互為熱備,同時運行,一臺為主,一臺為備,主機(jī)綁定到對外vip,提供服務(wù);當(dāng)主機(jī)器宕機(jī)后,迅速將vip綁定至備份!NameServer,將其切換為主機(jī),對外提供服務(wù)。圖中的HeartAgent就完成了此功能。

  TFS的塊大小可以通過配置項來決定,通常使用的塊大小為64M。TFS的設(shè)計目標(biāo)是海量小文件的存儲,所以每個塊中會存儲許多不同的小文件。!DataServer進(jìn)程會給Block中的每個文件分配一個ID(File ID,該ID在每個Block中唯一),并將每個文件在Block中的信息存放在和Block對應(yīng)的Index文件中。這個Index文件一般都會全部load在內(nèi)存,除非出現(xiàn)!DataServer服務(wù)器內(nèi)存和集群中所存放文件平均大小不匹配的情況。

  另外,還可以部署一個對等的TFS集群,作為當(dāng)前集群的輔集群。輔集群不提供來自應(yīng)用的寫入,只接受來自主集群的寫入。當(dāng)前主集群的每個數(shù)據(jù)變更操作都會重放至輔集群。輔集群也可以提供對外的讀,并且在主集群出現(xiàn)故障的時候,可以接管主集群的工作。

  平滑擴(kuò)容

  原有TFS集群運行一定時間后,集群容量不足,此時需要對TFS集群擴(kuò)容。由于DataServer與NameServer之間使用心跳機(jī)制通信,如果系統(tǒng)擴(kuò)容,只需要將相應(yīng)數(shù)量的新!DataServer服務(wù)器部署好應(yīng)用程序后啟動即可。這些!DataServer服務(wù)器會向!NameServer進(jìn)行心跳匯報。!NameServer會根據(jù)!DataServer容量的比率和!DataServer的負(fù)載決定新數(shù)據(jù)寫往哪臺!DataServer的服務(wù)器。根據(jù)寫入策略,容量較小,負(fù)載較輕的服務(wù)器新數(shù)據(jù)寫入的概率會比較高。同時,在集群負(fù)載比較輕的時候,!NameServer會對!DataServer上的Block進(jìn)行均衡,使所有!DataServer的容量盡早達(dá)到均衡。

  進(jìn)行均衡計劃時,首先計算每臺機(jī)器應(yīng)擁有的blocks平均數(shù)量,然后將機(jī)器劃分為兩堆,一堆是超過平均數(shù)量的,作為移動源;一類是低于平均數(shù)量的,作為移動目的。

  移動目的的選擇:首先一個block的移動的源和目的,應(yīng)該保持在同一網(wǎng)段內(nèi),也就是要與另外的block不同網(wǎng)段;另外,在作為目的的一定機(jī)器內(nèi),優(yōu)先選擇同機(jī)器的源到目的之間移動,也就是同臺!DataServer服務(wù)器中的不同!DataServer進(jìn)程。

  當(dāng)有服務(wù)器故障或者下線退出時(單個集群內(nèi)的不同網(wǎng)段機(jī)器不能同時退出),不影響TFS的服務(wù)。此時!NameServer會檢測到備份數(shù)減少的Block,對這些Block重新進(jìn)行數(shù)據(jù)復(fù)制。

  在創(chuàng)建復(fù)制計劃時,一次要復(fù)制多個block, 每個block的復(fù)制源和目的都要盡可能的不同,并且保證每個block在不同的子網(wǎng)段內(nèi)。因此采用輪換選擇(roundrobin)算法,并結(jié)合加權(quán)平均。

  由于DataServer之間的通信是主要發(fā)生在數(shù)據(jù)寫入轉(zhuǎn)發(fā)的時候和數(shù)據(jù)復(fù)制的時候,集群擴(kuò)容基本沒有影響。假設(shè)一個Block為64M,數(shù)量級為1PB。那么NameServer上會有 1 * 1024 * 1024 * 1024 / 64 = 16.7M個block。假設(shè)每個Block的元數(shù)據(jù)大小為0.1K,則占用內(nèi)存不到2G。

  存儲機(jī)制

  在TFS中,將大量的小文件(實際用戶文件)合并成為一個大文件,這個大文件稱為塊(Block)。TFS以Block的方式組織文件的存儲。每一個Block在整個集群內(nèi)擁有唯一的編號,這個編號是由NameServer進(jìn)行分配的,而DataServer上實際存儲了該Block。在!NameServer節(jié)點中存儲了所有的Block的信息,一個Block存儲于多個!DataServer中以保證數(shù)據(jù)的冗余。對于數(shù)據(jù)讀寫請求,均先由!NameServer選擇合適的!DataServer節(jié)點返回給客戶端,再在對應(yīng)的!DataServer節(jié)點上進(jìn)行數(shù)據(jù)操作。!NameServer需要維護(hù)Block信息列表,以及Block與!DataServer之間的映射關(guān)系,其存儲的元數(shù)據(jù)結(jié)構(gòu)如下:

tfs-3-2

  在!DataServer節(jié)點上,在掛載目錄上會有很多物理塊,物理塊以文件的形式存在磁盤上,并在!DataServer部署前預(yù)先分配,以保證后續(xù)的訪問速度和減少碎片產(chǎn)生。為了滿足這個特性,!DataServer現(xiàn)一般在EXT4文件系統(tǒng)上運行。物理塊分為主塊和擴(kuò)展塊,一般主塊的大小會遠(yuǎn)大于擴(kuò)展塊,使用擴(kuò)展塊是為了滿足文件更新操作時文件大小的變化。每個Block在文件系統(tǒng)上以“主塊+擴(kuò)展塊”的方式存儲。每一個Block可能對應(yīng)于多個物理塊,其中包括一個主塊,多個擴(kuò)展塊。

  在DataServer端,每個Block可能會有多個實際的物理文件組成:一個主Physical Block文件,N個擴(kuò)展Physical Block文件和一個與該Block對應(yīng)的索引文件。Block中的每個小文件會用一個block內(nèi)唯一的fileid來標(biāo)識。!DataServer會在啟動的時候把自身所擁有的Block和對應(yīng)的Index加載進(jìn)來。

  容錯機(jī)制

  集群容錯。TFS可以配置主輔集群,一般主輔集群會存放在兩個不同的機(jī)房。主集群提供所有功能,輔集群只提供讀。主集群會把所有操作重放到輔集群。這樣既提供了負(fù)載均衡,又可以在主集群機(jī)房出現(xiàn)異常的情況不會中斷服務(wù)或者丟失數(shù)據(jù)。

  !NameServer容錯。Namserver主要管理了!DataServer和Block之間的關(guān)系。如每個!DataServer擁有哪些Block,每個Block存放在哪些!DataServer上等。同時,!NameServer采用了HA結(jié)構(gòu),一主一備,主NameServer上的操作會重放至備NameServer。如果主NameServer出現(xiàn)問題,可以實時切換到備NameServer。另外!NameServer和!DataServer之間也會有定時的heartbeat,!DataServer會把自己擁有的Block發(fā)送給!NameServer。!NameServer會根據(jù)這些信息重建!DataServer和Block的關(guān)系。

  !DataServer容錯。TFS采用Block存儲多份的方式來實現(xiàn)!DataServer的容錯。每一個Block會在TFS中存在多份,一般為3份,并且分布在不同網(wǎng)段的不同!DataServer上。對于每一個寫入請求,必須在所有的Block寫入成功才算成功。當(dāng)出現(xiàn)磁盤損壞!DataServer宕機(jī)的時候,TFS啟動復(fù)制流程,把備份數(shù)未達(dá)到最小備份數(shù)的Block盡快復(fù)制到其他DataServer上去。 TFS對每一個文件會記錄校驗crc,當(dāng)客戶端發(fā)現(xiàn)crc和文件內(nèi)容不匹配時,會自動切換到一個好的block上讀取。此后客戶端將會實現(xiàn)自動修復(fù)單個文件損壞的情況。

  并發(fā)機(jī)制

  對于同一個文件來說,多個用戶可以并發(fā)讀。現(xiàn)有TFS并不支持并發(fā)寫一個文件。一個文件只會有一個用戶在寫。這在TFS的設(shè)計里面對應(yīng)著是一個block同時只能有一個寫或者更新操作。

  TFS文件名的結(jié)構(gòu)

  TFS的文件名由塊號和文件號通過某種對應(yīng)關(guān)系組成,最大長度為18字節(jié)。文件名固定以T開始,第二字節(jié)為該集群的編號(可以在配置項中指定,取值范圍 1~9)。余下的字節(jié)由Block ID和File ID通過一定的編碼方式得到。文件名由客戶端程序進(jìn)行編碼和解碼,它映射方式如下圖:

tfs-3-3

  TFS客戶程序在讀文件的時候通過將文件名轉(zhuǎn)換為BlockID和FileID信息,然后可以在!NameServer取得該塊所在!DataServer信息(如果客戶端有該Block與!DataServere的緩存,則直接從緩存中取),然后與!DataServer進(jìn)行讀取操作。

  四、圖片服務(wù)器部署與緩存

  下圖為淘寶網(wǎng)整體系統(tǒng)的拓?fù)鋱D結(jié)構(gòu)。整個系統(tǒng)就像一個龐大的服務(wù)器一樣,有處理單元、緩存單元和存儲單元。前面已經(jīng)詳細(xì)介紹過了后臺的TFS集群文件存儲系統(tǒng),在TFS前端,還部署著200多臺圖片文件服務(wù)器,用Apache實現(xiàn),用于生成縮略圖的運算。

  根據(jù)淘寶網(wǎng)的縮略圖生成規(guī)則,縮略圖都是實時生成的。這樣做的好處有兩點:一是為了避免后端圖片服務(wù)器存儲的圖片數(shù)量過多,大大節(jié)約后臺存儲空間的需求,淘寶網(wǎng)計算,采用實時生成縮略圖的模式比提前全部生成好縮略圖的模式節(jié)約90%的存儲空間,也就是說,存儲空間只需要后一種模式的10%;二是,縮略圖可根據(jù)需要實時生成出來,更為靈活。

tfs-4-4

  淘寶網(wǎng)圖片存儲與處理系統(tǒng)全局拓?fù)洌瑘D片服務(wù)器前端還有一級和二級緩存服務(wù)器,盡量讓圖片在緩存中命中,最大程度的避免圖片熱點,實際上后端到達(dá)TFS的流量已經(jīng)非常離散和平均。

  圖片文件服務(wù)器的前端則是一級緩存和二級緩存,前面還有全局負(fù)載均衡的設(shè)置,解決圖片的訪問熱點問題。圖片的訪問熱點一定存在,重要的是,讓圖片盡量在緩存中命中。目前淘寶網(wǎng)在各個運營商的中心點設(shè)有二級緩存,整體系統(tǒng)中心店設(shè)有一級緩存,加上全局負(fù)載均衡,傳遞到后端TFS的流量就已經(jīng)非常均衡和分散了,對前端的響應(yīng)性能也大大提高。

  根據(jù)淘寶的緩存策略,大部分圖片都盡量在緩存中命中,如果緩存中無法命中,則會在本地服務(wù)器上查找是否存有原圖,并根據(jù)原圖生成縮略圖,如果都沒有命中,則會考慮去后臺TFS集群文件存儲系統(tǒng)上調(diào)取,因此,最終反饋到TFS集群文件存儲系統(tǒng)上的流量已經(jīng)被大大優(yōu)化了。

  淘寶網(wǎng)將圖片處理與緩存編寫成基于Nginx的模塊(Nginx-tfs),淘寶認(rèn)為Nginx是目前性能最高的HTTP服務(wù)器(用戶空間),代碼清晰,模塊化非常好。淘寶使用GraphicsMagick進(jìn)行圖片處理,采用了面向小對象的緩存文件系統(tǒng),前端有LVS+Haproxy將原圖和其所有縮略圖請求都調(diào)度到同一臺Image Server。

  文件定位上,內(nèi)存用hash算法做索引,最多一次讀盤。寫盤方式則采用Append方式寫,并采用了淘汰策略FIFO,主要考慮降低硬盤的寫操作,沒有必要進(jìn)一步提高Cache命中率,因為Image Server和TFS在同一個數(shù)據(jù)中心,讀盤效率還是非常高的。

it知識庫淘寶圖片服務(wù)的學(xué)習(xí),轉(zhuǎn)載需保留來源!

鄭重聲明:本文版權(quán)歸原作者所有,轉(zhuǎn)載文章僅為傳播更多信息之目的,如作者信息標(biāo)記有誤,請第一時間聯(lián)系我們修改或刪除,多謝。

主站蜘蛛池模板: 国产一级免费在线观看 | 国产亚洲精品久久久久动 | 久久精品视频网站 | 二区三区视频 | 精品美女久久久 | 亚洲毛片在线观看 | 午夜免费网站 | 精品一区二区av | 国产精品1区2区 | 99精品99久久久久久宅男 | 欧美激情视频一区二区三区在线播放 | 青青草综合网 | 久久精品一区二区 | 国产欧美日韩在线 | 国产亚洲网站 | 国产亚洲精品精品国产亚洲综合 | 视频在线观看一区 | 日韩在线观看 | 日本三级在线网站 | 日韩在线不卡视频 | 午夜激情国产 | 中文字幕视频免费 | 亚洲网站在线观看 | 给我免费的视频在线观看 | 国产99久久| 超碰超碰 | 亚洲夜夜爽 | 国产精品伦理一区二区三区 | 国产精品免费一区二区三区 | 亚洲精品一区二区三区蜜桃久 | 亚洲精品黄色 | 欧美视频 | 狠狠色狠狠色综合日日92 | 韩日一区二区三区 | 亚洲成人免费观看 | 一区二区三区在线 | 一区二区三区精品视频 | 东方伊人免费在线观看 | 亚洲精品久久 | 久久一区| 日本天天操 |