Architecture 开始考虑公共网站的三层拱门有什么标准

Architecture 开始考虑公共网站的三层拱门有什么标准,architecture,scalability,Architecture,Scalability,在决定对公共网站使用3T或2T arch之前,有没有什么标准需要了解/考虑?为了避免混淆,这里我将Tier称为独立的物理服务器,web浏览器不算是一个Tier,比如说3T: T1-Web服务器:您托管公共前端UI的地方,可以是MVC、JSF、ASP.NET Web表单等。。。等 T2-应用程序:您在其中托管业务web服务SOAP、REST等 T3-DB:数据库服务器、Oracle、SqlServer等 其中2T仅表示web服务器和DB,业务仍然是分开的,但在运行web服务器的同一进程中执行

在决定对公共网站使用3T或2T arch之前,有没有什么标准需要了解/考虑?为了避免混淆,这里我将Tier称为独立的物理服务器,web浏览器不算是一个Tier,比如说3T:

  • T1-Web服务器:您托管公共前端UI的地方,可以是MVC、JSF、ASP.NET Web表单等。。。等
  • T2-应用程序:您在其中托管业务web服务SOAP、REST等
  • T3-DB:数据库服务器、Oracle、SqlServer等
其中2T仅表示web服务器和DB,业务仍然是分开的,但在运行web服务器的同一进程中执行

有人可能会说3T更具可扩展性。如果我们考虑纵向,这是正确的,但是我们是否可以通过在负载平衡器后面放置更多的Web服务器实例来实现横向的可伸缩性呢?是否有任何标准或备忘表需要了解,感谢专家在这方面的意见


如果stackoverflow不适用于这些类型的问题,我不知道还剩下什么?int-swapping?

我发现这个博客谈论的是某种产品,我想,但我相信同样的原则也适用

作者列出了帮助做出决策的五个标准(属性):

  • 安全性-一些组织,如金融机构,有网络策略,声明前向网站不能直接与数据库通信。这些组织要求数据库位于一个网络上,而这个网络无法从面向前方的网站访问到。在这种情况下,需要三层体系结构,因为它满足此网络策略,因为前向前端网站仅与中间层通信,不了解任何数据库
  • 可扩展性-您可能正在开发一个需要能够处理季节性流量高峰的营销网站。为了满足这一要求,您可能需要在短时间内扩大可用前端机器的数量。由于前端具有非常小的Ektron占地面积(没有Ektron安装、很少的DLL、没有工作区),所以水平扩展非常简单。例如,使用AmazonEC3,您可以通过增加前端的新机器实例轻松地进行水平扩展
  • 性能-为了在三层体系结构中最大限度地减少前端和中间层服务器之间的聊天,Ektron提供了一个缓存层,该层位于框架API的正下方,位于前端。该层处理数据的透明存储、检索和过期。从技术上讲,这个缓存层也可以在2层体系结构中使用——但考虑到它在最小化对中间层的网络请求和提高性能方面的作用,尤其是在使用3层时,需要记住这一点
  • 可用性-如果您具有特别高的UpTimes要求,您可以考虑三层来从前端内存服务缓存数据,即使在中间层或数据库不可用的情况下。
  • 互操作性—使用3层打开了在交付层上使用任何web应用程序框架的可能性,例如ASP.NET web表单(web应用程序)、web表单(web站点),甚至ASP.NET MVC。服务层也可以被任何可以与WCF服务层(Java等)通信的前端应用程序使用

在stackoverflow上存在类似的问题:。 大多数答案都是为了实现可伸缩性而不追求3T。默认情况下,除非出现可伸缩性以外的其他因素,否则应考虑两层