您当前的位置:首页 > 电脑百科 > 程序开发 > 架构

什么是N层体系结构?

时间:2019-09-02 11:56:29  来源:  作者:

在传统上,开发应用程序是分层的,MVC这种是常常被用到的。这里的N层体系结构更关注的服务之间的层次结构,而不是单应用内部的。和微服务不同的是,微服务之间的关系是平等的,而N层体系结构中的层与层之间有前后关系。这种体系结构,在实践中非常广泛,在微服务的设计中,某些微服务就具有这样的特性,只能在某个层提供服务。

微软把这种体系结构拿出来,我认为是可取的,让我们对程序之间的调用模式,有了更丰富的理论体系支撑。

欢迎关注我。

N 层体系结构将应用程序分成逻辑层和物理层。

微软:什么是N层体系结构?

 

层是分离职责和管理依赖关系的方式。 每个层都有特定的责任。 较高层可使用较低层中的服务,反之则不行。

层在物理上是分隔开的,在不同的计算机上运行。 一个层可直接调用另一个层,或使用异步消息传递(消息队列)。 虽然每个层可能托管在自己的层中,但这并不是必需的。 多个层可能托管在同一层上。 在物理上分隔层可以提高可伸缩性和复原能力,但因额外的网络通信也增加了延迟。

传统的三层应用程序有表示层、中间层和数据库层。 中间层是可选的。 更复杂的应用程序可以多于三层。 上图显示具有两个中间层,且封装了不同功能区域的应用程序。

N 层应用程序可以有封闭的层体系结构或开放的层体系结构:

  • 在封闭的层体系结构中,层只能调用紧邻的下一层。
  • 在开放的层体系结构中,层可以调用它下面的任何层。

封闭的层体系结构限制层之间的依赖关系。 但是,如果一个层仅将请求传递到下一层,可能会产生不必要的流量。

何时使用此架构

N 层体系结构通常作为服务架构 (IaaS) 应用程序实现,每个层都在独立的 VM 集中运行。 然而,N 层应用程序不需要只是 IaaS。 通常,对体系结构的某些部分使用托管服务是有利的,特别是缓存、消息传递和数据存储。

请考虑将 N 层体系结构用于:

  • 简单的 Web 应用程序。
  • 将本地应用程序迁移到 Azure 并进行最小的重构。
  • 统一开发本地和云应用程序。

N 层体系结构在传统的本地应用程序中很常见,因此将现有工作负载迁移到 Azure 是很适合的。

优点

  • 云与本地之间,云平台之间具有可移植性。
  • 对于大多数开发者来说,学习曲线较少。
  • 从传统应用程序模型自然演变。
  • 对异构环境 (windows/linux) 开放

挑战

  • 很容易最终得到一个只在数据库上执行CRUD操作的中间层,在不做任何有用工作的情况下增加额外的延迟。
  • 单一式设计阻止了独立部署各项功能。
  • 管理 IaaS 应用程序的工作量要大于管理只使用托管服务的应用程序。
  • 管理大型系统中的网络安全比较困难。

最佳做法

  • 使用自动缩放处理负载中的更改。
  • 使用异步消息传递来分离层。
  • 缓存 semistatic 数据。
  • 配置高可用性,如使用的解决方案的数据库层SQL Server Always On 可用性组。
  • 在前端和 Internet 之间放置 Web 应用程序防火墙 (WAF)。
  • 将每个层放置在自己的子网中,并将子网用作安全边界。
  • 通过仅允许来自中间层的请求,限制对数据层的访问。

转自:https://docs.microsoft.com/zh-cn/azure/architecture/guide/architecture-styles/n-tier



Tags:N层体系结构   点击:()  评论:()
声明:本站部分内容及图片来自互联网,转载是出于传递更多信息之目的,内容观点仅代表作者本人,如有任何标注错误或版权侵犯请与我们联系(Email:2595517585@qq.com),我们将及时更正、删除,谢谢。
▌相关推荐
在传统上,开发应用程序是分层的,MVC这种是常常被用到的。这里的N层体系结构更关注的服务之间的层次结构,而不是单应用内部的。和微服务不同的是,微服务之间的关系是平等的,而N层...【详细内容】
2019-09-02  Tags: N层体系结构  点击:(146)  评论:(0)  加入收藏
▌简易百科推荐
为了构建高并发、高可用的系统架构,压测、容量预估必不可少,在发现系统瓶颈后,需要有针对性地扩容、优化。结合楼主的经验和知识,本文做一个简单的总结,欢迎探讨。1、QPS保障目标...【详细内容】
2021-12-27  大数据架构师    Tags:架构   点击:(5)  评论:(0)  加入收藏
前言 单片机开发中,我们往往首先接触裸机系统,然后到RTOS,那么它们的软件架构是什么?这是我们开发人员必须认真考虑的问题。在实际项目中,首先选择软件架构是非常重要的,接下来我...【详细内容】
2021-12-23  正点原子原子哥    Tags:架构   点击:(7)  评论:(0)  加入收藏
现有数据架构难以支撑现代化应用的实现。 随着云计算产业的快速崛起,带动着各行各业开始自己的基于云的业务创新和信息架构现代化,云计算的可靠性、灵活性、按需计费的高性价...【详细内容】
2021-12-22    CSDN  Tags:数据架构   点击:(10)  评论:(0)  加入收藏
▶ 企业级项目结构封装释义 如果你刚毕业,作为Java新手程序员进入一家企业,拿到代码之后,你有什么感觉呢?如果你没有听过多模块、分布式这类的概念,那么多半会傻眼。为什么一个项...【详细内容】
2021-12-20  蜗牛学苑    Tags:微服务   点击:(9)  评论:(0)  加入收藏
我是一名程序员关注我们吧,我们会多多分享技术和资源。进来的朋友,可以多了解下青锋的产品,已开源多个产品的架构版本。Thymeleaf版(开源)1、采用技术: springboot、layui、Thymel...【详细内容】
2021-12-14  青锋爱编程    Tags:后台架构   点击:(21)  评论:(0)  加入收藏
在了解连接池之前,我们需要对长、短链接建立初步认识。我们都知道,网络通信大部分都是基于TCP/IP协议,数据传输之前,双方通过“三次握手”建立连接,当数据传输完成之后,又通过“四次挥手”释放连接,以下是“三次握手”与“四...【详细内容】
2021-12-14  架构即人生    Tags:连接池   点击:(17)  评论:(0)  加入收藏
随着移动互联网技术的快速发展,在新业务、新领域、新场景的驱动下,基于传统大型机的服务部署方式,不仅难以适应快速增长的业务需求,而且持续耗费高昂的成本,从而使得各大生产厂商...【详细内容】
2021-12-08  架构驿站    Tags:分布式系统   点击:(23)  评论:(0)  加入收藏
本系列为 Netty 学习笔记,本篇介绍总结Java NIO 网络编程。Netty 作为一个异步的、事件驱动的网络应用程序框架,也是基于NIO的客户、服务器端的编程框架。其对 Java NIO 底层...【详细内容】
2021-12-07  大数据架构师    Tags:Netty   点击:(17)  评论:(0)  加入收藏
前面谈过很多关于数字化转型,云原生,微服务方面的文章。虽然自己一直做大集团的SOA集成平台咨询规划和建设项目,但是当前传统企业数字化转型,国产化和自主可控,云原生,微服务是不...【详细内容】
2021-12-06  人月聊IT    Tags:架构   点击:(23)  评论:(0)  加入收藏
微服务看似是完美的解决方案。从理论上来说,微服务提高了开发速度,而且还可以单独扩展应用的某个部分。但实际上,微服务带有一定的隐形成本。我认为,没有亲自动手构建微服务的经历,就无法真正了解其复杂性。...【详细内容】
2021-11-26  GreekDataGuy  CSDN  Tags:单体应用   点击:(35)  评论:(0)  加入收藏
相关文章
    无相关信息
最新更新
栏目热门
栏目头条