系统综合实践第一次作业

一、课程调查

看课表最开始的时候以为这门实践是这学期计算机系统结构课的实践环节,上了第一节课以后发现是两门课。希望通过这门课学到一些新的专业相关技术。理想中是通过这门课,每节课可以学一些小技术,最后可以综合所有课程的知识和同学一起完成一个小作品。

二、了解微服务

(1)什么是微服务

微服务架构就是将单一程序开发成一个微服务,每个微服务运行在自己的进程中,并使用轻量级的机制通信,通常是HTTP RESTFUL API。这些服务围绕业务能力来划分,并通过自动化部署机制来独立部署。这些服务可以使用不同的编程语言,不同数据库,以保证最低限度的集中式管理。微服务架构的系统是一个分布式的系统,按业务进行划分为独立的服务单元,解决单体系统的不足,同时也满足越来越复杂的业务需求。
总结起来微服务就是将一个单体架构的应用按业务划分为一个个的独立运行的程序即服务,它们之间通过HTTP协议进行通信(也可以采用消息队列来通信),可以采用不同的编程语言,使用不同的存储技术,自动化部署减少人为控制,降低出错概率。服务数量越多,管理起来越复杂,因此采用集中化管理。

(2)微服务特点

每个微服务都可以运行在自己的进程里;一系列独立运行的微服务共同构建起了整个系统;每个服务为独立的业务开发,一个微服务一般完成某个特定的功能,比如订单管理,用户管理等;微服务之间通过一些轻量级的通信机制进行通信。

(3)优势

将复杂的业务拆分成多个小的业务,每个业务拆分成一个服务,将复杂的问题简单化。利于分工,降低新人的学习成本。
微服务系统是分布式系统,业务与业务之间完全解耦,随着业务的增加可以根据业务再拆分,具有极强的横向扩展能力。面对搞并发的场景可以将服务集群化部署,加强系统负载能力。
服务间采用HTTP协议通信,服务与服务之间完全独立。每个服务可以根据业务场景选取合适的编程语言和数据库。
微服务每个服务都是独立部署的,每个服务的修改和部署对其他服务没有影响。

(4)缺点

微服务把单体开发的复杂度简化了,但部署和服务跟服务之间的复杂度会提高,所以需要有一个对architect层面比较清楚的人来做规划。

(5)部署

微服务部署使用容器技术。用统一规格,封装微服务,统一部署管理。

三、学习docker技术

(1)docker

Docker是一个基于虚拟化服务的新型技术,是一个将运行时环境打包成容器进行传输的技术,实现“一次构建,处处运行”的理念。
Docker 的容器通过 Linux 的命名空间完成了与宿主机进程的网络隔离。Docker 为我们提供了四种不同的网络模式,Host、Container、None 和 Bridge 模式。Docker 默认的网络设置模式:网桥模式。

(2)容器

容器是镜像的一个实例,是一个小型的运行时环境,比如一般是小型的linux环境(基于linux内核的小型环境),用java代码比喻就是:容器是一个类的实例对象,比如Person小明= new Person0; Person就是一个模板, 也是要给镜像。

(3)镜像

镜像是保存在镜像仓库中的,pul镜像,相当于将镜像实例化成容器后部署在自己的环境中,用java来说就是一个类对象。

(4)仓库

仓库是用来保存多个注册仓库的,每个注册仓库中保存了不同的镜像image文件。

(5)docker compose

Docker Compose是Docker编排服务的最后一块Compose可以让用户在集群中部署分布式应用。简单的说,Docker Compose属于一个“应用层”的服务,用户可以定义哪个容器组运行哪个应用,它支持动态改变应用,并在需要时扩展。

(6)Dockerfile

Dockerfile是docker中镜像文件的的描述文件。

(7)docker machine

Docker Machine 是 Docker 官方提供的一个工具,它可以帮助在远程的机器上安装 Docker,或者在虚拟机 host 上直接安装虚拟机并在虚拟机中安装 Docker。

(8)Swarm

Swarm是Docker官方提供的一款集群管理工具,其主要作用是把若干台Docker主机抽象为一个整体,并且通过一个入口统一管理这些Docker主机上的各种Docker资源。Swarm和Kubernetes比较类似,但是更加轻,具有的功能也较kubernetes更少一些。

(9)k8s

k8s是一个编排容器的工具,其实也是管理应用的全生命周期的一个工具,从创建应用,应用的部署,应用提供服务,扩容缩容应用,应用更新,都非常的方便,而且可以做到故障自愈。

四、搭建docker环境及基本入门

1.环境配置

(1)设置仓库

更新 apt 包索引。

安装 apt 依赖包,用于通过HTTPS来获取仓库。

添加 Docker 的官方 GPG 密钥。

9DC8 5822 9FC7 DD38 854A E2D8 8D81 803C 0EBF CD88 通过搜索指纹的后8个字符,验证您现在是否拥有带有指纹的密钥。

使用以下指令设置稳定版仓库。

(2)安装 Docker Engine-Community

更新 apt 包索引。

安装最新版本的 Docker Engine-Community 和 containerd 。

测试 Docker 是否安装成功,输入以下指令,打印出以下信息则安装成功。

2.基本操作

(1)容器的使用

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

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

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

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

停止一个容器:停止容器的命令如下。

停止的容器重启:停止的容器可以通过 docker restart 重启。

进入容器:
在使用 -d 参数时,容器启动后会进入后台。此时想要进入容器,可以通过以下指令进入:
docker attach
docker exec:推荐大家使用 docker exec 命令,因为此退出容器终端,不会导致容器的停止。
attach 命令
下面使用 docker attach 命令。

查看容器信息

容器更新信息:查看可选择的更新方式docker container update --help

删除容器

(2)镜像的使用

获取阿里云镜像加速器。
sudo mkdir -p /etc/docker
sudo tee /etc/docker/daemon.json <<-'EOF'
{
"registry-mirrors": ["加速器地址"]
}
EOF
sudo systemctl daemon-reload
sudo systemctl restart docker

列出镜像列表:查看本地镜像
各个选项说明:
REPOSITORY:表示镜像的仓库源
TAG:镜像的标签
IMAGE ID:镜像ID
CREATED:镜像创建时间
SIZE:镜像大小

从Docker Hub网站搜索镜像:sudo docker search httpd

使用 docker pull 将上图的httpd官方版镜像下载到本地。

再次查看本地镜像。

(3)Docker Hub仓库管理

登录阿里云账户,需要输入用户名和密码,登陆后可以从阿里云仓库中拉取和推送镜像文件。

上传镜像:用push上传镜像文件。



拉取文件:
删除之前的文件。

再用pull拉取文件。

原文地址:https://www.cnblogs.com/RAEQI/p/12718131.html