版權(quán)說明:本文檔由用戶提供并上傳,收益歸屬內(nèi)容提供方,若內(nèi)容存在侵權(quán),請進(jìn)行舉報或認(rèn)領(lǐng)
文檔簡介
1、的十個學(xué)習(xí)步驟簡介 在需求、數(shù)據(jù)和軟件愈來愈碎片化的趨勢下,集裝箱(如Docker Container)包裝了微服務(wù)(Micro-Service)成為主流。這些微服務(wù)在運行時間(Run-time)經(jīng)常需要動態(tài)組合成為各式各樣的App來支撐企業(yè)多變的業(yè)務(wù)流程。簡介 這種集裝箱式架構(gòu)設(shè)計,隨著近年來Docker集裝箱技術(shù)的流行,可說紅透半天邊,而且勢如破竹、蔚為風(fēng)潮,正在強力改變終端與云平臺的整體設(shè)計理念和方法。簡介 本課程分為兩個階段,第一階段以個人的學(xué)習(xí)路徑為主軸,依循十個學(xué)習(xí)步驟,循序漸進(jìn)建立扎實的根基。第二階段,則依據(jù)企業(yè)軟件開發(fā)流程里的先后環(huán)節(jié)來作教學(xué)。闡述各環(huán)節(jié)的思想、模式、技術(shù)和實踐
2、要點。并以的端云一體化架構(gòu)設(shè)計為例,闡述企業(yè)邏輯分析、插件和集裝箱設(shè)計、實際開發(fā)愈部屬方法等?;谲浻舱嫌^點軟硬整合觀點碎片化潮流下的架構(gòu)新思維- 變化、碎片與集裝箱Part-1高煥堂的著作基于軟硬整合觀點1.1 碎片(Fragment) 來自何處呢?碎片來自變化(Change)碎片或(表現(xiàn)為軟件的) 插件(Plug-in)的背后 都是變(化)沙灘沙灘沙灘變化變化變化變化面對環(huán)境變化分離出碎片!變化碎片碎片變化碎片變化碎片分離出變化碎片變化接口碎片接口變化接口變化碎片碎片變化接口碎片(變化)接口碎片(變化)接口碎片(變化)接口集裝箱接口內(nèi)部(變化)集裝箱接口(序)內(nèi)部(變化)接口(序)沙灘沙
3、灘 沙灘 (碎片) 沙灘(碎片)沙灘沙灘沙灘沙灘環(huán)境環(huán)境變因變因( (道路道路) )沙灘環(huán)境環(huán)境變因變因( (道路道路) )系統(tǒng)系統(tǒng)碎片碎片( (輪胎輪胎) )沙灘環(huán)境環(huán)境變因變因( (道路道路) )系統(tǒng)系統(tǒng)碎片碎片( (輪胎輪胎) )沙灘其他其他變因變因? ?其他其他碎片碎片? ?請您找找看!基于軟硬整合觀點1.2 軟件碎片(插件) 來自何處呢?插件(軟件碎片)來自變化(Change)碎片或插件(Plug-in)的 背后都是變(化)以SurfaceView + Camera(攝像頭像頭)為例 軟件SurfaceView代表手機屏幕 軟件Camera代表攝像頭SurfaceViewCamera
4、以SurfaceView + Camera(攝像頭像頭)為例 Camera攝像頭取得視像,然后將視像傳遞到SurfaceView屏幕上呈現(xiàn)出來。SurfaceViewCamera(視像)WebCameraSurfaceViewCamera(視像)WebCameraCameraMP4視頻PlayerSurfaceView變化SurfaceView變化變化SurfaceView變化變化變化SurfaceView變化SurfaceView面對環(huán)境變化分離出碎片!變化碎片-xSurfaceView變化SurfaceView碎片-x碎片-ySurfaceView變化碎片-x碎片-y碎片-zSurface
5、View變化碎片-x碎片-yApp-zSurfaceView變化App-y變化App-z碎片-xSurfaceView變化App-xApp-y變化App-z變化碎片SurfaceView變化App-z接口接口App-z變化接口(插件)變化變化EIT變化(01):屏幕顯示3D繪圖EIT變化變化(01):屏幕顯示3D繪圖變化(02):屏幕顯示2D繪圖變化EIT變化(02):屏幕顯示2D繪圖變化(03):屏幕顯示MP4視頻變化EIT1T2變化(03):屏幕顯示MP4視頻沙灘其他其他其他其他碎片碎片? ?請您找找看!變化例如: 將醫(yī)院加護(hù)(重癥)病房的儀器聯(lián)結(jié)到護(hù)士站的Android TV,讓患者的病
6、情及時傳送到TV上。 同時,TV也主動再將訊息及時傳送到醫(yī)生的手機或Pad上,讓醫(yī)生能進(jìn)行實時性的決策,提供更高質(zhì)量的服務(wù)。 變化基于軟硬整合觀點1.3 軟件碎片的組合 試想,在智慧城市里,有兩個系統(tǒng)模塊: 智能家庭和交通車聯(lián)網(wǎng)。 兩者之間通過網(wǎng)絡(luò)通信機制來互通。智慧家庭交通車聯(lián)網(wǎng)通信協(xié)議智慧家庭交通車聯(lián)網(wǎng)通信協(xié)議通信協(xié)議智慧家庭交通車聯(lián)網(wǎng)先搞定通信協(xié)議 傳統(tǒng)方法:兩個團(tuán)隊先約定,商討一個雙方都接受的通信協(xié)議。 然后,雙方就依據(jù)這項通信協(xié)議,分別開發(fā)各自的模塊。智慧家庭交通車聯(lián)網(wǎng)通信協(xié)議 不良結(jié)果:各模塊都依賴于(Depend on)通信協(xié)議,導(dǎo)致兩個模塊也緊密相依了。 三個東西緊密相連在一起
7、的。一旦通信協(xié)議改變了,兩邊的模塊都必須改變。 產(chǎn)生的牽一發(fā)而動全身的漣漪效應(yīng)。智慧家庭交通車聯(lián)網(wǎng)變化交通車聯(lián)網(wǎng)通信協(xié)議 父類子類子類變化碎片智慧家庭交通車聯(lián)網(wǎng)通信協(xié)議 變化智慧家庭EI碎片T智慧家庭交通車聯(lián)網(wǎng)變化通信協(xié)議父類子類子類智慧家庭變化碎片交通車聯(lián)網(wǎng)通信協(xié)議智慧家庭變化碎片交通車聯(lián)網(wǎng)ET通信協(xié)議I交通車聯(lián)網(wǎng)通信協(xié)議父類子類子類 父類子類子類智慧家庭變化變化碎片碎片交通車聯(lián)網(wǎng)通信協(xié)議父類子類子類 父類子類子類智慧家庭變化碎片碎片交通車聯(lián)網(wǎng)通信協(xié)議E&IT E&I T智慧家庭碎片的碎片的組合 碎片的組合 變化碎片的組合 E&I變化T碎片的組合 變化E&IT
8、變化TE&IE&I變化變化變化碎片的組合 TTTE&IE&I變化變化變化碎片的組合 TTT基于軟硬整合觀點1.4 軟件的序中有亂 (集裝箱特性)變化ITxITy變化IT1T2變化亂(變化)I(序)TI(序)亂TI(序)亂TI(序)亂T亂序中有亂 外形簡單 內(nèi)容多變 無限組合集裝箱特性:例如:原子 化學(xué)元素由原子構(gòu)成道爾頓例如:原子(摘自百度文庫摘自百度文庫) 不同元素原子的性質(zhì) 各不相同道爾頓(摘自百度文庫摘自百度文庫)道爾頓序中有亂序中有亂 不同元素化合時,原子 以簡單整數(shù)比結(jié)合。道爾頓道爾頓水分子序中有亂道爾頓序中有亂序中有亂Q&A基于軟硬整合觀點軟
9、硬整合觀點Part-2的趨勢、技術(shù)與架構(gòu)高煥堂的著作Docker: Docker: 碼頭工人碼頭工人 ( (集裝箱搬運工集裝箱搬運工) )基于軟硬整合觀點Docker集裝箱 自從2014年以來,Docker 的集裝箱(container)技術(shù),可說是紅透半天邊,而且勢如破竹、蔚為風(fēng)潮,正在強力改變云(cloud)服務(wù)的世界。 這跟半世紀(jì)前,海上船運業(yè)的集裝箱風(fēng)潮,對整個產(chǎn)業(yè)的革命性改變,其力道來源和產(chǎn)生經(jīng)濟(jì)效益,可說具有異曲同工之妙。 為了配合集裝箱化運輸時代的來臨,海運事業(yè)的整體運作型態(tài)也產(chǎn)生了重大的轉(zhuǎn)變,無論在海上運送、碼頭作業(yè)以及陸運轉(zhuǎn)接上,都有革命性的改變。 陸上拖車運輸業(yè)應(yīng)時而興,扮
10、演極為重要的角色,以集裝箱拖車配合集裝箱船運輸,具有簡化包裝、防止竊盜、加速貨物搬運及便利關(guān)務(wù)檢驗等優(yōu)點,使集裝箱運輸作業(yè)更加靈活。 集裝箱帶來的商業(yè)利益,其直接受惠是運輸業(yè)者,并不是貨物制造者。 所以集裝箱內(nèi)部的包裝業(yè),如紙盒制造業(yè)、打包工人等;拖車汽車廠、拖車行、拖車司機;還有造船廠、海運公司、碼頭工人等都會迅速蓬勃發(fā)展起來。 將之對應(yīng)到Docker風(fēng)潮,可知道Docker集裝箱的效益在于:讓所有云服務(wù)都有一致的操作(operation)界面,包括部署、管理等方式。 Docker集裝箱帶來的商業(yè)利益,直接受惠是軟件管理者或稱維運者(operator),例如軟件測試工具業(yè)者、測試人員等。 在
11、這新世代里,除了拿Docker集裝箱來打包微服務(wù)(micro-service)來滿足需求碎片之外。我們還要以廣大的視野、創(chuàng)新的思維,將碎片組合出各式各樣、氣象萬千的商業(yè)服務(wù)。 就像飛機設(shè)計師一樣,把一群各自的模塊(如輪胎、引擎、機翼、油箱等),以創(chuàng)新模式將它們組合起來,竟然整體就能飛上天空了。 在許多革命性轉(zhuǎn)折里,經(jīng)常出現(xiàn)集裝箱的身影;它就像幸運草一般,總是帶來許多幸福和財運。 現(xiàn)在Docker風(fēng)起云涌,再現(xiàn)集裝箱身影,如果開放視野、大力支持它,持續(xù)發(fā)揮它的潛能和力量,則幸運草就會出現(xiàn)在我們身旁了?;谲浻舱嫌^點國王的皮鞋 與Docker集裝箱 古代有一位國王在它的國境里視察,因為路面崎嶇不
12、平,還有很多碎石頭,刺得國王的腳又痛又麻。(摘自百度文庫) 回到了王宮后,他下了一道命令,要將國內(nèi)所有的道路都鋪上一層牛皮。讓他自己和全國的人走路不再受刺痛之苦。 然而,即便殺盡國內(nèi)所有的牛,也湊不到足夠的牛皮來鋪路,而且花費昂貴。 這時,一個仆人向國王建言:可以用牛皮將腳包起來,大王的腳就不會忍受痛苦了。 國王聽道而頓悟了,便收回命令,采納了建議,于是,皮鞋就這樣發(fā)明了出來了。(摘自百度文庫) 從上述皮鞋故事的比喻,可知道傳統(tǒng)的虛擬化(virtualization)技術(shù)就相當(dāng)于在各道路(實體機器)上鋪一層牛皮(VM, 虛擬機),然后讓國王的腳(App)在牛皮(VM)上走路(執(zhí)行)。 傳統(tǒng)上云
13、平臺采取虛擬化手段來滿足用戶個別的資源需求分配,以及確保其可用性和隔離性。 然而無論是KVM還是Xen等Guest OS都很浪費資源又難于管理, 都不如Docker集裝箱(皮鞋)來的更加靈活、快速和節(jié)省資源。傳統(tǒng)鋪牛皮(虛擬層)Docker皮鞋(集裝箱) Docker的焦點在于而不是像傳統(tǒng)虛擬化思維的焦點在于讓國王腳疼的。 為什么Docker集裝箱能提升App的執(zhí)行效能呢? 因為Docker屬于OS層級的虛擬化。 在傳統(tǒng)hypervisor虛擬化技術(shù)哩,VM透過一個中介層,間接執(zhí)行于Host OS上。 而Docker集裝箱(也是一個小VM)則執(zhí)行于Host-OS的用戶空間,直接執(zhí)行于Host
14、OS上。所以效率提高了。 Docker讓開發(fā)者可以打包他們的應(yīng)用以及依賴包到一個可移植的容器中,然后發(fā)布到主流的 Linux 機器上。 這些分布式應(yīng)用程序具可攜特性,由各個不同但可互通的Docker容器所組成,具備動態(tài)的生命周期,而且不論是在筆電或是云端上皆可執(zhí)行?;谲浻舱嫌^點Docker集裝箱的基礎(chǔ)- LXC 用戶空間Linux 內(nèi)核 用戶空間Linux 內(nèi)核進(jìn)程進(jìn)程 用戶空間Linux 內(nèi)核進(jìn)程LXCnamespace LXC在目前的進(jìn)程管理框架上增加資源的管理和隔離機制。 LXC包集成這些linux內(nèi)核機制提供一個用戶空間容器對象, 即是針對某一應(yīng)用提供資源隔離和控制的輕量虛擬系統(tǒng)。
15、 Docker對container的使用基本是建立唉LXC基礎(chǔ)之上的,然而LXC存在的問題是難以移動 - 難以通過標(biāo)準(zhǔn)化的模板制作、重建、復(fù)制和移動 container。 LXC仰賴namespace來實現(xiàn)隔離性。讓每個容器都有自己的命名空間,確保不同容器之間不會相互影響,讓每個容器成為擁有自己進(jìn)程和網(wǎng)絡(luò)空間的虛擬環(huán)境,都成為一個獨立運行的單位。 此外,LXC藉由內(nèi)核的cgroup來對各個容器(的進(jìn)程)使用的系統(tǒng)資源做嚴(yán)格的限制。 例如可建立一個cgroup來限制某個(容器)進(jìn)程對CPU的占用率不能超過50%。而Docker則在LXC基礎(chǔ)上,加上Docker 境像管理方式,就成為Docker集
16、裝箱了。 LXCLinux 內(nèi)核namespace Docker集裝箱Linux 內(nèi)核namespaceApp ImageBins/Libs Image Docker集裝箱Linux 內(nèi)核namespaceDockerImage Docker借鑒了虛擬機(VM)的模式,讓用戶像管理VM一樣的管理他們的集裝箱鏡像?;谲浻舱嫌^點 簡而言之,LXC基于namespace的隔離機制和cgroup的資源控制功能,來管理容器。 隔離性 LXC運行于一個用戶空間進(jìn)程里,在既有的進(jìn)程管理架構(gòu)上,增添了資源管理和隔離機制。 所以LXC是針對某一App提供資源隔離和控制的輕量型虛擬系統(tǒng)。LXC仰賴namesp
17、ace來實現(xiàn)隔離性。 隔離性 讓每個容器都有自己的命名空間,比如pid/net/ipc/mnt/uts等命名空間,以及不同的 user id和group id。 有了namespace從進(jìn)程、網(wǎng)絡(luò)、IPC、檔系統(tǒng)、UTS和用戶角度進(jìn)行隔離,我們就能e確保在不同容器之間不會相互影響,每個容器都成為一個獨立運行的單位。 隔離性 從容器里而觀之,它是一個完整的Linux的世界。在整個平臺而觀之,容器運行于一個普通的用戶空間進(jìn)程,namespace創(chuàng)造了這種映射和隔離效果,云平臺承載著一個個容器,就如同造物者創(chuàng)造了許多世外桃源一般。 資源控制 LXC仰賴cgroup來限制各個進(jìn)程對系統(tǒng)資源的使用能力。
18、通常會創(chuàng)建多個cgroup,形成一個樹狀結(jié)構(gòu)(hierarchy)。 然后subsystem會關(guān)聯(lián)連接到這個樹狀結(jié)構(gòu)上。一個subsystem代表著一項資源,例如CPU、Memory或 I/O等。/cpu_mem_cg/cg1/cg2/cg3Cgroup Hierarchymemory CPUSubsystems cgroup組織形式是樹狀結(jié)構(gòu)的,包含一個父cgroup和三個子cgroup,其關(guān)聯(lián)到兩個subsystem(即CPU和memory)。 這subsystem是經(jīng)由cgroup來與task(典型的就是進(jìn)程)連結(jié),以便實現(xiàn)對task的資源管理與控制。 一個task可加入到樹狀結(jié)構(gòu)上的一
19、個cgroup,由此cgroup來限制該task的資源使用。 一個cgroup可以連結(jié)到多個task。而一個task也可連結(jié)到多個cgroup。 例如,針對一個容器進(jìn)程,先創(chuàng)建名為“cpuset”的cgroup,然后將一個mytask的PID寫入/sys/fs/cgroup/cpuset/tasks文件里,就把這個mytask加入到該cgroup了。/a_cg/cg-1/cg-N/b_cg/ioset/cg_y/task_1hierarchyhierarchy/mytask/task_N I/O CPU/cpuset 這個mytask連結(jié)到兩個cgroup:即“cpuset”和“ioset”,
20、各連結(jié)到一個subsystem(即CPU和I/O資源)?;谲浻舱嫌^點Docker集裝箱 和它的鏡像 制作Docker鏡像文件的途徑有二:1)從現(xiàn)有集裝箱生成,或從Dockerfile生成。 亦即,集裝箱是一個基于Docker鏡像創(chuàng)建、包含為了運行某一特定程序的所有需要的OS、軟件、配置文件和數(shù)據(jù),是一個可移植的運行單元。 在Host機器來看,它只是一個簡單的用戶進(jìn)程而已。”舉例:在Ubuntu機器上建立Docker集裝箱首先安裝Docker $ sudo apt-get install docker.io安裝好了,就可啟動Docker服務(wù) $ sudo service docker.io
21、restart接著載入一個ubuntu(的Docker)鏡像 $ sudo docker pull ubuntu (這創(chuàng)建一個集裝箱,內(nèi)含ubuntu鏡像) ubuntu imageDocker集裝箱Linux 內(nèi)核 執(zhí)行集裝箱內(nèi)Ubuntu交互式命令(如shell) $sudo dockerrunubuntu /bin/echoHello! Hello! 在此集裝箱里,增添一個example鏡像 $sudo docker run ubuntu apt-get install -y example ubuntu imageexample imageDocker集裝箱Linux 內(nèi)核 取得此集裝
22、箱的ID $sudo docker ps l (得到ID值,如:6966a3b96484) 從這個集裝箱產(chǎn)生出它的鏡像 $sudo docker commit 6982 mis/exam mis/exam鏡像ubuntu imageexample imageLinux 內(nèi)核 載入剛才產(chǎn)生的鏡像 $sudo docker pull mis/exam (這創(chuàng)建一個新集裝箱,內(nèi)含mis/exam鏡像) 執(zhí)行集裝箱內(nèi)mis/exam鏡像 $sudo dockerrunmis/exam echo Happy! Happy! 集裝箱 集裝箱ubuntu imageexample imagemis/exam
23、 imageLinux 內(nèi)核 執(zhí)行集裝箱內(nèi)mis/example鏡像 $sudo dockerrunmis/exam echo Happy! Happy!基于軟硬整合觀點Docker園丁 (Docker Runtime) 我們在運輸(ship)或移植一個Docker集裝箱時,就像移植一棵樹一樣, 但是移植樹的種子(seed)到另一個花園(平臺)里,重新打造出一樣的(identical)環(huán)境(花盆)并重新長出一樣的樹。 那么,我們在電腦上,需要有位園丁來打造花盆、準(zhǔn)備資源(如水、泥土)等工作。這位園丁就是:Docker Runtime。它是由三個模塊所組成,包括:Docker Server、Do
24、cker Engine和Docker Daemon三部分。Docker ClientServerRMIEngineDaemonJobHandlerExecDriverNetworkDriverGraphDriver 通常,人們是透過Docker Client來與Docker Server建立通信(兩者是C/S架構(gòu))。 例如,我們可以將docker build命令傳送給Docker Server來依據(jù)指定的dockerfile來創(chuàng)建一個Docker鏡像。 Docker Server接受Docker Client所傳送來的請求,然后轉(zhuǎn)給Docker Engine去轉(zhuǎn)換出一連串的工作(job)來管理
25、集裝箱。 例如,向Docker Registry獲取鏡像、通過GraphDriver執(zhí)行集裝箱鏡像的建立、通過NetworkDriver執(zhí)行容器網(wǎng)絡(luò)環(huán)境的配置、通過ExecDriver執(zhí)行集裝箱內(nèi)部的軟件等?;谲浻舱嫌^點Docker集裝箱集散地 (Docker Hub) Docker公司不僅僅提供上述的Docker園丁來幫你搬運集裝箱,還提供Docker Hub來做為集裝箱的共享平臺。 Docker公司提供的開放平臺,主要包括:Platform = Docker Engine + Docker Hub + APIs + Ecosystem 我們在開發(fā)平臺上,使用Docker引擎來將App打
26、包到集裝箱里,然后透過Docker Hub API來將集裝箱(的鏡像)放到Docker Hub上。 于是,Docker Hub成為一個集裝箱集散地,也就是一個共享的集裝箱平臺。需要時,可從這Hub尋找到集裝箱,并下載到云服務(wù)平臺(如阿里云或Google云)上去運行。 所以,Docker Engine和Docker Hub兩者聯(lián)手,為開發(fā)者和系統(tǒng)管理員設(shè)計出一個易于發(fā)布和運行分布式App的開放性平臺。Q&A基于軟硬整合觀點軟硬整合觀點Part-3(a)的十個學(xué)習(xí)步驟(步驟15)高煥堂的著作第第1 1步:步:學(xué)習(xí)兩種抽象視角學(xué)習(xí)兩種抽象視角第第2 2步:步:關(guān)心下層的變動自由度關(guān)心下層的變
27、動自由度第第3 3步:步:系統(tǒng)架構(gòu)控制力支撐商業(yè)競爭話語權(quán)系統(tǒng)架構(gòu)控制力支撐商業(yè)競爭話語權(quán)第第4 4步:步: 是用戶從簡單中叫出復(fù)雜是用戶從簡單中叫出復(fù)雜 的滿足感的滿足感第第5 5步:步:創(chuàng)意愛上限制,即需求檢驗設(shè)計創(chuàng)意愛上限制,即需求檢驗設(shè)計基于軟硬整軟硬整合觀點合觀點 視角1. 歸納抽象: 從一群的業(yè)務(wù)或系統(tǒng)模塊(Module)中,觀察其相同的部分,然后歸納抽象(分析視角)出來,成為可復(fù)用(Reuse)共同部分。這稱為視角。視角1. 歸納抽象:變與不變分離視角1. 歸納抽象:Credit Card(信用卡)不變部部分視角1. 歸納抽象:抽象類不變部部分具象類-1具象類-2具象類-n除了分
28、析業(yè)務(wù)之外,還要組合創(chuàng)新歸納抽象除了分析業(yè)務(wù)之外,還要組合創(chuàng)新分析師視角除了分析業(yè)務(wù)之外,還要組合創(chuàng)新設(shè)計師視角分析師視角視角2. 組合創(chuàng)新: 引進(jìn)或創(chuàng)造一個新模式(Pattern),將一群模塊組合成一個和諧的整體。這模式是形式(Form),各模塊是內(nèi)容(Content);通稱為視角。視角2. 組合創(chuàng)新: 引進(jìn)或創(chuàng)造一個新模式(Pattern),將一群模塊組合成一個和諧的整體。這模式是形式(Form),各模塊是內(nèi)容(Content);通稱為視角。視角2. 組合創(chuàng)新: 引進(jìn)或創(chuàng)造一個新模式(Pattern),將一群模塊組合成一個和諧的整體。這模式是形式(Form),各模塊是內(nèi)容(Content)
29、;通稱為視角。例如,例如,汽車汽車和和行人行人是兩種個體是兩種個體( (模模塊塊) ),經(jīng)常在路上發(fā)生沖突,導(dǎo)致社,經(jīng)常在路上發(fā)生沖突,導(dǎo)致社會會( (整體整體) )不和諧了。不和諧了。因而創(chuàng)新設(shè)計了一個因而創(chuàng)新設(shè)計了一個新模式:新模式:紅紅綠綠燈燈+ +斑斑馬馬線。成為汽車與行人的接口線。成為汽車與行人的接口(Interface)(Interface),整體就和諧了。,整體就和諧了。例如,一群零組件例如,一群零組件( (如輪胎、引擎、如輪胎、引擎、機翼、機尾、油箱等機翼、機尾、油箱等) )都都 ;但是我想飛。但是我想飛。除了分析業(yè)務(wù)之外,還要組合創(chuàng)新設(shè)計師視角把一群把一群 的模塊的模塊( (
30、如輪胎、引擎、機翼如輪胎、引擎、機翼) ),巧妙地組合起來,竟然巧妙地組合起來,竟然就就 上天。上天。設(shè)計師視角把一群把一群 的模塊的模塊( (如輪胎、引擎、機翼如輪胎、引擎、機翼) ),巧妙地組合起來,竟然巧妙地組合起來,竟然就就 上天。上天。架構(gòu)師的職責(zé)把一群把一群 的模塊的模塊( (如輪胎、引擎、機翼如輪胎、引擎、機翼) ),巧妙地組合起來,竟然巧妙地組合起來,竟然就就 上天。上天。架構(gòu)師的職責(zé)基于軟硬整軟硬整合觀點合觀點除了關(guān)心上層應(yīng)用,還要關(guān)心底層模塊。除了關(guān)心上層應(yīng)用,還要關(guān)心底層模塊。萬里長城設(shè)計師用心于關(guān)外還是關(guān)內(nèi)萬里長城設(shè)計師用心于關(guān)內(nèi)限制塞外保護(hù)關(guān)內(nèi)關(guān)心底層模塊廠商(沒錢就
31、改版, 改版就有錢)。架構(gòu)師用心 于底層重構(gòu)底層接口底層模塊上層模塊底層接口底層模塊上層模塊Server 接口Server模塊f1()OpenGL_CAppp1()SQLiteDBf1()OpenGL_Cp1()SQLiteDBApp代碼Callf1(“init”)Callp1(factor(f1() f1()OpenGL_Cp1()SQLiteDBApp代碼Callf1(“init”)Callp1(factor(f1() f1()和p1()函數(shù)是誰定義的?f1()OpenGL_Cp1()SQLiteDBApp代碼Callf1(“init”)Callp1(factor(f1() f1()是設(shè)計
32、者定義的f1()OpenGL_Cp1()SQLiteDBApp代碼Callf1(“init”)Callp1(factor(f1() 和字眼被寫在App模塊代碼里!f1()OpenGL_Cp1()SQLiteDBApp代碼Callf1(“init”)Callp1(factor(f1() App代碼綁住了接口!代碼必須同步修改f1()p1()代碼必須同步修改App代碼Callf1(“init”)Callp1(factor(f1() f1()p1()代碼必須同步修改App代碼Callf1(“init”)Callp1(factor(f1() f1()p1()修改需x元代碼必須同步修改App代碼Call
33、f1(“init”)Callp1(factor(f1() 修改需y元f1()p1()OpenGL_C變更成本= x + y元App代碼Callf1(“init”)Callp1(factor(f1() 這就是所謂的的漣漪效應(yīng)。例如,Android的Camera模塊Server模塊模塊Client模塊模塊例如Android的3D繪圖抽換Server模塊引擎輪胎接口接口引擎輪胎著名的EITEIT設(shè)計模式 碎片:碎片: 可變可變抽換輪胎抽換輪胎基于軟硬整軟硬整合觀點合觀點 除了結(jié)構(gòu)(設(shè)計自己),還要有策略(設(shè)計別人)。依據(jù)企業(yè)的定位,設(shè)計有利于自己的軟件接口給別人實現(xiàn)。除了結(jié)構(gòu)(設(shè)計自己),還要有策略
34、(設(shè)計別人)。掌握接口,擁有系統(tǒng)控制權(quán),支撐商業(yè)話語權(quán),鞏固地位。除了結(jié)構(gòu)(設(shè)計自己),還要有策略(設(shè)計別人)。 認(rèn)識自己企業(yè)的商業(yè)模式商業(yè)模式,厘清自己企業(yè)在商業(yè)合作策略上能夠(或想要)取得什么話語權(quán)話語權(quán)? 取得接口接口(API)(API)定義權(quán)定義權(quán),掌握系統(tǒng)系統(tǒng)控制點??刂泣c。 強化自己商業(yè)策略的話語權(quán)。Server端廠商的商業(yè)策略? 沒錢就改版, 改版就有錢。Server端廠商的商業(yè)策略? 系統(tǒng)控制權(quán), 支持商業(yè)話語權(quán)Server端廠商的商業(yè)策略? Client/Server架構(gòu) Client/Server架構(gòu)沒錢就改版, 改版就有錢。 Client/Server架構(gòu)掌握掌握強勢接口
35、強勢接口創(chuàng)造創(chuàng)造強龍地位強龍地位Client端廠商的商業(yè)策略? Client端廠商的商業(yè)策略? 隨時抽換ServerServer模塊Client端端廠商廠商掌握掌握接口接口創(chuàng)造創(chuàng)造地位地位AndroidAndroid架構(gòu)師如何支撐GoogleGoogle的商業(yè)策略? ? AndroidAndroid底層是LinuxLinux,它屬于Linux Linux 基金會 AndroidAndroid底層是LinuxLinux,它屬于Linux Linux 基金會 Android Linux 驅(qū)動(Driver) 驅(qū)動LinuxGPL開源協(xié)議擺在擺在LinuxLinux內(nèi)核里內(nèi)核里( (硬件廠商硬件廠商
36、) )開源之后,我的開源之后,我的硬件創(chuàng)新就曝光了硬件創(chuàng)新就曝光了! !( (硬件廠商硬件廠商) ) 驅(qū)動Linux還可以擺在哪里呢還可以擺在哪里呢? ?( (硬件廠商硬件廠商) ) 驅(qū)動Linux設(shè)計框架,定義接口,拉攏硬件廠,架空Linux Linux 基金會 Android Linux 驅(qū)動(Driver)設(shè)計HALHAL框架 Android Linux 驅(qū)動(Driver)HAL HAL的設(shè)計吸引硬件廠商,削弱Linux對硬件廠商的約束力,架空Linux基金會。 提高Google的商業(yè)話語權(quán)。基于軟硬整軟硬整合觀點合觀點 除了加法設(shè)計, 還要先減法設(shè)計。除了加法設(shè)計, 還要先減法設(shè)計。
37、好玩好摸好抱除了加法設(shè)計, 還要先減法設(shè)計。好玩好摸好抱除了加法設(shè)計, 還要先減法設(shè)計。 設(shè)計就是從復(fù)雜中找出簡單的過程。設(shè)計就是從復(fù)雜中找出簡單的過程。 讓開發(fā)者從簡單中反過來掌握復(fù)雜。讓開發(fā)者從簡單中反過來掌握復(fù)雜。 讓用戶能從簡單中叫出復(fù)雜,并獲得其讓用戶能從簡單中叫出復(fù)雜,并獲得其中的滿足感。中的滿足感。 減法設(shè)計思維,古代的容易是包容改變的意思,并非舍棄改變之意。如此,化繁為簡,提升人們掌握復(fù)雜的能力。 後來,許多人喜歡抽象(Abstraction),抽出萬變不離其宗的不變,來掌握簡單。這就違背了容易的標(biāo)的了。蘋果很擅長蘋果很擅長減法設(shè)計減法設(shè)計 舉例(一) :2000年代初期,So
38、ny隨身聽是蘋果公司的競品之一。隨身聽(競品)如何刪除刪除呢?(減法設(shè)計) 舉例(一) :2000年代初期,Sony隨身聽是蘋果公司的競品之一。 iPod 減法設(shè)計減法設(shè)計 舉例(一) :2000年代初期,Sony隨身聽是蘋果公司的競品之一。 舉例(二) :之后,黑梅手機是蘋果公司的競品之一。黑梅手機 舉例(二) :之后,黑梅手機是蘋果公司的競品之一。如何減法設(shè)計呢?黑梅手機 舉例(二) :之后,黑梅手機是蘋果公司的競品之一。減法設(shè)計減法設(shè)計iPhone手機 舉例(三) :還有,微軟平板也是蘋果公司的競品之一。微軟平板 舉例(三) :還有,微軟平板也是蘋果公司的競品之一。如何刪除刪除呢?(減法
39、設(shè)計)微軟平板 舉例(三) :還有,微軟平板也是蘋果公司的競品之一。減法設(shè)計減法設(shè)計iPad 基于軟硬整軟硬整合觀點合觀點 除了滿足(外在)需求, 還要追求(內(nèi)心)愿景。需求圍繞設(shè)計需求圍繞設(shè)計除了滿足(外在), 還要追求(內(nèi)心)愿景。 谷歌公司副總谷歌公司副總Marissa MayerMarissa Mayer所提倡的:所提倡的: “創(chuàng)意愛上限制(Creativity loves(Creativity loves Constraint)Constraint)。 她說:她說: 創(chuàng)新來自創(chuàng)新來自愿景與限制的互動愿景與限制的互動 (Innovation is born from the (Inno
40、vation is born from the interactionbetween constraint and vision)interactionbetween constraint and vision)。 限制迫使架構(gòu)師重新審視愿景,從不同觀點切入,限制迫使架構(gòu)師重新審視愿景,從不同觀點切入,尋找新事物;同時也讓其聚精會神、厘清思路;非尋找新事物;同時也讓其聚精會神、厘清思路;非常具有創(chuàng)新性。常具有創(chuàng)新性。愿景限制信用卡(Credit)聯(lián)盟的組織架構(gòu) 愿景限制 銀行不吃虧:沒向銀行拿錢 消費者不吃虧:刷卡與不刷卡,價錢一樣 店家不吃虧:隨然每筆交易收了3%,但每天交易總額提升30%愿
41、景限制= 創(chuàng)新Vision=沒向銀行收錢讓顧客占便宜提高店家收入 心境:不讓任何合作者受傷害(吃虧)。愿景限制 消費者刷卡,延后付款 這利息誰支付?愿景限制 把利息轉(zhuǎn)嫁給有錢人(如貴婦) 19.8%循環(huán)利息Q&A基于軟硬整合觀點軟硬整合觀點Part-3(b)的十個學(xué)習(xí)步驟(步驟610)高煥堂的著作第第6 6步:步: 假設(shè)性思維和假設(shè)性思維和Mapping from visionMapping from vision to reality to reality第第7 7步:步: 清晰而明確表述接口清晰而明確表述接口第第8 8步:步: 盡快對接口進(jìn)行檢驗和測試盡快對接口進(jìn)行檢驗和測試第第9
42、 9步:步: 設(shè)計通用性接口設(shè)計通用性接口第第1010步:步:有效減法設(shè)計,才能開放加法有效減法設(shè)計,才能開放加法基于軟硬整軟硬整合觀點合觀點 除了眺望未來, 還要Look back。(從未來回顧今日)“你不可能在眺望未來時把生活中的每個點連接起來,只有回顧時能才連點成線。所以你必須相信今日所做的會影響你的未來。”蘋果.喬布斯說。 Look back(現(xiàn)實,Reality)Prob. X.許多Manager 都關(guān)注現(xiàn)實問題(現(xiàn)實,Reality)Prob. X.(現(xiàn)實,Reality)Prob. X.(現(xiàn)實,Reality)Prob. X.Look Back(現(xiàn)實,Reality)其它問題Ex
43、. 國王與皮鞋的故事 古代有一位國王在它的國境里視察,因為路面崎嶇不平,還有很多碎石頭,刺得國王的腳又痛又麻。 回到王宮后,他下了一道命令,要將國內(nèi)所有的道路都鋪上一層牛皮。 于是,讓他自己和全國的人走路不再受刺痛之苦 眾大臣聽了國王的話都一籌莫展,知道這很難。即便殺盡國內(nèi)所有的牛,也湊不到足夠的牛皮來鋪路,而且花費昂貴。 這時,一個聰明的仆人向國王建言:可以試著用牛皮將腳包起來,大王的腳就不會忍受痛苦了。國王聽道而采納了建議,于是,皮鞋就這樣發(fā)明了出來了。殺牛、鋪牛皮Prob. X.國王&大臣們 都關(guān)注現(xiàn)實問題殺牛、鋪牛皮Prob. X.Solve Problem X 殺牛、鋪牛皮P
44、rob. X.仆人X is Not Right Problem to solve Look Back(現(xiàn)實,Reality)其它問題VisionMapping from vision to realityVision創(chuàng)新: 皮鞋VisionEx. 紅綠燈與斑馬線Ex. 紅綠燈與斑馬線汽車和行人經(jīng)常在路上發(fā)生沖突、混亂。Reality:沖突混亂Prob. X.Prob. X.VisionVisionMapping from vision to realityVisionProb. Y.Ex. 集裝箱的故事Vision-1Vision-2Vision-3Mapping from vision to
45、 realityMapping from vision to reality序中有亂 Vision:和諧整體Reality:碎片多變 Vision:和諧整體Reality:碎片多變序中有亂Ex. Docker軟件集裝箱 Vision:創(chuàng)新組合Reality:碎片多變Reality:碎片多變 Vision:創(chuàng)新組合 Vision是夢想、假設(shè)出來的想象力比知識更重要 愛因斯坦 Vision是夢想、假設(shè)出來的Reality是現(xiàn)實條件Mapping from vision to reality Vision是夢想、假設(shè)出來的Reality是現(xiàn)實條件Mapping from vision to real
46、ityReality是現(xiàn)實條件Mapping from vision to reality Vision是北極星: 是夢想、不一定可實現(xiàn)基于軟硬整軟硬整合觀點合觀點 愿景現(xiàn)實Mapping from vision to reality 愿景現(xiàn)實 新事物新事物發(fā)現(xiàn)(或想象)了新事物, 還要描述它。先關(guān)注它的 組合接口要有明確的接口定義, 才知道如何整合到整體, 并且和諧(如能飛)依據(jù)接口去 生產(chǎn)與組合Program to interface舉例:Docker + EIT造形一項游戲軟件有多個模塊,打包成為Docker集裝箱。Docker Container攝像頭Docker Container港
47、口3D圖Docker Container無人飛機Docker Container攝像頭Docker Container港口3D圖Docker Container無人飛機在這個游戲里,玩家操控飛機,攜帶攝像頭(Camera)飛越港口上空,游戲畫面會出現(xiàn)攝像頭所拍到的景象。如下圖:(取自千圖網(wǎng))動態(tài)組合動態(tài)組合 首先,來看看如何將和兩個Docker集裝箱組合起來。Docker Container攝像頭Docker Container無人飛機組合組合這如何設(shè)計、 敘述接口呢?心懷EIT造形 此時,EIT造形就浮上心頭,設(shè)計一個EIT集裝箱來組合。Docker Container無人飛機Docker
48、Container攝像頭EIT集裝箱集裝箱 心中當(dāng)然很清楚,這EIT集裝箱里含有一個單純的EIT造形。Docker Container無人飛機Docker Container攝像頭EIT集裝箱集裝箱 一旦能夠組合了兩個,只要變化EIT造形,就能組合三個集裝箱了。瞬間改變EIT集裝箱里的EIT造形,展現(xiàn)出新奇組合。Docker Container無人飛機Docker Container攝像頭EIT集裝箱集裝箱Docker Container港口3D圖舉例:Android 的EIT造形 組合 攝像頭(Camera)拍攝到視像,然后傳遞到顯示屏。 SurfaceView和Camera兩個類控制設(shè)備。
49、集裝箱集裝箱 集裝箱集裝箱 此時,EIT造形就浮上心頭,設(shè)計一個EIT集裝箱來組合。EIT集裝箱集裝箱 心中當(dāng)然很清楚,這EIT集裝箱里含有一個單純的EIT造形。 集裝箱的特性:。 EIT造形可以彈性變化。 這是Android的典型結(jié)構(gòu)。 Continued 基于軟硬整軟硬整合觀點合觀點 愿景現(xiàn)實Mapping from vision to reality 愿景現(xiàn)實Mapping from vision to reality 愿景現(xiàn)實Mapping from vision to reality接口支持組合 愿景現(xiàn)實Mapping from vision to reality接口支持組合檢驗除了
50、設(shè)計接口支持組合, 還要檢驗、接地氣。除了設(shè)計接口支持組合, 還要檢驗、接地氣。接口決定整合接口決定整合開發(fā)前先開發(fā)前先 檢驗接口檢驗接口Docker Container攝像頭Docker Container港口3D圖Docker Container無人飛機設(shè)計接口,先進(jìn)行接口測試,然后才花錢去購買、委托或自行開發(fā)生產(chǎn)。尚未開發(fā)委托開發(fā)攝像頭先做個Mock(贗品),只做I/O,細(xì)節(jié)邏輯還不寫,然后設(shè)計EIT來定義組合接口。MockDocker Container無人飛機EIT集裝箱集裝箱 先檢測Mock能否與整合,才決定是否花錢開發(fā)這種攝像頭。Docker Container無人飛機EIT集裝
51、箱集裝箱攝像頭Mock 隨著系統(tǒng)的擴大,更多模塊的整合,對接口設(shè)計的完整性、未來性等進(jìn)行檢驗。Docker Container無人飛機Mock攝像頭EIT集裝箱集裝箱Mock港口3D圖MockCamera 集裝箱內(nèi)部也能建立Mock來檢驗接口。 Continued 基于軟硬整軟硬整合觀點合觀點除了設(shè)計接口之外, 還要抽象出更通用接口。通用性接口設(shè)計支持 集裝箱一致造形支持一致造形支持 無限組合無限組合 集裝箱里各模塊有各自的對外接口,傷害集裝箱的了。Docker Container無人飛機Docker Container攝像頭Docker ContainerDocker Container港口
52、3D圖I1I2 采用EIT造形,設(shè)計出一致的接口。Docker Container無人飛機Docker Container攝像頭Docker Container港口3D圖I1I2 采用EIT造形,設(shè)計出一致的接口。Docker Container無人飛機Docker Container攝像頭I1Docker Container港口3D圖I2ClientServer通用性接口設(shè)計Is 如何設(shè)計一致的接口?Docker ContainerDocker Container能否能否單一接口呢單一接口呢?有什么妙招呢有什么妙招呢?將多態(tài)將多態(tài)組合進(jìn)去!組合進(jìn)去!多態(tài)結(jié)構(gòu)多態(tài)結(jié)構(gòu)多態(tài)結(jié)構(gòu)多態(tài)結(jié)構(gòu)建立建立繼
53、承關(guān)系繼承關(guān)系特殊性特殊性 接口接口通用性通用性 接口接口特殊性特殊性 接口接口Docker Container通用性通用性 接口接口Docker Container一致化一致化接口設(shè)計接口設(shè)計IGeneralIGeneral Continued 基于軟硬整軟硬整合觀點合觀點集裝箱的特性: 一致造形一致造形 包容包容變變化化 無限組合無限組合集裝箱的特性:序中有亂 一致造形一致造形 包容包容變變化化 無限組合無限組合 一致造形 包容變化 無限組合序中有亂 一致造形 包容變化 無限組合(內(nèi)部)(外部)Docker Container無人飛機Docker Container攝像頭Docker Co
54、ntainer港口3D圖I1I2減法設(shè)計加法設(shè)計 減法設(shè)計減法設(shè)計減法設(shè)計Q&A基于軟硬整合觀點軟硬整合觀點Part-4Android+Docker 的一體化設(shè)計高煥堂的著作基于軟硬整合觀點復(fù)習(xí):序中有亂 - - 集裝箱的內(nèi)容可復(fù)雜多變集裝箱的內(nèi)容可復(fù)雜多變 前言: 談到Docker,許多人會聯(lián)想到集裝箱的可移植性,進(jìn)而聯(lián)想到集裝箱內(nèi)容的不變性,(跨平臺性)。 其實,集裝箱的內(nèi)容是復(fù)雜多變的。變易變易基于軟硬整合觀點企業(yè)邏輯 -Docker-Docker集裝箱適合容納集裝箱適合容納 善變的企業(yè)邏輯善變的企業(yè)邏輯 Docker集裝箱內(nèi)容也是千變?nèi)f化 大家都知道,企業(yè)邏輯(Business Logics)是善變的。 所以把善變的企業(yè)邏輯,加以打包放進(jìn)Docker集裝箱,是有效的作法。基于軟硬整合觀點軟件插件 -用來用來表現(xiàn)表現(xiàn)企企業(yè)邏輯業(yè)邏輯企業(yè)邏輯Docker Image軟件插件 經(jīng)常與并存。企業(yè)邏輯插件插件插件Docker Image 經(jīng)常與并存。企業(yè)邏輯插件框架(Framework)插件插
溫馨提示
- 1. 本站所有資源如無特殊說明,都需要本地電腦安裝OFFICE2007和PDF閱讀器。圖紙軟件為CAD,CAXA,PROE,UG,SolidWorks等.壓縮文件請下載最新的WinRAR軟件解壓。
- 2. 本站的文檔不包含任何第三方提供的附件圖紙等,如果需要附件,請聯(lián)系上傳者。文件的所有權(quán)益歸上傳用戶所有。
- 3. 本站RAR壓縮包中若帶圖紙,網(wǎng)頁內(nèi)容里面會有圖紙預(yù)覽,若沒有圖紙預(yù)覽就沒有圖紙。
- 4. 未經(jīng)權(quán)益所有人同意不得將文件中的內(nèi)容挪作商業(yè)或盈利用途。
- 5. 人人文庫網(wǎng)僅提供信息存儲空間,僅對用戶上傳內(nèi)容的表現(xiàn)方式做保護(hù)處理,對用戶上傳分享的文檔內(nèi)容本身不做任何修改或編輯,并不能對任何下載內(nèi)容負(fù)責(zé)。
- 6. 下載文件中如有侵權(quán)或不適當(dāng)內(nèi)容,請與我們聯(lián)系,我們立即糾正。
- 7. 本站不保證下載資源的準(zhǔn)確性、安全性和完整性, 同時也不承擔(dān)用戶因使用這些下載資源對自己和他人造成任何形式的傷害或損失。
最新文檔
- 2024年度綠色建筑施工現(xiàn)場環(huán)保施工監(jiān)管合同3篇
- 2024年度高端摩托車租賃服務(wù)合作協(xié)議2篇
- 2024年武漢地區(qū)記賬代理業(yè)務(wù)協(xié)議樣本版B版
- 2024年度建筑工程施工合同綠色施工與節(jié)能要求3篇
- 漯河醫(yī)學(xué)高等??茖W(xué)?!恫牧吓c工藝(陶瓷)》2023-2024學(xué)年第一學(xué)期期末試卷
- 2024年度水利工程圍板定制與水利設(shè)施保護(hù)協(xié)議3篇
- 2024年標(biāo)準(zhǔn)個人借款與連帶責(zé)任擔(dān)保協(xié)議版B版
- 2024年版智能交通系統(tǒng)研發(fā)與實施合同
- 2024年度實習(xí)培訓(xùn)生崗位實習(xí)協(xié)議書模板集錦2篇
- 2024年度室內(nèi)木門行業(yè)聯(lián)盟合作發(fā)展合同3篇
- 環(huán)境工程的課程設(shè)計---填料吸收塔
- 道路運輸達(dá)標(biāo)車輛客車貨車核查記錄表
- 兒童詩兒童詩的欣賞和創(chuàng)作(課件)
- 人力資源管理工作思路(共3頁)
- 五筆常用字根表3746
- 新生兒肺氣漏
- 氣管切開(一次性氣切導(dǎo)管)護(hù)理評分標(biāo)準(zhǔn)
- 保安工作日志表
- 姜太公釣魚的歷史故事
- 數(shù)控車床實訓(xùn)圖紙國際象棋圖紙全套
- 電子政務(wù)概論教案
評論
0/150
提交評論