能不能举出具体的例子和应用方式呢?谢谢
1
tonyVex 2016-01-20 16:01:17 +08:00
例如消息中间件?
|
2
500miles 2016-01-20 16:02:06 +08:00 1
@公务员
他们最熟悉了 |
3
mzer0 2016-01-20 16:15:55 +08:00 9
这种问题你不如上知乎搜一搜,或者在知乎上问。 StackOverflow 或者 Quora 也是很好的选择。
中间件一开始是为了解决一个很头疼的问题: 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 ,但无论如何,意思都是一样的:当前编程平台并不能有效地操作目标平台的数据,因此需要一个中间平台来改善访问。 |
4
watzds 2016-01-20 18:31:00 +08:00 via Android
广义来说,处于操作系统和应用程序之间的软件。
分布式系统里,是指将多台机器组合成一个整体的软件。 |
5
xiaoshenke 2016-01-21 00:34:04 +08:00
一些通用或特殊库?
|
6
xiamingchong 2016-01-21 09:41:31 +08:00
@500miles 内涵啊
|
7
master13 2016-01-21 11:26:56 +08:00
你比如说吧,你的欲望和你的精华,你现在并没有欲望去搞出点精华来,但是你通过看视频节目,达到了这个目的,那这个视频节目就是中间件。
|