万能钥匙-中间层
最近小菜刀重读《程序员的自我修养》,里面提到过一句名言:计算机科学领域的任何问题都可以通过增加一个间接的中间层来解决。
上述名言概括了计算机系统软件体系结构的设计要点,整个体系结构从上到下都是按照严格的层次结构设计的。不仅是计算机系统软件整个体系是这样的,体系里面的每个组件比如操作系统本身,应用程序、软件系统甚至很多硬件结构都是按照这种层次的结构组织和设计的。
下面,本文举例带领大家体会这种中间层理念。
01
计算机软件体系结构
,大多数数据比较少被访问(冷数据)。
如果网站对冷热数据都通过传统RDS数据库处理,例如MySQL,那么在当该网站的访问量达到一定规模时,数据库的IO操作很容易进入性能瓶颈。因此,引入了中间层即内存数据库,作为热数据的缓存。因为内存数据库,例如Redis,它们的数据运行在内存当中,IO响应会非常的快,所以可以很好地解决上述问题。
04
中间件技术
中间件可能是诠释中间层理念的最佳实践,以下是维基百科给出的中间件示意图。
。
常见的有消息中间件、数据库中间件、web中间件,容器等。以目前很火的MQ消息中间件为例,它的出现能够帮助系统对用户请求异步处理、应用解耦和流量削峰等。
05
总结
“计算机科学领域的任何问题都可以通过增加一个间接的中间层来解决”。中间层思想的实践在计算机科学领域中无处不在。除上述之外,代理服务、池技术、网络协议、以及现在热炒的数据中台等,无一不在践行着中间层理念。如果你现在的项目中,交互的两者存在某些不可避免的障碍,不妨考虑是否可通过引入新的中间层解决该问题。
** **
参考: