如何通俗理解中间件

中间件一开始是为了解决一个很头疼的问题: 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 ,但无论如何,意思都是一样的:当前编程平台并不能有效地操作目标平台的数据,因此需要一个中间平台来改善访问。

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

时间: 2024-12-26 08:07:26

如何通俗理解中间件的相关文章

通俗理解数据库隔离机制

=========================================== 原文链接: 通俗理解数据库隔离机制   转载请注明出处! =========================================== 在理解数据库隔离机制的时候发现网上很多文章都是千篇一律,解释语言太过于标准书面化,描述的晦涩难懂,因果关系模糊.在这里将自己对隔离机制的理解描述一下,力争做到能够通过浅显的语言描述出来. 数据库隔离机制是对于多线程同时操作数据库而言的.对于单线程操作数据库不存在所谓

分布式理论之一:Paxos算法的通俗理解

维基的简介:Paxos算法是莱斯利·兰伯特(Leslie Lamport,就是 LaTeX 中的"La",此人现在在微软研究院)于1990年提出的一种基于消息传递且具有高度容错特性的一致性算法. Paxos算法目前在Google的Chubby.MegaStore.Spanner等系统中得到了应用,Hadoop中的ZooKeeper也使用了Paxos算法,在上面的各个系统中,使用的算法与Lamport提出的原始Paxos并不完全一样,这个以后再慢慢分析.本博文的目的是,如何让一个小白在半

Activity生命周期的通俗理解

一般一个Activity有三种状态: 1.在屏幕上是可见的且可操作的,他是活跃或运行状态,负责响应用户操作. 2.失去焦点但仍然可见时,他处于暂停状态.也就是说未被完全遮蔽,所以该Activity仍对用户可见,但是当系统处于繁忙的时候下,有肯会杀死该Activity. 3.完全被另一个Activity覆盖时处于停止状态.也有可能被杀死. Activity生命周期中各方法的调用情况 1.onCreate(Bundle savedStatus):第一次创建时调用,只调用一次. 2.onStart()

SSL服务器认证过程通俗理解!

理解有错误的地方,请高手指正! 1,CA中心,有一套自己的公钥和私钥,服务器用自己的私钥去生成一个自认证的证书 2,CA中心的自认证证书是有公信力的,一般被客户端所熟知,发放到每个客户端! 3,客户端需要将CA中的自认证证书加入信任列表! 4,服务器要加入CA体系,要向CA中心申请,CA中心验证了服务器的资料后,向server发放一个证书(key),里面包含了一个秘钥 5,CA发给server的证书是用CA自己的秘钥和申请者的秘钥(key)加密过的, 6,证书里面包含:申请者的身份信息.申请者公

关于面对对对象之接口的通俗理解

一些人写代码,按照计算机思考的那个模式写,写出来的代码,能实现功能,但是拓展性不好,而有些人写代码,是按照人看世界的那些思路去写,写出来的代码 看起来像那么回事儿,而且也非常的符合逻辑,这是为什么?为什么同样是写代码,为什么写出来的东西会完全不一样了? 最近一直在反思自己写的代码,以前写,都是为了完成某项功能而写,写完了也就完事儿了,可是最近却不是这样了,最近想打问题是,写代码是不是只要在实现功能的层面上就可以了了?后来得出的答案是,代码其实还可以写的更加的灵活多变一点的 那么今天我们就来谈谈关

网络七层协议的通俗理解

OSI七层模式简单通俗理解 这个模型学了好多次,总是记不住.今天又看了一遍,发现用历史推演的角度去看问题会更有逻辑,更好记.本文不一定严谨,可能有错漏,主要是抛砖引玉,帮助记性不好的人.总体来说,OSI模型是从底层往上层发展出来的. 这个模型推出的最开始,是是因为美国人有两台机器之间进行通信的需求. 需求1: 科学家要解决的第一个问题是,两个硬件之间怎么通信.具体就是一台发些比特流,然后另一台能收到. 于是,科学家发明了物理层: 主要定义物理设备标准,如网线的接口类型.光纤的接口类型.各种传输介

矢量控制的通俗理解

关于矢量控制,通俗理解是: 1. 先把电机想像成2块飞速旋转磁铁,定子磁铁和转子磁铁.进一步可以引申为定子磁场和转子磁场. 2. 电机的电磁转矩与定子磁场强度.转子磁场强度.2块磁铁之间的夹角的正弦成正比.关于这一点不难理解,两块磁铁对齐的时候(0度,sin0=0;),不存在电磁转矩:两块磁铁相差90度的时候(sin90=1;),电磁转矩达到顶峰:  3. 接下来控制的目标就是: 1)稳定其中的一个旋转磁场的强度(恒定磁场):  2) 控制磁铁之间角度为90度(磁场定向FOC): 3) 控制另一

通俗理解J2EE的13种规范

学习到Java就不得不了解为人熟知的13种规范,小编从网上各种搜集资料,可是都是一些专业性的术语,确实很令人费解,讲解的都很抽象.在小编的不懈努力之下,通过看别人的博客,汇总了以下的内容. 1.JDBC(java Database Connectivity):   官方:JDBC API为访问不同的数据库提供了一种统一的途径,就像ODBC一样,JDBC对开发者屏蔽了一些细节问题,同时,JDBC对数据库的访问也具有平台无关性. 小编:学习过.NET的一定了解ODBC,这是属于同一个性质的,就是为了

通俗理解TCP握手次数是三次

理解之后,应该说是至少三次就可以保证可靠传输了. 看到网上一篇帖子http://www.cnblogs.com/TechZi/archive/2011/10/18/2216751.html是这么说的,“我Google该问题答案后发现,网络上对于“三次握手”的过程都有很详细的描述,但对于为什么需要“三次握手”来建立连接却没有很好的答案.只能求助于书本了.”后面有谢希德树和另一本书的解释,其实还是太书面化,不够通俗,但是看到后面引到google论坛看到一个让我非常满意的答案. https://gro