互联网架构-中间件面试必看
Posted 白-胖-子
tags:
篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了互联网架构-中间件面试必看相关的知识,希望对你有一定的参考价值。
中间件是为软件和软件通信提供服务的软件
中间件的定义
-
中间件(英语:Middleware),又译中间件、中介层,是一类提供系统软件和应用软件之间连接、便于软件各部件之间的沟通的软件,
-
应用软件可以借助中间件在不同的技术架构之间共享信息与资源。
-
中间件位于客户机服务器的操作系统之上,管理着计算资源和网络通信。 – 维基百科
-
说人话:中间件是程序(应用)和程序(应用)利用接口API通信的中间程序,中间件为软件和软件间的通讯提供服务
中间件释义
- IDC的定义:中间件是一种独立的系统软件服务程序,分布式应用软件借助这种软件在不同的技术之间共享资源,中间件位于客户机服务器的操作系统之上,管理计算资源和网络通信。
- 从这个意义上可以用一个等式来表示中间件:中间件=平台+通信,这也就限定了只有用于分布式系统中才能叫中间件,同时也把它与支撑软件和实用软件区分开来。
中间件在集群架构中的位置
- 以消息队列中间件为例,中间件位于生产者服务集群和消费者服务集群的中间
中间件作用
- 流量削峰 前台请求进入消息队列进行排队,避免了大量请求直接对后端应用和服务器的直接压力
- 应用解耦 应用通过注册中心取得接口,通过接口进行相互调用,应用只需要和注册中心建立耦合关系,而不需要操心和其他那么多其他应用的耦合关系
- 异步负载 解决因同步系统性能(并发量,吞吐量,响应时间)瓶颈问题
为什么使用中间件?
- 中间件屏蔽了底层操作系统的复杂性,使程序开发人员面对一个简单而统一的开发环境,
- 减少程序设计的复杂性,将注意力集中在自己的业务上,
- 不必关心不同应用,不同语言,不同系统上的调用关系,节约开发成本的同时节约运营成本。
如何判断一个软件程序是不是中间件
-
性质:中间件是软件。
-
作用层级:系统软件和应用软件之间、软件各部件之间;管理客户机与系统软件之间的计算资源和网络通信。
-
服务对象:中间件为应用软件服务,应用软件为最终用户服务,最终用户并不直接使用中间件。
常用中间件
1. 开发相关中间件
- 消息中间件:支持在分布式系统之间发送和接收消息的软件。
如 Apache kafka, Apache RabbitMQ, NSQ, 阿里孵化开源的 Apache RocketMQ - RPC框架:微服务时代的远程服务调用框架。
如grpc, Thrift, 阿里的 HSF, Dubbo, SOFA-RPC
2. 数据库缓存中间件
- 数据库层 用于支持弹性扩容和分库分表的 TDDL,数据库连接池 Driud, Binlog 同步的 Canal 等。
- 缓存服务: 分布式的高速数据存储层,一般是内存存储。
如 阿里 Tair,非关系型数据库 Redis, Memcached, Ehcache
3. 其他业务辅助相关中间件
- 配置中心:用来统一管理各个项目中所有配置的系统。
如 阿里 Nacos、携程 Apollo、百度 Disconf - 分布式事务:事务的参与者、支持事务的服务器、资源服务器以及事务管理器分别位于不同的分布式系统的不同节点之上。
如 阿里 seata、腾讯 DTF - 任务调度:分布式环境下提供定时、任务编排、分布式跑批等功能的系统。
如 阿里 SchedulerX、业界 xxl-job、当当 elastic-job、有赞 TSP - 路由与web服务器:处理和转发其他服务器通信数据的服务器。
如被业界广泛使用的阿里基于 nginx 研发的 Tengine、阿里内部的集中式路由服务 VipServer
以上是关于互联网架构-中间件面试必看的主要内容,如果未能解决你的问题,请参考以下文章
面试官:消息中间件如何实现每秒几十万的高并发写入?石杉的架构笔记
快速上手SpringCloud微服务系统架构+常用中间件服务