摸鱼一号选手

导航

 

(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>
posted on 2020-04-17 18:43  摸鱼一号选手  阅读(224)  评论(0编辑  收藏  举报