0728_容器技术基础

417 阅读2分钟

容器的诞生来源于软件架构的演进,从一开始的单体式架构,到 SOA 架构、最后到现在的微服务架构,在这样一个架构的演进中,容器技术大展身手。

容器技术跟虚拟化技术相比较的话,他俩的共同点还是蛮多的,都是用来隔离一些资源,但更细致的分析,虚拟化更侧重硬件跟操作系统之间的隔离,容器则更侧重应用程序之间的隔离。

项目架构

单体架构:

传统的项目会有很多的功能,这些功能模块会组合成一个大工程,然后部署到服务器中。随着业务的增长、业务的复杂程度会越来越高、相应的开发、编译、部署、维护、扩展必然会受到限制。

1.png SOA 架构:

那是如何解决单体架构的这些问题呢, 一个字:

将庞大的单体应用拆分成多个服务模块,然后再将这些服务模块按照业务逻辑串联起来,对外提供服务。这些服务模块一般都是松散的,但每个组件能够执行一块完整的业务逻辑。

SOA 架构有一个主要的特质,即使各个服务模块分离,但还是需要 总线 ESB (比如 rpc 技术) 作为桥梁来进行沟通,可是 ESB 很难进行统一管理。

2.png

微服务架构:

在 SOA 基础上进行改造,思想还是对大项目拆分成小项目,但是与 SOA 区别在于,微服务不再强调 SOA 架构里面的毕竟重的 ESB 企业服务总线,真正地实现服务自洽,实现真正的组件化

3.png

Docker 容器

容器技术是一种进程隔离的技术,应用能够运行在一个个相互隔离的容器中,但与虚拟机不同的地方在于应用运行时共用一个 Kernel ,容器技术大大提升了对系统资源的利用率,也提高了应用的部署和迁移效率。

Linux Namespace 提供一种内核级别的隔离系统资源的方法,通过把系统的全局资源放在不同的 Namespace 中实现资源隔离的目的,不同的 Namespace 程序,可以享有一份独立的系统资源。(当然还有其他进程隔离的技术)

Namespace隔离的内容
UTS主机名与域名
IPC信号量、消息队列、共享内容
PID进程编号
Network网络设备、网络线、端口
Mount文件系统
User用户和用户组

利用 Namespace 可以构建一个相对隔离的容器,而通过 cgrous , 可以为容器设置系统资源配额,包括 CPU 、 内容、 IO 等。

4.png