進入大三下學期的後半段,大學階段的理論課程應該已經修得八九不離十了,在這個時間點迎來系統綜合實踐這門課,做爲培養計劃的一門新課程,咱們很是但願瞭解大家對於課程的但願,請寫下你對這門課的認識和你理想中的這門課程是怎麼樣的。
感受和大多數人同樣,在上課以前應該都不是很瞭解這個課程,只是知道這們課是時間方面的課程,學分在實踐課種也算是比較多的了,在以前覺得就是綜合之前學習過的理論課程來作一個綜合的實踐,跟以往的實際課同樣日常跟着老師作,最後考試完成,不過博客園班級二維碼發下來我以爲這門課就沒那麼簡單了……畢竟上學期不但有軟工實踐,還有SDN,兩門課程屬實是挺讓人頭大,因此但願這門課不會像以往那麼困難吧,特別是不要像sdn那門課程同樣處處都是晦澀難懂的概念,說真的那門課雖然結束了,可是我瞭解到的東西並很少,真正理解的內容也不多,並且一直停留在配置環境配置環境,但願這門課的東西能夠更多地用在學習內容上(考研黨強烈但願這門課不會那麼耗時……),而不是環境的配置上面,而且在最後能夠有所收穫,並在之後的學習生涯中可以有所幫助。linux
第一次做業咱們將接觸一種新型的軟件架構——微服務(也許部分同窗已經有所瞭解)。你們要作的是學習並瞭解該技術,微服務是什麼,有什麼特色,相較於傳統的軟件架構,它有什麼優缺點,它是怎樣部署的。
維基百科上給出的定義是:微服務(Microservices)是一種軟件開發技術,是面向服務的架構(Service-Oriented Architecture,SOA)的變體,微服務架構將應用程序組成一系列鬆散耦合的服務集合。在微服務體系結構中,服務是細粒度的,協議是輕量級的。微服務的本質在於分佈式、去中心化。簡單理解就是分解應用程序的功能,把一個大型服務拆分紅不少小服務,使它們徹底彼此獨立,而且能夠相互通訊,拆分以後的微服務架構以下圖所示。
docker
微服務架構的特色:
1)針對特定服務發佈,影響小,風險小,成本低
2)頻繁發佈版本,快速交付需求
3)低成本擴容,彈性伸縮,適應雲環境數據庫
相較於傳統的軟件架構的優缺點
i.優勢
1.每一個服務足夠內聚,足夠小,代碼容易理解這樣可以聚焦一個指定的業務功能或業務需求。
2.開發簡單,開發效率提升,一個服務可能就是專注的只幹一件事情。
3.微服務是鬆耦合的,是有功能意義的服務,不管是在開發階段或部署階段都是獨立的。
4.微服務可以被小團隊單獨開發。
5.微服務能使用不一樣的語言開發。
6.易於和第三方集成,微服務容許容易且靈活的方式集成自動部署,經過持續集成工具,如Jenkins、Hudson、bamboo。
6.微服務易於被一個開發人員理解、修改和維護,這樣小團隊可以更關注本身的工做成果。無需經過合做才能體現價值。
7.微服務容許利用融合最新技術。
8.微服務只是業務邏輯的代碼,不會和HTML/CSS或其餘界面組件混合。
9.每一個微服務都有本身的存儲能力,能夠有本身的數據庫,也能夠統一數據庫。
ii.缺點
1.開發人員要處理分佈式系統的複雜性
2.多服務運維難度,隨着服務的增長,運維的壓力也在增大
3.系統部署依賴
4.服務間通信成本
5.數據一致性
6.系統集成測試
7.性能監控ubuntu
它是怎樣部署的
1.一臺主機部署多服務實例
2.每一個主機一個服務實例
3.鬆耦合,可獨立部署vim
docker做爲微服務的一種十分典型的表明技術,咱們要作的是:學習瞭解docker的相關概念(容器、鏡像等),瞭解docker、docker compose、Dockerfile、docker machine、Swarm、k8s是什麼,是作什麼用的,心中有概念便可;
docker:docker是一個開源的應用容器引擎,開發者能夠打包本身的應用到容器裏面,而後遷移到其餘機器的docker應用中,能夠實現快速部署。若是出現的故障,能夠經過鏡像,快速恢復服務。bash
docker compose: 用於定義和運行多容器 Docker 應用程序的工具。服務器
Dockerfile:是一個用來構建鏡像的文本文件,文本內容包含了一條條構建鏡像所需的指令和說明。架構
Docker Machine 是一種可讓您在虛擬主機上安裝 Docker 的工具,並可使用 docker-machine 命令來管理主機。運維
Docker Swarm 是 Docker 的集羣管理工具。它將 Docker 主機池轉變爲單個虛擬 Docker 主機。 Docker Swarm 提供了標準的 Docker API,全部任何已經與 Docker 守護程序通訊的工具均可以使用 Swarm 輕鬆地擴展到多個主機。curl
k8s是一個編排容器的工具,其實也是管理應用的全生命週期的一個工具,從建立應用,應用的部署,應用提供服務,擴容縮容應用,應用更新,都很是的方便,並且能夠作到故障自愈,例如一個服務器掛了,能夠自動將這個服務器上的服務調度到另一個主機上進行運行,無需進行人工干涉。
sudo apt-get update
在這個過程當中出現了過程超級慢的狀況,這是因爲linux系統自帶的鏡像源都在國外,國內用戶下載或更新軟件會比較慢,有時是很是慢,因此國內某些機構,如大學,研究院所,就在國內建了linux的鏡像源服務器供國內linux用戶使用,詳細能夠參考該連接
設置完成後發現速度快了特別多,接下來就按照步驟來安裝
sudo apt-get install \ apt-transport-https \ ca-certificates \ curl \ gnupg-agent \ software-properties-common
curl -fsSL https://download.docker.com/linux/ubuntu/gpg | sudo apt-key add -
sudo add-apt-repository \ "deb [arch=amd64] https://download.docker.com/linux/ubuntu \ $(lsb_release -cs) \ stable"
sudo apt-get update
sudo apt-get install docker-ce docker-ce-cli containerd.io
sudo docker run hello-world
輸出helloworld
But接下來又遇到了問題,就是在演示hello world的時候一直出現如下的錯誤
Error response from daemon: Get https://registry-1.docker.io/v2/: net/http:……
出現Docker鏡像報錯參考瞭如下的文章,記住vim前面最好加個sudo,掉進坑裏了,必定時刻要記得sudo!
終於獲得結果,以下圖所示
成功輸出hello world
獲取鏡像
若是咱們本地沒有 ubuntu 鏡像,咱們可使用 docker pull 命令來載入 ubuntu 鏡像:
$ docker pull ubuntu
啓動容器
如下命令使用 ubuntu 鏡像啓動一個容器,參數爲以命令行模式進入該容器,進入交互界面:
$ docker run -it ubuntu /bin/bash
查看全部的容器:
$ docker ps -a
使用 docker start 啓動一個已中止的容器:
$ docker start [id]
中止一個容器
中止容器的命令以下:
$ docker stop <容器ID>
中止和重啓對應id的容器,在查看全部容器結果以下
刪除容器
刪除容器使用docker rm命令:
$ docker rm -f
在進入容器的時候家使用docker exec命令,由於此退出容器終端,不會致使容器的中止
列出鏡像列表
咱們可使用 docker images 來列出本地主機上的鏡像。
獲取鏡像。這裏以httpt爲例
sudo docker pull [須要的鏡像]。
$ docker rmi hello-world
因爲docker進不去,因此我用了以前註冊的阿里雲鏡像,建立一個倉庫
經過他的操做指南完成鏡像的推送,能夠看到倉庫裏已經有了這個鏡像