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

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

  • 相关阅读:
    107. Binary Tree Level Order Traversal II
    108. Convert Sorted Array to Binary Search Tree
    111. Minimum Depth of Binary Tree
    49. Group Anagrams
    使用MALTAB标定实践记录
    442. Find All Duplicates in an Array
    522. Longest Uncommon Subsequence II
    354. Russian Doll Envelopes
    opencv 小任务3 灰度直方图
    opencv 小任务2 灰度
  • 原文地址:https://www.cnblogs.com/yaobink/p/12684763.html
Copyright © 2011-2022 走看看