码迷,mamicode.com
首页 > 其他好文 > 详细

如何通俗理解中间件

时间:2018-10-16 19:22:35      阅读:226      评论:0      收藏:0      [点我收藏+]

标签:开发   调用   传输   核心   一个   sdk   被锁   自己的   操作   

中间件一开始是为了解决一个很头疼的问题: Java 无法直接操纵内存,内存访问必须经过 JVM ( Java 虚拟机)。因此,直接操纵内存的部分最好由 C/C++来完成,再由 Java 调用 C/C++的函数。这样一来,就有了专门用 C/C++开发的中间件,供 Java 调用。

后来,在数据库的不断发展中,人们意识到直接操纵数据库并不是一个很好的做法,因为操纵数据库本质上是用共享内存(多进程,多 CPU 核心,甚至多 CPU 共享同一块内存)实现的,而共享内存会带来很多问题,例如,在老一些的 CPU 型号上,如果某个 CPU 核心发现要访问的内存不在自己的 L1 缓存上,也不在共享 L2 缓存上,那就会锁住寻址总线,并按照 L3->L2->L1 的顺序来传输数据,全程耗时大概为 300 ~ 500 纳秒,而一个加法指令的耗时才不到 2 纳秒。这样一来,如果多个进程共享一块内存,那就很可能导致寻址总线频繁被锁死,软件运行的效率非常非常低。中间件可以很大地改善这个问题:用专有的进程来访问数据库。这样,只有中间件的进程才能访问数据库,如果把中间件的进程与 CPU 核心进行绑定,那就能一劳永逸地解决总线锁死问题,因为其他线程永远不需要访问数据库。有些老外意识到了这个问题,并编写了相应的解决方案,命名为“中间件”。

因此,我们口中的“中间件”一般有两个含义,一个含义是数据库中间件,另一个含义类似于 SDK ,但无论如何,意思都是一样的:当前编程平台并不能有效地操作目标平台的数据,因此需要一个中间平台来改善访问。

如何通俗理解中间件

标签:开发   调用   传输   核心   一个   sdk   被锁   自己的   操作   

原文地址:https://www.cnblogs.com/Roni-i/p/9799925.html

(0)
(0)
   
举报
评论 一句话评论(0
登录后才能评论!
© 2014 mamicode.com 版权所有  联系我们:gaon5@hotmail.com
迷上了代码!