课程调查
本来以为是系统结构综合实践,结果是系统综合实践,不是很清楚要上什么。希望这门课可以学到职业技能,对未来的职业发展有帮助。
了解微服务
-
微服务架构是一种架构模式,它提倡将单一应用程序划分成一组小的服务,服务之间相互协调、互相配合,为用户提供最终价值。每个服务运行在其独立的进程中,服务和服务之间采用轻量级的通信机制相互沟通(通常是基于HTTP的Restful API).每个服务都围绕着具体的业务进行构建,并且能够被独立的部署到生产环境、类生产环境等。另外,应尽量避免统一的、集中的服务管理机制,对具体的一个服务而言,应根据业务上下文,选择合适的语言、工具对其进行建。
-
相对于传统软件的优点:
-
提升开发交流,每个服务足够内聚,足够小,代码容易理解;
-
服务独立测试、部署、升级、发布;
-
按需定制的DFX,资源利用率,每个服务可以各自进行x扩展和z扩展,而且,每个服务可以根据自己的需要部署到合适的硬件服务器上;每个服务按
-
需要选择HA的模式,选择接受服务的实例个数;
-
容易扩大开发团队,可以针对每个服务(service)组件开发团队;
-
提高容错性(fault isolation),一个服务的内存泄露并不会让整个系统瘫痪;
-
新技术的应用,系统不会被长期限制在某个技术栈上;
-
-
相对于传统软件的缺点
- 没有银弹(可以有效提高开发效率同时避免软件重大缺陷的方法),微服务提高了系统的复杂度;
- 开发人员要处理分布式系统的复杂性;
- 服务之间的分布式通信问题;
- 服务的注册与发现问题;
- 服务之间的分布式事务问题;
- 数据隔离再来的报表处理问题;
- 服务之间的分布式一致性问题;
- 服务管理的复杂性,服务的编排;
- 不同服务实例的管理。
-
微服务的部署
- 微服务架构的应用系统包含若干个微服务
- 每个微服务部署多个实例
- 通过自动部署与运维工具实现部署自动化
学习docker技术
docker是什么?
Docker 是一个开源的应用容器引擎,基于 Go 语言 并遵从 Apache2.0 协议开源.
Docker 可以让开发者打包他们的应用以及依赖包到一个轻量级、可移植的容器中,然后发布到任何流行的 Linux 机器上,也可以实现虚拟化。
docker的相关概念?
镜像:Docker 镜像(Image),就相当于是一个 root 文件系统。比如官方镜像 ubuntu:16.04 就包含了完整的一套 Ubuntu16.04 最小系统的 root 文件系
容器:镜像(Image)和容器(Container)的关系,就像是面向对象程序设计中的类和实例一样,镜像是静态的定义,容器是镜像运行时的实体。容器可以被创建、启动、停止、删除、暂停等。
仓库:仓库可看着一个代码控制中心,用来保存镜像。
dockerfile:dockerfile 是一个用来构建镜像的文本文件,文本内容包含了一条条构建镜像所需的指令和说明。
docker compose:compose 是用于定义和运行多容器 Docker 应用程序的工具。通过 Compose,您可以使用 YML 文件来配置应用程序需要的所有服务。
docker machine:Docker Machine 是一种可以让您在虚拟主机上安装 Docker 的工具,并可以使用 docker-machine 命令来管理主机。
docker swarm:Docker Swarm 是 Docker 的集群管理工具。它将 Docker 主机池转变为单个虚拟 Docker 主机。 Docker Swarm 提供了标准的 Docker API,所有任何已经与 Docker 守护程序通信的工具都可以使用 Swarm 轻松地扩展到多个主机。
搭建自己的docker环境
(安装的部分按照教程走基本上没有问题,而且我忘了截图...所以就只写一下步骤)
sudo apt-get remove docker docker-engine docker.io containerd runc//删除旧版本
sudo apt-get update//更新索引
/************************/
sudo apt-get install
apt-transport-https
ca-certificates
curl
gnupg-agent
software-properties-common//安装apt迎来包
/**********************/
curl -fsSL https://download.docker.com/linux/ubuntu/gpg | sudo apt-key add -//添加官方密钥
/***********************/
sudo add-apt-repository
"deb [arch=amd64] https://download.docker.com/linux/ubuntu
$(lsb_release -cs)
stable"//设置稳定版
/**************************/
sudo apt-get install docker-ce docker-ce-cli containerd.io//安装最新版本的容器
docker的入门操作
-
拉取镜像
sudo docker pull ubuntu:19.04//从dockerhub拉取镜像
sudo docker run ubuntu:19.04 /bin/echo hello world//在镜像Ubuntu:19.04上运行输出helloworld,测试镜像拉取是否成功
-
容器的创建和删除
sudo docker run -it ubuntu:19.04 /bin/bash //启动一个容器并进入容器的交互命令界面
sudo dokcer rm -f **container id** //删除容器
-
容器的启动和停止
sudo docker ps -a //查看所有容器 sudo docker start **cintainer id** //启动容器
可以发现容器的状态发生改变sudo docker stoop **container id** //停止容器
容器停止 -
容器的导出和导入
sudo docker export **container id** > **filepath/filename.tar** // 将容器导出到压缩文件
sudo cat filepath/filename.tar | sudo docker import - test/ubuntu //将快照文件导入为镜像
-
镜像的更新
sudo docker commie -m=''描述'' -a='用户' **container id** **repository:tag** //镜像更新
-
镜像仓库的创建
sudo docker pull registry // 拉取取镜像仓库到本地 curl http://server-ip:port/v2/_catalog //访问查看仓库中存储的镜像
-
镜像仓库的上传和下载
sudo docker tag **repository:tag** server-ip:port/repository:tag //为镜像打上标签,需要附带镜像仓库的ip地址,如果仓库在本地则使用127.0.0.1。 sudo docker push server-ip:port/repository:tag //上传镜像到镜像仓库
sudo docker rmi **repository** // 删除本地镜像 sudo docker pull server-ip:port/repository:tag //从镜像仓库下载镜像
-
远程镜像仓库的管理
-
注册一个dockerhub账户/登录账户
-
镜像上传到账户仓库
sudo docker tag **repository:tag** username/repository:tag //与自己创建管理的不同,在dockerhub上使用的不是ip,是username。原理可能类似于域名解析什么的吧。 sudo docker push coderlzh/ubuntu:19.04 //上传仓库
-
从账户仓库下载镜像
-