到底是Tier还是Layer?

当Tier遇到Layer


看到论坛上有人问到Tier和Layer的区别,这里详细论述一下,大家共同探讨。

1。横向与纵向
有一种说法是“Layer是水平方向的,tier是垂直方向的”
这种说法首先容易给人造成下面这样的误解
|||| <-- Layer

--
--  <-- tier
--
其实两者表示起来恰恰相反,
|||| <-- Tier

--
--  <-- Layer
--
这种说法的确切含义是“Layer是水平方向<切割>的,tier是垂直方向<切割>的”
但是水平与垂直不过是个观察角度的问题,所以这种说法并没有揭示本质。

2。物理与逻辑
另外一种说法是“Tier表示物理分布,layer表示逻辑分布”。
可是在很多书籍里却把3-tier的层分别叫做“表示layer”,“业务逻辑layer”和“数据存储layer”。
却又分明在暗示tier和layer是没有区别的。

的确,简单来说Tier表示物理上的层次划分,Layer表示逻辑上的层次划分,这一点是很多人都同意的。
但是逻辑上的东西终有一天需要映射到物理分布上,当一个Layer恰好占据了一个Tier时,应该叫它什么呢?
这就是混乱的来源。N-tier就是这种混乱的典型代表。

从逻辑上来讲,你永远可以把一个应用系统划分为“表示layer”,“业务逻辑layer”和“数据存储layer”。
但是在映射到物理分布的时候,最早的方案只能把三者放到一台机器上,比如用sql直接查询数据库。
再后来,可以把“表示layer”和“业务逻辑layer”放到一台机器上,数据库单独放,这就是所谓的c/s结构。
到了应用服务器的年代,终于可以把三者分别放到三台机器上了。客户端机器放表示layer,应用服务器
放业务逻辑layer,数据库机器放数据存储layer。这样从物理上看,我们就有了3个tier,只不过恰好每个
tier都host了一个layer。更加有意思的是,每个物理上的tier可以不是1台机器,而是一组完成同样功能
的机器,从这个角度来说,tier也是一个逻辑上的概念。

更加有趣的问题是,“可以放到3个tier上”和“一定要放到3个tier上”还不是一回事,如果把我们的三个逻辑
层次都放到1台(组)机器上时,这是个几tier的架构呢?当然还是3tier,因为你有能力随时把3者分布出去,
而不会被一定限制在一台(组)机器上。这样看来,对3tier架构里的层使用layer的称呼总是很保险的。
因为它不会暗示分布性。

除了物理与逻辑上的区别外,layer一般还暗示了“下面的layer一般要为上面的layer提供服务”,
而tier这种暗示的意味很弱。可以看一下java的体系结构图来理解这一点。

3。c/s与b/s
经常看到这样的说法“c/s结构是2-tier的,b/s结构是3-tier或者N-tier的”。
我觉得这里面存在着一个对c/s重大的误解。
首先c/s的出现是对直接操作数据库的一次颠覆,客户端与服务器终于可以分开了,它仅仅是做了一个最大
范围的划分,把机器的世界分为了客户端与服务器,并没有暗示客户端与服务器只能各自是一个tier,只不过
在这个名词出现的年代,还不可能分出更多的层。
b/s结构突出的特点是客户端使用了浏览器,从大范围上来讲,也是客户端与服务器两个层次,只不过由于
浏览器这个客户端的功能实在是太弱了,不可能直接操作数据库,直接导致了b/s结构至少是3-tier的。
因此,说c/s结构是2-tier的,至少是不准确的,一个swing的客户端调用EJB,EJB访问数据库,这样的结构
当然是3-Tier的,偏偏它怎么讲都是一个c/s结构。
因此b/s结构不过是c/s结构的一个特例而已,与tier无关。

4。N-tier与N-layer
我们也经常看到N-tier这样的说法,但是实际钻研下去却发现,分的不是tier而是layer。
前面说过,严格tier的定义是一个tier是完成同样功能的一组机器,按照这样的定义,实际上我们能做到
物理分布的tier实在是不多。
客户机->web服务器->应用服务器->数据库,如此而已,如果想要更多的tier,只能自己写服务了,或者把
应用服务器这个层次分为若干的tier。
更多的时候,也是更有意义的是做好layer的划分,这样在必要的时候才有可能把layer分布到tier上去。

除了1个tier可以host多个layer外,某些layer也可能会分布到很多个tier上,比如提供基础公共服务的layer。
对于rich client的应用来说,JDK这个layer需要同时分布在客户端与服务器上。


转自【 hippiewolf
### Smart Tier in Storage and Data Management Smart Tier refers to a technology used primarily within storage systems that dynamically allocates data across different types of storage media based on access patterns, performance requirements, and cost considerations[^1]. This approach aims to optimize both the efficiency and cost-effectiveness of storing vast amounts of information by placing frequently accessed ("hot") data onto high-performance but more expensive storage tiers such as solid-state drives (SSDs), while less active ("cold") data resides on slower yet cheaper options like hard disk drives (HDDs). The implementation involves continuous monitoring mechanisms which analyze how often specific pieces of content are requested over time. Based upon these insights, algorithms decide when it's appropriate to migrate certain datasets between various levels without manual intervention from administrators[^2]. In addition, this concept aligns closely with modern trends towards autonomous database administration where automation plays an increasingly significant role not only managing traditional relational databases but also extending into big-data environments including those utilizing large language models for advanced analytics purposes[^3]. Furthermore, integrating blockchain technologies could enhance security measures ensuring integrity throughout all operations involving tiered storages solutions potentially offering new opportunities regarding transparency during transactions related processes[^4]. ```python class SmartTierSystem: def __init__(self): self.tiers = { 'high': [], # SSD-based fast-access layer 'medium':[], # Hybrid medium-speed section 'low' :[] # HDD-backed slow-retrieval area } def move_data(self, dataset_id, current_tier, target_tier): """Simulates moving a given set among available layers.""" if dataset_id in self.tiers[current_tier]: self.tiers[target_tier].append(dataset_id) self.tiers[current_tier].remove(dataset_id) # Example usage demonstrating migration logic smart_storage = SmartTierSystem() smart_storage.move_data('dataset_001', 'low','high') ```
评论 1
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值