zoukankan      html  css  js  c++  java
  • 系统综合实践第1次实践作业

    (1)课程调查

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

    我认为这门课应该和软件工程差不多,学习一些有用的工具和知识,并且去实践它,让学生在实践中学习。理想中的这门课程是怎么样的?我希望在这门课中可以学习到一些有用的知识,在今后可以用到。

    (2)了解微服务

    第一次作业我们将接触一种新型的软件架构——微服务(也许部分同学已经有所了解)。大家要做的是学习并了解该技术,微服务是什么,有什么特点,相较于传统的软件架构,它有什么优缺点,它是怎样部署的。

    1.微服务是什么

    微服务应用程序由独立控制版本和可缩放的、以客户为中心的服务组成,这些服务通过标准协议和定义完善的接口彼此通信。

    2.有什么特点,相较于传统的软件架构,它有什么优缺点

    1.优点

    每个服务足够内聚,足够小,代码容易理解、开发效率提高
    服务之间可以独立部署,微服务架构让持续部署成为可能;
    每个服务可以各自进行x扩展和z扩展,而且,每个服务可以根据自己的需要部署到合适的硬件服务器上;
    容易扩大开发团队,可以针对每个服务(service)组件开发团队;
    提高容错性(fault isolation),一个服务的内存泄露并不会让整个系统瘫痪;
    系统不会被长期限制在某个技术栈上。

    2.缺点

    开发人员要处理分布式系统的复杂性;
    开发人员要设计服务之间的通信机制,对于需要多个后端服务的user case,要在没有分布式事务的情况下实现代码非常困难;
    涉及多个服务直接的自动化测试也具备相当的挑战性;
    服务管理的复杂性,在生产环境中要管理多个不同的服务的实例,这意味着开发团队需要全局统筹(PS:现在docker的出现适合解决这个问题)
    应用微服务架构的时机如何把握?对于业务还没有理清楚、业务数据和处理能力还没有开始爆发式增长之前的创业公司,不需要考虑微服务架构模式,这时候最重要的是快速开发、快速部署、快速试错。

    3.它是怎样部署的。

    基于主机(物理机或虚机)的多服务实例

    基于主机(物理机或虚机)的服务实例

    基于容器的服务实例

    无服务器部署

    (3)学习docker技术

    docker作为微服务的一种十分典型的代表技术,我们要做的是:

    学习了解docker的相关概念(容器、镜像等),了解docker、docker compose、Dockerfile、docker machine、Swarm、k8s是什么,是做什么用的,心中有概念即可;
    搭建你自己的docker环境,系统环境不限(主流的有Ubuntu/CentOS/Debian/Windows/MacOS等),完成docker的基本入门,包括但不限于:容器的创建、删除、更新和查询,创建并维护自己的镜像仓库,实现拉取和上传镜像等。
    docker仓库链接:docker hub
    参考资料:Docker Documentation;Docker教程 | 菜鸟教程

    1.Docker 包括三个基本概念:

    • 镜像(Image):Docker 镜像(Image),就相当于是一个 root 文件系统。比如官方镜像 ubuntu:16.04 就包含了完整的一套 Ubuntu16.04 最小系统的 root 文件系统。
    • 容器(Container):镜像(Image)和容器(Container)的关系,就像是面向对象程序设计中的类和实例一样,镜像是静态的定义,容器是镜像运行时的实体。容器可以被创建、启动、停止、删除、暂停等。
    • 仓库(Repository):仓库可看着一个代码控制中心,用来保存镜像。

    2.Docker 容器通过 Docker 镜像来创建。
    容器与镜像的关系类似于面向对象编程中的对象与类。

    3.DockerFile分为四部分组成:基础镜像信、维护者信息、镜像操作指令和容器启动时执行指令。

    例如:

    第一行必须指令基于的基础镜像
    From ubutu

    维护者信息
    MAINTAINER docker_user docker_user@mail.com

    镜像的操作指令
    apt/sourcelist.list

    RUN apt-get update && apt-get install -y ngnix
    RUN echo " daemon off;">>/etc/ngnix/nignix.conf

    容器启动时执行指令
    CMD /usr/sbin/ngnix

    4.docker machine

    Docker Machine是一个简化Docker安装的命令行工具,通过一个简单的命令行即可在相应的平台上安装Docker,比如VirtualBox、 Digital Ocean、Microsoft Azure。

    5.Swarm

    Swarm是Docker官方提供的一款集群管理工具,其主要作用是把若干台Docker主机抽象为一个整体,并且通过一个入口统一管理这些Docker主机上的各种Docker资源。

    Ubuntu Docker安装

    • 更新apt包索引

    sudo apt-get update

    • 安装 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

    最后成功安装

    容器使用

    获取镜像

    如果我们本地没有 ubuntu 镜像,我们可以使用 docker pull 命令来载入 ubuntu 镜像:

    • sudo docker pull ubuntu

    启动容器

    以下命令使用 ubuntu 镜像启动一个容器,参数为以命令行模式进入该容器:

    • sudo docker run -it ubuntu /bin/bash

    使用echo打出hello world
    参数说明:
    -i: 交互式操作。
    -t: 终端。
    ubuntu: ubuntu 镜像。
    /bin/bash:放在镜像名后的是命令,这里我们希望有个交互式 Shell,因此用的是 /bin/bash。
    要退出终端,直接输入 exit:

    容器的查询

    查看所有的容器命令如下:

    • sudo docker ps -a

    以上三步的截图

    删除容器

    • sudo docker rm -f <容器ID>

    停止/启动容器

    • sudo docker start <容器 ID>
    • sudo docker stop <容器 ID>

    查看容器信息

    • sudo docker inspect <容器ID>

    容器更新信息

    查看可选择的更新方式

    • docker container update --help

    镜像的使用

    1.获取阿里云镜像加速器

    • sudo mkdir -p /etc/docker
      sudo tee /etc/docker/daemon.json <<-'EOF'
      {
      "registry-mirrors": https://ob0p0ivk.mirror.aliyuncs.com
      }
      EOF
      sudo systemctl daemon-reload
      sudo systemctl restart docker

    2.列出镜像列表

    查看本地镜像

    • sudo docker images
  • 相关阅读:
    日期时间插件
    QQ在线客服
    dede轮播图
    Animation 案例解释
    transition Css3过度详解
    解决文字无法缩小的问题
    DEDE函数
    hdu 3435 图回路分割
    HDU 4183
    hdu 1569 最小割
  • 原文地址:https://www.cnblogs.com/booob/p/12722252.html
Copyright © 2011-2022 走看看