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


    系统综合实践第1次作业

    课程调查

    之前我并没有在前辈那边打听过这门课,所以是完全主观的感受。

    从课程题目上来看,我觉得这应该是会比较类似于软工实践那种,是比较综合的实践课,但是侧重点可能会有所不同。软件工程实践主要是是软件,而这门系统综合实践的重点应该是会放在系统上。但是“系统”这个词也有着各种不同的解释,比如代表操作系统,是一门研究计算机操作系统的综合实践课,或者系统是形容词,代表这是一门”系统性、综合“的实践课,帮助我们对大学三年来的所学进行一次比较全面的实践应用。

    了解微服务

    什么是微服务

    微服务的概念最早是在 2014 年由 Martin Fowler 和 James Lewis 共同提出,他们定义了微服务是由单一应用程序构成的小服务,拥有自己的进程与轻量化处理,服务依业务功能设计,以全自动的方式部署,与其他服务使用 HTTP API 通讯。同时,服务会使用最小规模的集中管理 (例如 Docker)技术,服务可以用不同的编程语言与数据库等。

    微服务的特点

    • 可针对特定服务发布,影响小,风险小,成本低
    • 可频繁发布版本,快速交付需求
    • 低成本扩容,弹性伸缩,适应云环境

    微服务的优缺点

    • 微服务优点
      • 微服务是松藕合的,无论是在开发阶段或部署阶段都是独立的。
      • 能够快速响应, 局部修改容易, 一个服务出现问题不会影响整个应用。
      • 易于和第三方应用系统集成, 支持使用不同的语言开发, 允许你利用融合最新技术。
      • 每个微服务都很小,足够内聚,足够小,代码容易理解。团队能够更关注自己的工作成果, 聚焦指定的业务功能或业务需求。
      • 开发简单、开发效率提高,一个服务可能就是专一的只干一件事, 能够被小团队单独开发,这个小团队可以是 2 到 5 人的开发人员组成。
    • 微服务架构缺点
      • 微服务架构带来过多的运维操作, 可能需要团队具备一定的 DevOps 技巧.
      • 分布式系统可能复杂难以管理。因为分布部署跟踪问题难。当服务数量增加,管理复杂性增加。

    微服务的部署方式

    • 基于主机的多服务实例
      • 在该模式下,软件开发人员可以提供单个或多个物理机或虚拟机,同时在每个主机上运行多个服务实例。
    • 基于主机的服务实例
      • 此类微服务的部署方式能够在对应的主机上单独地运行每一个实例。
    • 基于容器的服务实例(Docker)
      • 在这种部署方式下,每个服务实例都运行在其各自的容器中,因此也被称为操作系统级别的虚拟化机制。

    学习Docker技术

    Docker简介

    • Docker 是一个开源的应用容器引擎,让开发者可以打包他们的应用以及依赖包到一个可移植的镜像中,然后发布到任何流行的 Linux或Windows 机器上,也可以实现虚拟化。容器是完全使用沙箱机制,相互之间不会有任何接口。
    • 镜像(Image):Docker 镜像(Image),就相当于是一个 root 文件系统。比如官方镜像 ubuntu:16.04 就包含了完整的一套 Ubuntu16.04 最小系统的 root 文件系统。
    • 容器(Container):镜像(Image)和容器(Container)的关系,就像是面向对象程序设计中的类和对象一 样,镜像是静态的定义,容器是镜像运行时的实体。容器可以被创建、启动、停止、删除、暂停等。
    • 仓库(Repository):仓库可看成一个代码控制中心,用来保存镜像。
    • Docker Compose 是用于定义和运行多容器 Docker 应用程序的工具。通过 Compose,可以使用 YML 文件来配置应用程序需要的所有服务。然后,使用一个命令,就可以从 YML 文件配置中创建并启动所有服务。
    • Dockerfile 是一个用来构建镜像的文本文件,文本内容包含了一条条构建镜像所需的指令和说明。
    • Docker Machine 是一种可以在虚拟主机上安装 Docker 的工具,并可以使用 docker-machine 命令来管理主机。
    • Docker Swarm 是 Docker 的集群管理工具。它将 Docker 主机池转变为单个虚拟 Docker 主机。 Docker Swarm 提供了标准的 Docker API,所有任何已经与 Docker 守护程序通信的工具都可以使用 - Swarm 轻松地扩展到多个主机。
    • Kubernetes(k8s)是Google开源的容器集群管理系统。在Docker技术的基础上,为容器化的应用提供部署运行、资源调度、服务发现和动态伸缩等一系列完整功能,提高了大规模容器集群管理的便捷性。

    Docker环境的安装和简单使用

    安装

    推荐先将Ubuntu软件源更换为国内源,速度会比较快,且不容易发生网络错误。

    更新软件源
    sudo apt-get update
    安装依赖
    sudo apt-get install -y apt-transport-https ca-certificates curl software-properties-common
    添加docker密钥
    curl -fsSL https://download.docker.com/linux/ubuntu/gpg | sudo apt-key add -
    设置stable存储库
    sudo add-apt-repository "deb [arch=amd64] https://download.docker.com/linux/ubuntu $(lsb_release -cs) stable"
    再次更新软件源
    sudo apt-get update
    安装docker
    sudo apt-get install -y docker-ce
    

    检测是否安装成功

    sudo docker run hello-world
    

    简单使用

    查看当前镜像

    sudo docker images
    

    可以看到刚刚创建的hello-world镜像

    拉取镜像

    sudo docker pull ubuntu
    

    拉取一个ubuntu镜像,并查看

    创建并启动、退出容器

    sudo docker run -it ubuntu /bin/bash
    

    启功ubuntu容器,并在容器中输出”hello world“,然后退出容器

    查看当前所有容器

    sudo docker ps -a
    

    可以看到,有ubuntu和hello-world两个容器

    查看容器信息

    sudo docker inspect <容器id>
    

    这边我输入的是上一步查到的ubuntu容器的id

    删除容器

    sudo docker rm <容器id>
    

    和上一步一样,需要输入要删除的容器的id。这边我输入了hollo-world容器的id,再次查看容器列表,只剩下ubuntu容器了,hello-world已经被删除

    上传容器

    一共需要三个步骤

    #更换容器名字,将ubuntu容器改名为phd1999/test,即改为<docker ID>/<name>,的形式
    sudo docker tag ubuntu phd1999/test
    #登录docker账号
    sudo docker login
    #上传容器
    sudo docker push phd1999/test
    

    到docker hub上查看上传的容器信息

  • 相关阅读:
    结对项目电梯调度--设计模拟
    程序的单元测试
    一个文本单词统计的案例
    MFC vs2012 Office2013 读写excel文件
    Unix NetWork Programming(unix环境编程)——环境搭建(解决unp.h等源码编译问题)
    VMware三种上网模型
    矩阵求逆算法及程序实现(C++)
    unix环境高级编程基础知识之第四章
    2014阿里研发面试题目
    MFC下debug改成release版本出现问题及解决办法
  • 原文地址:https://www.cnblogs.com/phd1999/p/12723438.html
Copyright © 2020-2023  润新知