最近,我的一位朋友向我询问了N-Tier架构,我能够向他解释有关1,2和3层架构的示例。但是当我想提供超过3层的例子时,我被困住了。我用谷歌搜索并帮忙,但找不到任何体面的例子。
它被命名为N-tier这一事实使我认为'N'可以是从1开始的任何数字。但我找不到任何4或5层的例子。
有人可以分享一些涉及超过3层的N层架构的例子吗?
答案 0 :(得分:12)
答案 1 :(得分:5)
五分钟前我读过一篇文章 https://www.nginx.com/blog/time-to-move-to-a-four-tier-application-architecture
客户是您阅读的地方 Api或您的应用程序后端是您组装它的地方.. 数据聚合..要么通过外包的东西或数据库中的查询来进行jsons / xmls,最后服务层就是你在数据库上实际查询或在大数据上运行函数或从谷歌读取GPS位置和地图...就是我在这种情况下的看法。它只是将数据层从三层划分。
但是这个N层模型是完全抽象的,所以你可以撕掉你的基础设施,直到你只有一些逻辑上的原子部件。仍然划分了以前的结构。
答案 2 :(得分:1)
我倾向于不那么抽象和更实际的解释,该解释回答了以下问题:“如何以及为什么要将系统划分为多个层,并将它们放置在服务器上的什么位置?”
基本上,当您创建一个使用数据库的简单网站时,您已经具有“现成的”三层:
数据层-数据库。但是,如果您使用的是短暂的内存缓存或文件系统,那么我们可能会争论是否可以将其视为“层”。
应用程序层-在您的服务器上执行的代码。
表示(或客户端)层-在客户端计算机上执行并将结果呈现给客户端的代码
现在,我们如何获得第四层?
很可能不需要拆分客户端层。它在客户的设备上,我们希望使它尽可能简单有效。
我们可以拆分数据层吗?我已经看到一些系统具有围绕数据库,Azure Blob,文件系统等的API,以创建一些可以视为层级的子系统。但这是否仍是相同的数据层(即基本服务层),还是我们可以将其视为一个单独的实体?而且,如果我们将其分开,它是否将与数据库位于同一台物理(或虚拟)服务器上,从而可以保护数据免遭直接访问?
但是,在大多数情况下,是应用层被拆分了。
一个部分仍被命名为应用层。它成为一个内部API Web应用程序,并且位于可以访问数据库的安全区域中。没有人可以直接访问数据库,而只能通过此应用程序层。
另一部分通过某种连接(HTTP客户端等)成为应用层API的使用者。使用者可能被称为表示层(令人困惑-与客户端层不同吗?),即使它本身仅具有JSON API且没有任何用户友好格式。
但是随后出现了一个问题:在这种情况下,我们(开发人员)可能希望使我们的生活复杂化,并将我们的Web应用程序划分为表示层和应用程序层,而不是将它们保留在同一Web应用程序内?
在繁重的工作负载下,单独的应用程序层可能有利于可伸缩性,或者可能是安全性要求,以拒绝与暴露给用户(甚至是Intranet用户)的Web服务器的数据库连接。
我看到一些雄心勃勃的项目从一开始就进入了4层,然后因过度设计而大骂自己。您必须跟踪这些内部连接,安全性,身份验证令牌,控制套接字(不要在每个请求上打开新的HTTP连接),避免通过不小心创建的全局HTTP客户端实例等意外共享多个并行请求的数据。 / p>
答案 3 :(得分:0)
4层体系结构的一个简单示例是RMI JDBC Servlet。这涉及 客户层 Servlet的应用程序服务器 用于服务器程序的RMI服务器 用于数据库的Jdbc服务器
答案 4 :(得分:0)
这将取决于您要调用的层级。表示层的每个垂直层都可以称为一个层。
移动应用或网页前端(一页 Javascript 等)
缓存或 CDN(内容交付网络)作为另一层。
前端或 API 层
如果服务需要多个微服务,也可以拆分业务层。例如
然后将数据层拆分为:
数据库
数据湖
报告
企业服务总线
第三方访问数据(您的应用连接到其他 API)
答案 5 :(得分:-1)
四层架构由以下
组成一个。客户端层 - node.js angularJs等基本上独立于服务器端和UI团队独立工作在客户端工件上
湾聚合层---内容交付网络(akamai)
℃。 api tier - 所有服务器端调用的网关,可以有自己的缓存
d。服务层 - 包括内部或外部服务......