(1)课程调查
看见博客园,就有种软工二号的感觉,刺激。希望这门课能比较好的给出学习路线,不像软工,就给个作业。嗯~ o( ̄▽ ̄)o
(2)了解微服务
-
微服务是什么?
微服务架构的系统是一个分布式的系统,按业务进行划分为独立的服务单元,解决单体系统的不足,同时也满足越来越复杂的业务需求。
-
微服务有什么特点?
- 单一职责 指的是每一个微服务模块,只关心自己的业务规则。例如订单模块只关心订单的相关业务,不牵扯其他业务的逻辑。
- 服务自治 每一个微服务模块的开发,需要有自己的开发、测试、运维、部署这一条独立的栈,并且有自己的数据库等一切,完全把其当成一个单独的项目来做,不牵扯到其它无关业务。
- 轻量级通信 微服务的通信协议需要跨平台、跨语言的通信协议,因为微服务是不绑定技术栈的,不论使用Java、PHP还是.net去开发Web系统,它们之间的通信一定是去语言特色的。
- 接口明确 前面提到了微服务的“接口调整成本高”,那么怎么去避免它呢?我们一开始就应该规划好微服务的模块是一种什么样的模型,尽量去避免A接口的改动会导致B接口的改动这种情况。
-
微服务有什么优缺点?
优点:
- 每个服务独立百存在,所以可以单独部署,不用每次发布某个功能都经历一次全服务发布。
- 遵循单一功能原则,服务之间可以通过RESTFUL或者RPC调用,功能解藕
- “细粒度” 的高可扩展性,每个服务都可以单独扩展,单独负知载均衡
- 去中心化,尽可能道地实现 “自服务”
- 有利于简化单独的开发测试以及部署,对开发团队友好
缺点:
- 服务的可用性和维护性高度依赖于服版务治理,如果治理得不好将会是灾难
- 某些服务可能造成权性能瓶颈,某些服务的宕机可能导致很多服务受影响
- 服务配置繁琐
-
微服务是如何部署的?
“基于主机的多服务实例”模式是最为传统的应用程序部署方法。在该模式下,软件开发人员可以提供单个或多个物理机或虚机,同时在每个主机上运行多个服务实例。此模式有几种不同的实现形式,其中包括:将每一个服务实例都作为一个单独的进程,或是在同一进程中运行多个服务实例。
(3)学习 docker 技术
docker 相关概念
- docker 是一个开源的应用容器引擎,基于 Go 语言 并遵从 Apache2.0 协议开源。Docker可以让开发者打包他们的应用以及依赖包到一个轻量级、可移植的容器中,然后发布到任何流行的 Linux 机器上,也可以实现虚拟化。个人感觉最简单的理解就是类似于虚拟机,但是又比虚拟机更轻量,消耗的资源更少
- docker compose 是用于定义和运行多容器 Docker 应用程序的工具。通过 Compose,您可以使用 YML 文件来配置应用程序需要的所有服务。然后,使用一个命令,就可以从 YML 文件配置中创建并启动所有服务。
- Dockerfile 是一个用来构建镜像的文本文件,文本内容包含了一条条构建镜像所需的指令和说明。
- docker machine 是一种可以让您在虚拟主机上安装 Docker 的工具,并可以使用 docker-machine 命令来管理主机。Docker Machine 也可以集中管理所有的 docker 主机,比如快速的给 100 台服务器安装上 docker。
- Swarm Docker 的集群管理工具。它将 Docker 主机池转变为单个虚拟 Docker 主机。 Docker Swarm 提供了标准的 Docker API,所有任何已经与 Docker 守护程序通信的工具都可以使用 Swarm 轻松地扩展到多个主机。
- k8s 是基于容器的集群管理平台,全称是kubernetes,由Google创造 知乎-10分钟看懂Docker和K8S
搭建 docker 环境
- 更新 apt 包索引
- 安装 apt 依赖包,用于通过HTTPS来获取仓库:
- 添加 Docker 的官方 GPG 密钥:
- 验证您现在是否拥有带有指纹的密钥
- 设置稳定版仓库
- 更新 apt 包索引
- 安装最新版本的 Docker Engine-Community
- 测试 Docker 是否安装成功
- pull ubuntu 镜像
- 查看当前的容器
- 使用 ubuntu 镜像创建一个名为 huaranmeng 的容器,查看镜像和容器
-
重启容器
输入
docker restart <容器ID>
即可重启容器
-
删除容器
输入
docker rm -f <容器ID>
即可删除容器
- 用容器输出hello world
- 登录账号
-
push 镜像
docker tag <镜像id> <要推入仓库的用户名>/<要推入的仓库名>:<新定义的tag> docker push <要推入仓库的用户名>/<要推入的仓库名>:<镜像标签>
在docker hub 上查看结果