面试官:老铁,说说中间件是什么? 求职者:嗯,,额,,,中间件好像是,,,一种连接redis用的东西,,嗯……平时老用,有点说不出来,不好意思。 面试官:紧张了,老铁? 求职者:也不是,平时真的经常用,就是说不出来。 面试官:对原理理解不到位哦 求职者:.....
神奇吧? 平时老用,关键时刻说不出来。 类似的问题还有:来和我说说jvm是什么?java是什么?内存回收是什么?微服务是什么?SDK是什么?library和framework有啥区别?组件化是什么?……
求职者:能不能不要考概念,问我做过的东西好么?崩溃!
言归正传,我们讨论下如何快速掌握一个知识点然后马上可以和面试官拽一拽,其实就是走个流程。
第一步:找到定义
找定义最好上维基百科,大家看到维基百科的定义是:是一类提供系统软件和应用软件之间连接、便于软件各部件之间的沟通的软体,应用软件可以借助中间件在不同的技术架构之间共享信息与资源。
第二步:定义拆解
把定义抄到一张纸上
中间件是一类提供系统软件和应用软件之间连接、便于软件各部件之间的沟通的软体,应用软件可以借助中间件在不同的技术架构之间共享信息与资源。
从定义中我们看到
1) 中间件是一类软体(软体就是软件咯 software)
2) 应用软件借助中间件共享信息和资源。
3) 中间件提供系统软件和应用软件之间的连接
4) 中间件便于软件各部件之间的沟通
5) 不同的技术架构之间可以利用中间件共享信息资源
第三步:找到生活中的例子-向定义映射
互联网上有很多人讲中间件,会用生活中的例子。可以在知乎搜一下。
点进去看到 @Gocy 大佬的回答,开炸鸡店的例子,然后发现中间件实际上是中间代理商。
模型映射
提供鸡肉的代理商是一类软件
你的炸鸡店也是一类软件
屠宰场是一类软件
屠宰场是系统软件,炸鸡店是应用软件(映射定义)
深层映射
炸鸡店(应用软件)利用提供鸡肉的代理商(中间件)共享信息和资源(例如:发布求购单)
多个屠宰场(不同系统架构)利用代理商(中间件)共享信息和资源(例如:向炸鸡店供货)
第四步:找到真实场景
搜索百度图片,中间件。
第一张图:
第二张图:
第一张图,用户的请求到了网关后,由中间件向用户提供「QA服务」「一卡通服务」「电子商务服务」。继续往定义上套:这些服务通过中间件向网关共享信息和资源。第二张图数据库中间件向应用服务器共享是信息和资源。继续套:当「数据库中间件」背后的底层(屠宰场)变化的时候,应用服务器无感知,每次数据库中间件给应用服务器提供最好的信息和资源。
第五部:Coding场景
知识到上面这种程度,不能算学会,记住:“Talk is cheap , show me the code”,一定要实践。
下面找到一个阿里云请求kafka中间件sdk的示例,就知道大神门是怎么封装中间件啦。
第六步:用自己的语言说出来
比如:中间件和代理商有点相似,中间件一方面集中了自己背后最优质的信息和资源,一方面向自己的用户(也就是应用程序)提供这些资源,这种情况是数据库中间件;另一方面,应用程序之间也可以通过代理商共享信息和资源,这种情况是消息队列。无论哪种情况,中间件让应用程序不再需要理解底层,这样提高了整个系统的可用性和服务质量。
总结
怎么样?懂么嘛? 学习就是一个流程,每个知识点都走一遍,你就不怕面试啦。