2020系统综合实践 第1次实践作业

第一次实践作业


(1)课程调查

进入大三下学期的后半段,大学阶段的理论课程应该已经修得八九不离十了,在这个时间点迎来系统综合实践这门课,作为培养计划的一门新课程,我们非常希望了解你们对于课程的希望,请写下你对这门课的认识和你理想中的这门课程是怎么样的。

感觉和大多数人一样,在上课之前应该都不是很了解这个课程,只是知道这们课是时间方面的课程,学分在实践课种也算是比较多的了,在之前以为就是综合以前学习过的理论课程来做一个综合的实践,跟以往的实际课一样平常跟着老师做,最后考试完成,不过博客园班级二维码发下来我觉得这门课就没那么简单了……毕竟上学期不但有软工实践,还有SDN,两门课程属实是挺让人头大,所以希望这门课不会像以往那么困难吧,特别是不要像sdn那门课程一样到处都是晦涩难懂的概念,说真的那门课虽然结束了,但是我了解到的东西并不多,真正理解的内容也很少,而且一直停留在配置环境配置环境,希望这门课的东西可以更多地用在学习内容上(考研党强烈希望这门课不会那么耗时……),而不是环境的配置上面,并且在最后可以有所收获,并在以后的学习生涯中能够有所帮助。

(2)了解微服务

第一次作业我们将接触一种新型的软件架构——微服务(也许部分同学已经有所了解)。大家要做的是学习并了解该技术,微服务是什么,有什么特点,相较于传统的软件架构,它有什么优缺点,它是怎样部署的。
  • 维基百科上给出的定义是:微服务(Microservices)是一种软件开发技术,是面向服务的架构(Service-Oriented Architecture,SOA)的变体,微服务架构将应用程序组成一系列松散耦合的服务集合。在微服务体系结构中,服务是细粒度的,协议是轻量级的。微服务的本质在于分布式、去中心化。简单理解就是分解应用程序的功能,把一个大型服务拆分成很多小服务,使它们完全彼此独立,并且可以相互通信,拆分之后的微服务架构如下图所示。

  • 微服务架构的特点
    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.性能监控

  • 它是怎样部署
    1.一台主机部署多服务实例
    2.每个主机一个服务实例
    3.松耦合,可独立部署

(3)学习docker技术

docker作为微服务的一种十分典型的代表技术,我们要做的是:学习了解docker的相关概念(容器、镜像等),了解docker、docker compose、Dockerfile、docker machine、Swarm、k8s是什么,是做什么用的,心中有概念即可;

1.docker的相关概念

  • docker:docker是一个开源的应用容器引擎,开发者可以打包自己的应用到容器里面,然后迁移到其他机器的docker应用中,可以实现快速部署。如果出现的故障,可以通过镜像,快速恢复服务。

  • docker compose: 用于定义和运行多容器 Docker 应用程序的工具

  • Dockerfile:是一个用来构建镜像的文本文件,文本内容包含了一条条构建镜像所需的指令和说明。

  • Docker Machine 是一种可以让您在虚拟主机上安装 Docker 的工具,并可以使用 docker-machine 命令来管理主机。

  • Docker Swarm 是 Docker 的集群管理工具。它将 Docker 主机池转变为单个虚拟 Docker 主机。 Docker Swarm 提供了标准的 Docker API,所有任何已经与 Docker 守护程序通信的工具都可以使用 Swarm 轻松地扩展到多个主机。

  • 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进不去,所以我用了之前注册的阿里云镜像,创建一个仓库

通过他的操作指南完成镜像的推送,可以看到仓库里已经有了这个镜像

posted @ 2020-04-13 17:20  Yaobink  阅读(228)  评论(0编辑  收藏  举报