##(1)课程调查 ###进入大三下学期的后半段,大学阶段的理论课程应该已经修得八九不离十了,在这个时间点迎来系统综合实践这门课,作为培养计划的一门新课程,我们非常希望了解你们对于课程的希望,请写下你对这门课的认识和你理想中的这门课程是怎么样的。
答:对于这门课的第一感觉是硬件方面的实验,类似组原这样。但看这第一次实践就想到了软件工程实践,往事历历在目。因为理论学习差不多快修完了,所以这一门课就是综合所学知识,实践操作一遍一个应用开发的所有流程。
##(2)了解微服务 ###第一次作业我们将接触一种新型的软件架构——微服务(也许部分同学已经有所了解)。大家要做的是学习并了解该技术,微服务是什么,有什么特点,相较于传统的软件架构,它有什么优缺点,它是怎样部署的。
###微服务是什么 维基百科中这样定义:微服务的概念最早是在 2014 年由 Martin Fowler 和 James Lewis 共同提出,他们定义了微服务是由单一应用程序构成的小服务,拥有自己的进程与轻量化处理,服务依业务功能设计,以全自动的方式部署,与其他服务使用 HTTP API 通讯。同时,服务会使用最小规模的集中管理 (例如 Docker)技术,服务可以用不同的编程语言与数据库等。 微服务是一个新兴的软件架构,就是把一个大型的单个应用程序和服务拆分为数十个的支持微服务。一个微服务的策略可以让工作变得更为简便,它可扩展单个组件而不是整个的应用程序堆栈,从而满足服务等级协议。
###有什么特点 1、通过分解百巨大单体式应用为多个服务方法解决了复杂性问题,每个微服务相对较小 2、每个单体应用度不局限于固定的技术栈,开发者可以自由选择开发技术,提供API服务。 3、每个微服务独立的开发,部署 4、单一职责答功能,每个服务都很简单,只关注于一个业务功能 5、易于规模化开发版,多个开发团队可以并行开发,每个团队负责一项服务 6、改善故障隔离权。一个服务宕机不会影响其他的服务
###有什么优点 1、每个服务独立存在,所以可以单独部署,不用每次发布某个来功能都经历一次全服务发布。 2、遵循单一功能原则,服务之间可以通过RESTFUL或者RPC调用,功能解藕 3、“细粒度” 的高可源扩展性,每个服务都可以单独扩展,单独负载均衡 4、去中心化,尽可能地实现 “自服务” 5、有利于简化单独的开发测试以及部署,对开发团队友好
###有什么缺点 1、服务的内可用性和维护性高度依赖于服务治理,如果治容理得不好将会是灾难 2、某些服务可能造成性能瓶颈,某些服务的宕机可能导致很多服务受影响 3、服务配置繁琐
###怎样部署 1、一台主机部署多服务实例 2、每个主机一个服务实例 3、每台容器一个服务实例 4、松耦合,可独立部署
##(3)学习docker技术 ###相关概念 docker:Docker 是一个开源的应用容器引擎,基于 Go 语言 并遵从 Apache2.0 协议开源。 Docker 可以让开发者打包他们的应用以及依赖包到一个轻量级、可移植的容器中,然后发布到任何流行的 Linux 机器上,也可以实现虚拟化。 docker compose:定义和运行多容器Docker应用程序的工具。 Dockerfile:一个用来构建镜像的文本文件,文本内容包含了一条条构建镜像所需的指令和说明。 docker machine:在虚拟主机上安装Docker的工具,并可以使用docker-machine命令来管理主机。 Swarm:Docker的集群管理工具。 k8s:开源的容器集群管理系统,可以实现容器集群的自动化部署、自动扩缩容、维护等
###Ubuntu下安装docker 更新apt包索引:
$ 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 -
使用以下指令设置稳定版仓库:
$ sudo add-apt-repository
"deb [arch=amd64] https://download.docker.com/linux/ubuntu
$(lsb_release -cs)
stable"
安装最新版本的 Docker Engine-Community
$ sudo apt-get install docker-ce
###容器使用 如果我们本地没有 ubuntu 镜像,我们可以使用 docker pull 命令来载入 ubuntu 镜像:
$ docker pull ubuntu
启动容器:
$ docker run -it ubuntu /bin/bash
参数说明:
-i: 交互式操作。
-t: 终端。
/bin/bash:放在镜像名后的是命令,这里我们希望有个交互式 Shell,因此用的是 /bin/bash。
查看所有的容器命令如下:
$ docker ps -a
停止/启动一个容器
$ docker stop <容器 ID>
$ docker restart <容器 ID>
进入一个容器:
$ docker attach <容器 ID>
删除容器:
$ docker rm -f <容器 ID>
容器查询:
$ docker inspect <容器ID>