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

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

  • 相关阅读:
    如何定时备份Mysql数据库
    Mysql如何分析慢查询及优化(一)--- EXPLAIN详解
    Mysql如何分析慢查询日志--MysqlDumpSlow详解
    Mysql添加用户及用户权限管理
    Mysql表的横向拆分与纵向拆分及简单案例
    Mysql触发器详解以及简单的案例
    Mysql存储过程详解及案例
    Mysql中如何查看线程
    Nginx命令与配置详解
    SQLSERVER 2008 技术内幕 T-SQL查询 笔记1: SQL 执行顺序
  • 原文地址:https://www.cnblogs.com/yaobink/p/12684763.html
Copyright © 2011-2022 走看看