一、课程调查
- 我的认识:系统综合实践最初我以为是计算机系统的实践教学,后来才知道是系统性的综合实践。
- 我的希望:老师在上课时能多讲一些,要具体一点,因为我对微服务这些不太了解,全靠自学有点困难。
二、了解微服务
(1)什么是微服务
微服务是一种软件开发技术,是面向服务的架构(SOA)结构风格的一种变体,将应用程序编排成一系列松耦合的服务。在微服务架构中,各个服务是细粒度的,协议是轻量级的。
(2)微服务特点
- 每个微服务都可以运行在自己的进程里;
- 一系列独立运行的微服务共同构建起了整个系统;
- 每个服务为独立的业务开发,一个微服务一般完成某个特定的功能,比如订单管理,用户管理等;
- 微服务之间通过一些轻量级的通信机制进行通信。
(3)优势
- 将复杂的业务拆分成多个小的业务,每个业务拆分成一个服务,将复杂的问题简单化。利于分工,降低新人的学习成本。
- 微服务系统是分布式系统,业务与业务之间完全解耦,随着业务的增加可以根据业务再拆分,具有极强的横向扩展能力。面对搞并发的场景可以将服务集群化部署,加强系统负载能力。
- 服务间采用HTTP协议通信,服务与服务之间完全独立。每个服务可以根据业务场景选取合适的编程语言和数据库。
- 微服务每个服务都是独立部署的,每个服务的修改和部署对其他服务没有影响。
(4)缺点
微服务把单体开发的复杂度简化了,但部署和服务跟服务之间的复杂度会提高,所以需要有一个对architect层面比较清楚的人来做规划。
(5)部署
微服务部署使用容器技术。用统一规格,封装微服务,统一部署管理。
三、学习docker技术
3.1了解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是一个编排容器的工具,其实也是管理应用的全生命周期的一个工具,从创建应用,应用的部署,应用提供服务,扩容缩容应用,应用更新,都非常的方便,而且可以做到故障自愈。
3.2搭建docker环境
(1)docker的搭建
- 卸载可能已安装的旧版本
sudo apt-get remove docker docker-engine docker.io containerd runc
- 更新agt包索引
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
- 测试 Docker 是否安装成功
sudo docker run hello-world
(2)docker的容器操作
- 获取镜像
sudo docker pull ubuntu
- 启动容器(创建一个新镜像)
sudo docker run -it ubuntu /bin/bash
- 查询所有容器
sudo docker ps -a
- 删除一个容器,如图所示
sudo docker rm -f <容器名>
(3)docker的镜像操作
- 查看镜像
sudo docker images
- 搜索docker hub 中的所有Python镜像
sudo docker search Python
- 选取第一个,并且执行PULL操作
sudo docker pull python
- 运行python容器
sudo docker run -it python
- 登入docker hub仓库
sudo docker login
- 上传镜像到自己docker hub 仓库
sudo docker tag ubuntu lintao16/ubuntu
sudo docker push lintao16/ubuntu
- 运行结果