(1)课程调查
- 在没上这门课程之前,听课程名感觉像计算机系统方面的课程,上学期也有听同学说我们新开了一门类似软件工程的课。上课之后感觉都不太一样,作为微服务的小白谈认识的话很像并没有什么深刻的认识,对课程的期望的话,希望能从这门课多学会一些技能吧,希望能够掌握更多的知识
(2)了解微服务
- 微服务是什么
- 微服务可以在"自己的程序"中运行,并通过"轻量级设备与HTTP型API进行沟通"。关键在于该服务可以在自己的程序中运行。通过这一点我们就可以将服务公开与微服务架构(在现有系统中分布一个API)区分开来。在服务公开中,许多服务都可以被内部独立进程所限制。如果其中任何一个服务需要增加某种功能,那么就必须缩小进程范围。在微服务架构中,只需要在特定的某种服务中增加所需功能,而不影响整体进程的架构。
- 微服务的特点
- 微服务的基本思想在于考虑围绕着业务领域组件来创建应用,这些应用可独立地进行开发、管理和加速。在分散的组件中使用微服务云架构和平台,使部署、管理和服务功能交付变得更加简单。
- 微服务是利用组织的服务投资组合,然后基于业务领域功能分解它们,在看到服务投资组合之前,它还是一个业务领域。
- 微服务这一概念出现于2012年,是因软件作者Martin Fowler而流行,他承认这并没有精确地定义出这一架构形式,虽然围绕业务能力、自动化部署、终端智能以及语言和数据的分散控制有一些常见的特性。
- 微服务的优点
- 1.大项目可以持续交付 2.易于维护 3.服务可以可以独立拓展 4.更强的兼容性 5.可以灵活的采用最新的技术
- 微服务的缺点
- 服务的拆分
- 分布式系统带来的挑战,主键如何产生、如何熔断、分布式事务如何处理、数据如何同步等一系列问题
- 多个研发团队的协调管理,不同的团队研发不同的微服务,那么就需要协调多个团队共同配合,才能做好微服务的开发工作,这堆项目管理提出了挑战。
- 微服务的部署
- 1.基于主机(物理机或虚机)的多服务实例;2.基于主机(物理机或虚机)的服务实例;3.基于容器的服务实例;4.无服务器部署。
(3)学习docker技术
docker的相关概念
- dock:Docker是一个开源的应用容器引擎,让开发者可以打包他们的应用以及依赖包到一个可移植的容器中,然后发布到任何流行的 Linux 机器上,也可以实现虚拟化。容器是完全使用沙箱机制,相互之间不会有任何接口。
- docker compose:Compose 是用于定义和运行多容器 Docker 应用程序的工具。通过 Compose,您可以使用 YML 文件来配置应用程序需要的所有服务。然后,使用一个命令,就可以从 YML 文件配置中创建并启动所有服务。
- Dockerfile:Dockerfile是一个Docker镜像的描述文件,其内部包含了一条条的指令,每一条指令构建一层,因此每一条指令的内容,就是描述该层应当如何构建
- docker machine:docker machine是 Docker 官方提供的一个工具,它可以帮助我们在远程的机器上安装 Docker,或者在虚拟机 host 上直接安装虚拟机并在虚拟机中安装 Docker。我们还可以通过 docker-machine 命令来管理这些虚拟机和 Docker。
- Swarm:Swarm是Docker官方提供的一款集群管理工具,其主要作用是把若干台Docker主机抽象为一个整体,并且通过一个入口统一管理这些Docker主机上的各种Docker资源。Swarm和Kubernetes比较类似,但是更加轻,具有的功能也较kubernetes更少一些。
- k8s:是一个编排容器的工具,其实也是管理应用的全生命周期的一个工具,从创建应用,应用的部署,应用提供服务,扩容缩容应用,应用更新,都非常的方便,而且可以做到故障自愈。
docker环境的搭建
sudo apt-get update
- 安装 apt 依赖包,用于通过HTTPS来获取仓库
sudo apt-get install
apt-transport-https
ca-certificates
curl
gnupg-agent
software-properties-common
curl -fsSL https://download.docker.com/linux/ubuntu/gpg | sudo apt-key add -
sudo apt-key fingerprint 0EBFCD88
sudo add-apt-repository
"deb [arch=amd64] https://download.docker.com/linux/ubuntu
$(lsb_release -cs)
stable"
sudo apt-get update
- 安装最新版本的 Docker Engine-Community 和 containerd ,或者转到下一步安装特定版本
sudo apt-get install docker-ce docker-ce-cli containerd.io
sudo docker run hello-world
容器的使用
sudo mkdir -p /etc/docker
sudo tee /etc/docker/daemon.json <<-'EOF'
{
"registry-mirrors": ["自己的加速器地址"]
}
EOF
sudo systemctl daemon-reload
sudo systemctl restart docker
sudo docker pull ubuntu
第一次获取镜像出错了,加上sudo就可以了
sudo docker run -it ubuntu /bin/bash
exit
sudo docker ps -a
sudo docker start b750bbbcfd88
sudo docker stop <容器 ID>
sudo docker restart <容器 ID>
sudo docker inspect <容器 ID>
sudo docker rm -f 1e560fca3906
镜像的使用
sudo docker images
sudo docker pull httpd
sudo docker rmi hello-world
仓库管理