软件体系结构对于用户而言并不可见,并且使其不引人注意。 但是糟糕的软件体系结构可能导致程序的繁琐程度增加,并使程序难以修改。 较高的内部质量(在这种情况下为可靠的软件体系结构)可以更快地交付新功能。
什么是软件架构?
程序的软件体系结构是程序系统的结构,它由软件元素,这些软件元素的属性以及两者之间的关系组成。 因此,可以说程序的软件体系结构定义了程序的结构和行为。
但是,它与定义所有结构和所有行为无关。 它仅与那些被认为是重要的元素有关。 重要的元素是具有长久影响的元素,例如主要的结构元素,与基本行为相关的那些元素以及具有重要意义的元素,例如可靠性和可伸缩性。 通常,体系结构不关心这些软件元素的细节。
有多种软件架构:
· 客户端-服务器架构
· 面向对象的架构
· 域驱动程序体系结构
· 洋葱架构
· 面向方面的架构
· 面向服务的架构
· 微服务架构
· Lambda架构
· 基于组件的架构
· 事件驱动架构
> Kinds of architecture software (src: https://cazton.com/consulting/enterprise/software-architectur
两层和三层架构
两层架构
在这里,您可以直接在客户端和服务器之间进行通信,而无需中介。 它分为两部分,客户端应用程序和数据库。 客户端向服务器发送请求,然后服务器在服务器上处理该请求并发回数据。 意思是,客户端处理Presentation层(应用程序接口)和Application层(逻辑操作),而服务器系统处理数据库层。
三层架构
三层体系结构分为三个部分: 表示层(客户端层),应用程序层(业务层)和数据库层(数据层)。 表示层
表示层是应用程序的最顶层。 这是使用软件时看到的层,或称为接口。 该层将用户根据键盘操作和鼠标单击提供的信息传递给应用程序层。
应用层称为业务层,因为在这里我们发现逻辑控件和功能来处理从表示层和数据库层接收的数据。
最后,数据库层是存储数据的层。 它包含连接到数据库并执行所需的所需操作的方法。
那么,现实生活中的两层和三层架构的例子是什么?
您在 络上访问的电子商务是两层体系结构的一个示例。 当您访问Web上的电子商务时,您将请求直接发送到服务器,然后服务器发回数据。 您在 络上访问的电子商务是两层体系结构的一个示例。
另一方面,三层体系结构是您可以在智能手机上访问的电子商务。 访问它时,您正在处理表示层。 然后,当您用鼠标单击进行操作时,它将传递到应用程序层。 存储您的操作数据的是数据库层。
什么是Docker?
Docker是供开发人员使用容器构建,部署和运行应用程序的开源。 Docker被用作操作系统的虚拟化,服务器,甚至是Web服务器。
Docker包装了应用程序及其库以及对容器的依赖关系。 然后,将容器内置到可以复制并共享到任何地方的图像中。 这使得可以在所有PC上打开应用程序/ 站。
Docker与虚拟机
但是首先,什么是虚拟机? 虚拟机是一个完全类似于计算机的系统。 这样就可以运行其他计算机上的内容以及一台计算机上的硬件。 它必须具有底层操作系统。
由于它们都是系统的虚拟化,因此Docker和Virtual Machine有何不同?
如上所述,Docker只能使用容器来存储许多应用程序,这使其更有效,更快速地访问。 与Docker不同,虚拟机将变得笨重且难以维护。
这解释了为什么开发人员通常在其开发过程中使用Docker。 然后,我们可以在生产阶段在每个应用程序上实现服务器。 虽然…..实际上只使用Docker也足够了!
这是两者之间的其他区别:操作系统支持,安全性,可移植性和性能。
· 操作系统支持
> Docker vs VM (src: https://geekflare.com/docker-vs-virtual-machine/)
如上图所示,虚拟机具有其来宾操作系统,而Docker共享主机操作系统。 它使虚拟机比Docker重。
· 安全
由于虚拟机不共享操作系统,因此它在主机内核中具有很强的隔离性。 与Docker相比,它更安全。 当攻击者访问Docker上的一个容器时,这意味着他已经克服了所有容器。
· 可移植性
Docker容器没有任何独立的操作系统,因此可以轻松移植。 当容器移植到其他操作系统时,它可以立即启动。
另一方面,虚拟机具有独立的操作系统,因此由于其大小,将很难移植并且要花费大量时间。
· 性能
Docker的重量更轻,使其运行速度比虚拟机快。
那为什么要使用Docker?
· Docker可以更有效地利用系统资源。 Docker使用的内存少于虚拟机。
· Docker可以加快软件交付周期。 Docker使开发人员可以轻松实现新版本的软件,甚至回滚到以前的版本。
· Docker轻巧,可移植且自成体系。
· Docker作为微服务架构非常出色。 容器非常适合微服务方法和敏捷开发过程。
Docker架构
> Visualization of Docker’s architecture (src: https://nickjanetakis.com/blog/understanding-how-the-
Docker守护程序是在我们的主机操作系统上运行的服务。 Docker守护程序本身公开了REST API。 许多不同的工具都可以通过此API与守护程序对话。 我们使用Docker CLI作为命令行工具来与Docker守护进程进行对话。
Docker上的条款
要了解Docker,您应该首先了解以下术语:
· Docker守护程序
Docker守护程序是操作系统主机中的一项服务。 它用于构建,部署和运行Docker的容器。 用户无法立即使用Docker守护程序。 要使用Docker守护程序,用户请使用Docker客户端作为中间人或CLI。
1. Docker镜像
Docker映像是一个只读模板。 该模板实际上是一个操作系统或许多应用程序中已安装的操作系统。 我们只需要使用一个Docker镜像就可以创建许多Docker容器。
2. Docker容器
Docker容器可以视为一个文件夹。 它是由Docker守护程序制成的。 以后可以构建此容器,以便生成可用于创建新Docker容器的Docker映像。
3. Docker注册表
Docker注册表是一组私有或公共的Docker映像。 我们可以在Docker Hub中访问Docker注册表。我们可以在此处推送或拉出自己的映像。
4. Docker /容器编排
Docker / Container Orchestration是容器生命周期的一项活动,尤其是在一个更大且动态的环境中。 开发人员可以使用许多容器编排来控制和自动化许多活动,例如
· 容器的启动和停止过程。
· 将功能从容器公开给用户或其他容器。
· 零停机时间部署新版本的容器。
· 自动或手动清洁。
Docker是一个客户端-服务器架构
我们可以说Docker是一个客户端-服务器应用程序。 守护程序是服务器,CLI是许多客户端之一。 也有许多第三方客户。 我们可以使用客户端来管理守护程序的许多不同组件,例如映像,容器, 络和数据量。
了解Docker的术语后,我们现在可以看看客户端如何与Docker主机进行对话
> Visualization of how client talks to the Docker host (src: https://nickjanetakis.com/blog/understa
· 左侧的客户端是我们运行各种Docker命令的地方。 可以将其安装在我们的操作系统上。
· Docker主机是运行Docker守护程序的服务器。 客户端和守护程序不必位于同一操作系统上。
· Docker注册表以查找和下载Docker映像
容器编排
容器编排是基于多个集群上微服务的自动管理和调度应用程序个人工作的过程。 它专注于管理容器及其动态环境的生命周期。
为什么我们需要容器编排?
容器编排用于自动执行以下任务:
· 配置和计划容器。
· 容器的部署。
· 容器的可用性。
· 根据运行它们的容器来配置应用程序。
· 扩展容器以平均平衡整个基础架构中的应用程序工作负载。
· 容器之间的资源分配。
· 容器的负载平衡,流量路由和服务发现。
· 容器的健康监控。
· 确保容器之间的交互。
容器编排如何工作?
首先,配置文件告诉容器编排工具如何在容器之间联 以及将日志存储在何处。
然后,编排工具将容器部署调度到群集中,并确定该容器的最佳主机。 确定主机后,编排工具将管理容器的生命周期。 容器编排工具可以在运行容器的任何环境中工作。
用于管理,扩展和维护容器化应用程序的工具称为协调器。 最常见的协调器是Kubernetes和Docker Swarm。
Docker Swarm与Kubernetes
Docker Swarm可以在容器从其他容器中找到现有容器映像时运行应用程序,并将容器部署在笔记本电脑,服务器或云(公共云或私有云)上。
另一方面,Kubernetes允许通过容器编排引擎进行容器集群。 Kubernetes具有声明式管理,因此一点也不复杂。 它也是开源的,因此可以在任何地方运行。
我们什么时候使用Docker Orchestration?
少量用户使用的简单的容器化应用/ 络并不需要编排。 但是,如果您拥有具有许多功能的复杂应用程序,那么编排就可以解决。 这是我们使用编排的时间:
· 当我们的应用程序很复杂时。 如果我们的应用程序涉及两个以上的容器,则最好使用编排。
· 当我们的应用程序对伸缩性和弹性有很高的要求时。 协调器让我们平衡负载并旋转容器以满足需求。 它确定系统的状态,而不是手动编码对变化的条件的所有反应。
· 当您想充分利用现代CI / CD技术时。 编排系统支持使用蓝/绿部署或滚动升级的应用程序的部署模式。
如何设置Docker
· 下载并安装Docker Desktop
· 为Mac安装Docker
· 为Windows安装Docker
2.测试Docker版本
打开终端并运行
docker –version
> Check Docker version. src: https://docs.docker.com/get-started/
3.测试您好世界Docker映像
> Run hello-world. src: https://docs.docker.com/get-started/
4.列出您下载到计算机上的hello-world映像
docker image ls
5.列出hello-world容器
> List of hello-world container. src: https://docs.docker.com/get-started/
以下是一些您可以使用的Docker命令:
> Docker commands (src: https://www.guru99.com/docker-tutorial.html#8)
结论
Docker是一个用于开发,交付和运行应用程序的开放平台。 Docker使您能够将应用程序与基础架构分开,从而可以快速交付软件。 通过使用Docker,您可以大大减少编写代码和在生产环境中运行代码之间的延迟。
参考文献:
· https://www.guru99.com/docker-tutorial.html#8
· https://docs.docker.com/get-started/
· https://nickjanetakis.com/blog/understanding-how-the-docker-daemon-and-docker-cli-work-together
· https://geekflare.com/docker-vs-virtual-machine/
· https://martinfowler.com/architecture/
· https://www.ibm.com/developerworks/rational/library/feb06/eeles/index.html
声明:本站部分文章及图片源自用户投稿,如本站任何资料有侵权请您尽早请联系jinwei@zod.com.cn进行处理,非常感谢!