如何通俗地理解 中间件技术?

2016-01-20 15:53:33 +08:00
 anonymoustian

能不能举出具体的例子和应用方式呢?谢谢

6857 次点击
所在节点    Java
7 条回复
tonyVex
2016-01-20 16:01:17 +08:00
例如消息中间件?
500miles
2016-01-20 16:02:06 +08:00
@公务员

他们最熟悉了
mzer0
2016-01-20 16:15:55 +08:00
这种问题你不如上知乎搜一搜,或者在知乎上问。 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 ,但无论如何,意思都是一样的:当前编程平台并不能有效地操作目标平台的数据,因此需要一个中间平台来改善访问。
watzds
2016-01-20 18:31:00 +08:00
广义来说,处于操作系统和应用程序之间的软件。
分布式系统里,是指将多台机器组合成一个整体的软件。
xiaoshenke
2016-01-21 00:34:04 +08:00
一些通用或特殊库?
xiamingchong
2016-01-21 09:41:31 +08:00
@500miles 内涵啊
master13
2016-01-21 11:26:56 +08:00
你比如说吧,你的欲望和你的精华,你现在并没有欲望去搞出点精华来,但是你通过看视频节目,达到了这个目的,那这个视频节目就是中间件。

这是一个专为移动设备优化的页面(即为了让你能够在 Google 搜索结果里秒开这个页面),如果你希望参与 V2EX 社区的讨论,你可以继续到 V2EX 上打开本讨论主题的完整版本。

https://www.v2ex.com/t/252131

V2EX 是创意工作者们的社区,是一个分享自己正在做的有趣事物、交流想法,可以遇见新朋友甚至新机会的地方。

V2EX is a community of developers, designers and creative people.

© 2021 V2EX