zoukankan      html  css  js  c++  java
  • 第1次实践作业

    一、课程调查

    看到名称,就感到这是一门综合性较强的课程,可能需要一些硬件相关的知识并且进行动手操作,感觉会有一定的难度并且需要花费不少的时间来进行学习。了解了课程的教授内容后,觉得是比较有意思的,希望自己能够学好这门课,在学习的过程中有所收获,并能将这些知识在以后有机会运用到实际当中去。

    二、了解微服务

    1.微服务是什么

    微服务的概念最早是在 2014 年由 Martin Fowler 和 James Lewis 共同提出,他们定义了微服务是由单一应用程序构成的小服务,拥有自己的进程与轻量化处理,服务依业务功能设计,以全自动的方式部署,与其他服务使用 HTTP API 通讯。同时,服务会使用最小规模的集中管理 (例如 Docker)技术,服务可以用不同的编程语言与数据库等。总结来说,微服务架构是将复杂臃肿的单体应用进行细粒度的服务化拆分,每个拆分出来的服务各自独立打包部署,并交由小团队进行开发和运维,从而极大地提高了应用交付的效率,并被各大互联网公司所普遍采用。


    2.微服务的特点

    • 每个微服务粒度小,并且每个微服务都有自己独立的基本组件,例如数据库、缓存等,能够独立被部署并运行在一个进程内。
    • 系统相比较复杂单体应用更为简洁轻量化,每个微服务因为独立部署,可以使用不同跨语言编写,这样使得微服务架构更为灵活。
    • 具有低耦合性,不同模块间依赖低,相互关联小。
    • 按照业务来划分服务,单个服务代码量小,业务单一,易于维护。
    • 微服务有一套服务治理的解决方案,服务之间不耦合,可以随时加入和剔除服务。

    3.微服务的优缺点

    优点

    • 每个服务足够内聚,足够小,代码容易理解这样能够聚焦一个指定的业务功能或业务需求。
    • 开发简单,开发效率提高,一个服务可能就是专一的只干一件事情。
    • 微服务是松耦合的,是有功能意义的服务,无论是在开发阶段或部署阶段都是独立的。
    • 微服务能够被小团队单独开发。
    • 微服务能使用不同的语言开发。
    • 易于和第三方集成,微服务允许容易且灵活的方式集成自动部署,通过持续集成工具,如Jenkins、Hudson、bamboo。
    • 微服务易于被一个开发人员理解、修改和维护,这样小团队能够更关注自己的工作成果。无需通过合作才能体现价值。- 微服务允许你利用融合最新技术。
    • 微服务只是业务逻辑的代码,不会和HTML/CSS或其他界面组件混合。
    • 每个微服务都有自己的存储能力,可以有自己的数据库,也可以统一数据库。

    缺点

    • 开发人员要处理分布式系统的复杂性,服务配置繁琐。
    • 多服务运维难度,随着服务的增加,运维的压力也在增大。
    • 某些服务可能造成属性能瓶颈,某些服务的宕机可能导致很多服务受影响。
    • 服务的可用性和维护性高度依赖于服务治理,如果治理得不好将会是灾难。

    4.微服务的部署

    • 基于主机(物理机或虚机)的多服务实例
    • 基于主机(物理机或虚机)的服务实例
    • 基于容器的服务实例
    • 无服务器部署

    三、学习docker技术

    1.docker的相关概念

    • docker:Docker 是一个开源的应用容器引擎,让开发者可以打包他们的应用以及依赖包到一个可移植的镜像中,然后发布到任何流行的 Linux或Windows 机器上,也可以实现虚拟化。
    • docker compose:Docker Compose是用于定义和运行多容器 Docker应用程序的工具,实际就是一个yml批处理文件,用来管理多个容器。
    • Dockerfile:Dockerfile是docker中镜像文件的的描述文件。它可以使用在命令行中调用任何命令。Docker通过读取Dockerfile中的指令自动生成映像。
    • docker machine:Docker Machine可以用来批量安装docker、配置管理docker远程主机,而主机可以是物理机、虚拟机,甚至是云主机。Docker Machine像docker一样也提供了丰富的命令。
    • Swarm:Swarm是Docker官方提供的一款集群管理工具,其主要作用是把若干台Docker主机抽象为一个整体,并且通过一个入口统一管理这些Docker主机上的各种Docker资源。
    • k8s:是一个容器编排引擎,它支持自动化部署、大规模可伸缩、应用容器化管理。在生产环境中部署一个应用程序时,通常要部署该应用的多个实例以便对应用请求进行负载均衡。在k8s中,我们可以创建多个容器,每个容器里面运行一个应用实例,然后通过内置的负载均衡策略,实现对这一组应用实例的管理、发现、访问,而这些细节都不需要运维人员去进行复杂的手工配置和处理。

    2.搭建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 -
    

    • 通过搜索指纹的后8个字符,验证现在是否拥有带有指纹的密钥。
    sudo apt-key fingerprint 0EBFCD88
    

    • 设置稳定版仓库
    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
    
    • 验证安装是否成功
    sudo docker run hello-world
    

    如图所示,显示Docker安装成功。

    ②容器的使用

    • 载入镜像
    sudo docker pull ubuntu
    

    • 创建一个容器
    sudo docker run -it ubuntu /bin/bash
    

    • 退出容器
    exit
    
    • 启动容器(后台模式)
    sudo docker run -d ubuntu:15.10 /bin/sh -c "while true; do echo hello; sleep 1; done
    

    输出则是一串长字符,这个长字符串叫做容器ID,对每个容器来说都是唯一的,我们可以通过容器ID来查看对应的容器发生了什么。

    • 查询所有容器
    sudo docker ps -a
    

    • 查看容器的元数据
    sudo docker inspect <容器ID>
    

    • 实时查看docker容器日志
    sudo docker logs <容器ID>
    

    • 更新容器(我选择更新其中一个容器为cpu-shares=512)
    docker update --cpu-shares 512 <容器ID>
    

    • 停止容器
    sudo docker stop <容器ID>
    

    可以看到此时容器4c40dc165ca9未出现在运行的列表里。

    • 重启容器
    sudo docker restart <容器ID>
    

    可以看到此时容器4c40dc165ca9重新出现在运行的列表里。

    • 删除容器
    sudo docker rm -f <容器ID>
    

    可以看到容器4c40dc165ca9已被删除。

    ③镜像的使用

    • 搜索镜像
    sudo docker search httpd
    

    • 下载镜像
    sudo docker pull httpd
    

    • 删除镜像
    sudo docker rmi hello-world
    

    • 登录镜像仓库
    sudo docker login
    

    • 标记镜像
    sudo docker tag ubuntu solareye/ubu
    
    • 上传镜像到仓库
    sudo docker push solareye/ubu
    

    可以看到push成功。

    • 获取镜像
    sudo docker pull solareye/ubu
    

    可以看到获取成功。

  • 相关阅读:
    北京燃气IC卡充值笔记
    随机分析、随机控制等科目在量化投资、计算金融方向有哪些应用?
    量化交易平台大全
    Doctor of Philosophy in Computational and Mathematical Engineering
    Institute for Computational and Mathematical Engineering
    Requirements for the Master of Science in Computational and Mathematical Engineering
    MSc in Mathematical and Computational Finance
    万字长文:详解多智能体强化学习的基础和应用
    数据处理思想和程序架构: 使用Mbedtls包中的SSL,和服务器进行网络加密通信
    31-STM32+W5500+AIR202/302基本控制篇-功能优化-W5500移植mbedtls库以SSL方式连接MQTT服务器(单向忽略认证)
  • 原文地址:https://www.cnblogs.com/solareye/p/12712333.html
Copyright © 2011-2022 走看看