2020系統綜合實踐 第1次實踐做業

第一次實踐做業


(1)課程調查

進入大三下學期的後半段,大學階段的理論課程應該已經修得八九不離十了,在這個時間點迎來系統綜合實踐這門課,做爲培養計劃的一門新課程,咱們很是但願瞭解大家對於課程的但願,請寫下你對這門課的認識和你理想中的這門課程是怎麼樣的。

感受和大多數人同樣,在上課以前應該都不是很瞭解這個課程,只是知道這們課是時間方面的課程,學分在實踐課種也算是比較多的了,在以前覺得就是綜合之前學習過的理論課程來作一個綜合的實踐,跟以往的實際課同樣日常跟着老師作,最後考試完成,不過博客園班級二維碼發下來我以爲這門課就沒那麼簡單了……畢竟上學期不但有軟工實踐,還有SDN,兩門課程屬實是挺讓人頭大,因此但願這門課不會像以往那麼困難吧,特別是不要像sdn那門課程同樣處處都是晦澀難懂的概念,說真的那門課雖然結束了,可是我瞭解到的東西並很少,真正理解的內容也不多,並且一直停留在配置環境配置環境,但願這門課的東西能夠更多地用在學習內容上(考研黨強烈但願這門課不會那麼耗時……),而不是環境的配置上面,而且在最後能夠有所收穫,並在之後的學習生涯中可以有所幫助。linux

(2)瞭解微服務

第一次做業咱們將接觸一種新型的軟件架構——微服務(也許部分同窗已經有所瞭解)。你們要作的是學習並瞭解該技術,微服務是什麼,有什麼特色,相較於傳統的軟件架構,它有什麼優缺點,它是怎樣部署的。
  • 維基百科上給出的定義是:微服務(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

(3)學習docker技術

docker做爲微服務的一種十分典型的表明技術,咱們要作的是:學習瞭解docker的相關概念(容器、鏡像等),瞭解docker、docker compose、Dockerfile、docker machine、Swarm、k8s是什麼,是作什麼用的,心中有概念便可;

1.docker的相關概念

  • 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是一個編排容器的工具,其實也是管理應用的全生命週期的一個工具,從建立應用,應用的部署,應用提供服務,擴容縮容應用,應用更新,都很是的方便,並且能夠作到故障自愈,例如一個服務器掛了,能夠自動將這個服務器上的服務調度到另一個主機上進行運行,無需進行人工干涉。

2.Ubuntu Docker安裝

  • 更新apt包索引

sudo apt-get update

在這個過程當中出現了過程超級慢的狀況,這是因爲linux系統自帶的鏡像源都在國外,國內用戶下載或更新軟件會比較慢,有時是很是慢,因此國內某些機構,如大學,研究院所,就在國內建了linux的鏡像源服務器供國內linux用戶使用,詳細能夠參考該連接
設置完成後發現速度快了特別多,接下來就按照步驟來安裝

  • 安裝 apt 依賴包,用於經過HTTPS來獲取倉庫
sudo apt-get install \
    apt-transport-https \
    ca-certificates \
    curl \
    gnupg-agent \
    software-properties-common
  • 添加 Docker 的官方 GPG 密鑰
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"
  • 更新 apt 包索引

sudo apt-get update

  • 安裝最新版本的 Docker Engine-Community 和 containerd
sudo apt-get install docker-ce docker-ce-cli containerd.io
  • 測試 Docker 是否安裝成功
    sudo docker run hello-world
    在測試的時候剛開始出現了不能尋找到的狀況,以下圖,

    接着我從新輸入了一遍這段測試代碼,發現成功了,,結果以下圖

    可見,Docker註冊服務器從Docker Hub獲取到最新的Hello World鏡像,下載到了本地。能夠再次運行Hello World鏡像

3.容器的操做

  • 輸出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 rmi hello-world
    發現直接刪除鏡像是不行的,因此應該先刪除鏡像建立的容器,以下

4.docker倉庫管理

因爲docker進不去,因此我用了以前註冊的阿里雲鏡像,建立一個倉庫

經過他的操做指南完成鏡像的推送,能夠看到倉庫裏已經有了這個鏡像

相關文章
相關標籤/搜索