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

    一、课程调查

      又是久违的实践课,说实话我还是挺喜欢实践课的,虽然开课在周末挺让人头疼的。据说这门课是新开的课,所以我对这门课内容其实不太熟悉。但是还是希望能够学到一些新的东西,所以我对这门课还是挺向往的。因为是在博客所以也能够很好地在班级里互相学习,我觉得这样是能够更好地进步的一种学习方式。


    二、了解微服务

    1.微服务是什么:

      所谓的微服务是SOA架构下的最终产物,是一个新兴的软件架构,该架构的设计目标是为了肢解业务,即把一个大型的单个应用程序和服务拆分为数十个的支持微服务,使得服务能够独立运行。一个微服务的策略可以让工作变得更为简便,它可扩展单个组件而不是整个的应用程序堆栈,从而满足服务等级协议。微服务设计原则:1、各司其职 2、服务高可用和可扩展性。

    2.特点:

    ①每个微服务可独立运行在自己的进程里;
    ②一系列独立运行的微服务共同构建起了整个系统;
    ③每个服务为独立的业务开发,一个微服务一般完成某个特定的功能,比如:订单管理,用户管理等;
    ④微服务之间通过一些轻量级的通信机制进行通信,例如通过REST API或者RPC的方式进行调用。

    3.相较于传统的软件架构的优缺点:

    架构的演变过程:
    单体架构——>垂直架构——>soa面向服务架构——>微服务架构

    • 单体架构:

    特点:
    ①所有功能集中在一个项目中;
    ②所有功能都要达成war包部署到服务器;
    ③通过集群(session共享集群)来提高服务器的性能。
    优点:
    项目架构简单,前期开发的成本低,周期短,小型企业首先
    缺点:
    全部的功能都集中在一个项目中完成,对于大型项目来说,开发难度高,不容易开发及扩展和维护

    • 垂直架构

    特点:
    ①以单体架构为单位进行系统的划分,划分成一个个系统;
    ②项目与项目之间存在数据冗余,耦合度高;
    ③项目是以接口调用为主,存在数据同步问题。
    优点:
    ①项目架构简单,前期开发的成本低,周期短,小型企业首先;
    ②垂直架构进行mvc分层设计,针对分层做相应的处理做到集群(10~1000);
    ③不同的项目采用不同的技术实现。
    缺点:
    ①全部的功能都集中在一个项目中完成,对于大型项目来说,开发难度高,不容易开发及扩展和维护;
    ②集群扩展有瓶颈集群(10~1000)针对分层做了优化。

    • SOA服务架构

    特点:
    ①基于soa服务思想进行功能的抽取(重复代码问题解决),以服务为中心来管理项目;
    ②各个系统之间要进行调用,所以出现ESB来管理项目(可以使用各种技术实现:webservice,rpc等);
    ③ESB是作为系统与系统之间桥梁,很难进行统一管理。
    优点:
    ①重复代码进行了抽取,提高了开发效率,提高了系统的可维护性;
    ②可以针对某个系统进行扩展,做集群更容易;
    ③采用ESB来管理服务组件,有利于降低企业开发项目难度。
    缺点:
    ①系统与服务的界限模糊的,不利于设计;
    ②ESB是作为系统与系统之间桥梁,没有统一标准,种类很多,不利于维护;
    ③抽取项目的粒度大,系统与服务之间解耦问题。

    • 微服务架构
       

    优点:
    ①微服务拆分更细,有利于资源的重复利用,提高开发效率;
    ②可以更加精准针对某个服务做方案;
    ③微服务去中心化,使用restful轻量级通信协议比使用ESB企业服务总线更容易维护;
    ④适应市场更容易,产品迭代周期更短。
    缺点:
    ①微服务量多,服务治理成本高,不利于系统维护;
    ②分布式系统架构且是微服务架构,技术成本高(容错,分布式事务等),对团队高挑战。

    4.部署:

    ①每台主机上部署多个服务实例
    ②每个主机一个服务实例
    ③每台容器一个服务实例
    ④松耦合,可独立部署


    三、学习docker技术

    1.学习了解docker的相关概念

    • Docker:一个开源的应用容器引擎,基于 Go 语言 并遵从 Apache2.0 协议开源。可以让开发者打包他们的应用以及依赖包到一个轻量级、可移植的容器中,然后发布到任何流行的 Linux 机器上,也可以实现虚拟化。
      Docker 包括三个基本概念:
      镜像(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,比如VirtualBox、 Digital Ocean、Microsoft Azure。
    • Swarm:Docker 的集群管理工具。它将 Docker 主机池转变为单个虚拟 Docker 主机。 Docker Swarm 提供了标准的 Docker API,所有任何已经与 Docker 守护程序通信的工具都可以使用 Swarm 轻松地扩展到多个主机。
    • k8s:一个编排容器的工具,其实也是管理应用的全生命周期的一个工具,从创建应用,应用的部署,应用提供服务,扩容缩容应用,应用更新,都非常的方便,而且可以做到故障自愈,例如一个服务器挂了,可以自动将这个服务器上的服务调度到另外一个主机上进行运行,无需进行人工干涉。

    2.搭建docker环境

    1.Docker 安装

    我是基于ubantu16.04系统进行安装的。
    测试是否安装成功

    sudo docker run hello-world
    


    谢天谢地,一次安装成功!!

    2.Docker 容器使用
    2.1获取镜像
    sudo docker pull ubuntu
    

    2.2启动容器
    2.2.1 运行命令查看当前系统的版本信息

    2.2.2 创建文件夹test
    mkdir test
    cd test
    

    2.3 对容器的开启状态进行修改查看

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

    sudo docker ps -a
    


    使用 docker start 启动一个已停止的容器:

    sudo docker start <容器 ID>
    

    再次使用查看指令可知容器被启动:

    2.4 后台运行

    创建后台运行容器:

    sudo docker run -d ubuntu:15.10 /bin/sh -c "while true; do echo ablack; sleep 1; done"
    


    先查看当前容器状态

    sudo docker ps -a
    


    查看容器内的标准输出:

    sudo docker logs d4b8ea78ef15
    

    2.5 停止和重启容器

    停止当前选中的容器

    sudo docker stop d4b8ea78ef15
    


    重新启动该容器并查看当前状态

    sudo docker restart d4b8ea78ef15
    sudo docker ps -a
    

    2.6 进入容器

    有两种指令可以进入容器

    2.6.1 attach 命令
    sudo docker attach <容器 ID>
    

    2.6.1 exec 命令
    sudo docker exec -it <容器 ID> /bin/bash
    

    2.7 更新容器

    查看可选操作

    docker container update --help
    


    选择memory-swap byte

    sudo docker container update --memory-swap 1500M 110c76e37f54
    

    出现错误

    sudo docker stop 110c76e37f54
    

    停止容器后再次尝试才成功

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

    查看可知容器已被删除:

    3.Docker 镜像部分

    3.1查看本地主机上的镜像
    sudo docker images
    


    可以docker hub上找我们需要的镜像

    sudo docker search httpd
    

    3.2获取并删除镜像

    获取镜像

    sudo docker pull httpd
    


    删除镜像(应先删除hello-world,不然会出错)

    sudo docker rmi hello-world
    sudo docker rm -f f990b0e4bb8b
    

    3.3登录自己的docker账号并拖取镜像

    登录并拖取镜像(之前看其他人博客说这一步非常慢,我这里建议可以开个VPN,秒拖取成功

    sudo docker login
    sudo docker tag ubuntu titin24/ubuntu
    sudo docker push titin24/ubuntu
    


    可以查看到自己的仓库里的镜像是否存在

    3.4从docker仓库中获取镜像
    sudo docker pull titin24/ubuntu
    

  • 相关阅读:
    Mac OSX下增加TCP连接数
    Connection reset by peer的常见原因及解决办法
    修改主机名
    docker 查看 docker容器启动 完整命令
    nginx 日志打印响应时间 request_time 和 upstream_response_time
    Ubuntu16.04 安装 Docker
    VictoriaMetrics vmagent 使用
    VictoriaMetrics vmauth 使用
    VictoriaMetrics集群模式的一些说明
    promgen prometheus 配置文件生成工具
  • 原文地址:https://www.cnblogs.com/TITIN24/p/12692115.html
Copyright © 2011-2022 走看看