中间件的一些认知
中间件的一些认知
1. 什么是中间件
将具体业务和底层逻辑解耦的组件。
大致的效果是: 需要利用服务的人(前端写业务的),不需要知道底层逻辑(提供服务的)的具体实现,只要拿着中间件结果来用就好了
说法一:介于操作系统和应用程序之间的产品。*也不单单局限于操作系统
2. 中间件的好处
中间件能给客户带来什么?
- 为上层应用软件的开发提供便捷的、开箱即用的服务交互和计算的能力,缩短开发周期;
- 屏蔽底层runtime的差异;
- 节省应用本身的系统资源,减少运行成本。
3.评判关键
从定义可以总结出评判的几个地方
性质:中间件是软件。
作用层级:系统软件和应用软件之间、软件各部件之间;管理客户机与系统软件之间的计算资源和网络通信。
服务对象:中间件为应用软件服务,应用软件为最终用户服务,最终用户并不直接使用中间件。
4. 常用基础中间件
- 路由与web服务器
处理和转发其他服务器通信数据的服务器。 如被业界广泛使用的阿里基于 Nginx 研发的 Tengine、阿里内部的集中式路由服务 VipServer
RPC框架:
微服务时代的远程服务调用框架。如grpc, Thrift, 阿里的 HSF, Dubbo, SOFA-RPC
消息中间件
支持在分布式系统之间发送和接收消息的软件。 如 Apache kafka, Apache RabbitMQ, NSQ, 阿里孵化开源的 Apache RocketMQ
缓存服务:
分布式的高速数据存储层,一般是内存存储。如 阿里 Tair,业界的 Redis, Memcached, Ehcache
配置中心:
用来统一管理各个项目中所有配置的系统。如 阿里 Nacos、携程 Apollo、百度 Disconf
分布式事务:
事务的参与者、支持事务的服务器、资源服务器以及事务管理器分别位于不同的分布式系统的不同节点之上。 如 阿里 seata、腾讯 DTF
任务调度:
分布式环境下提供定时、任务编排、分布式跑批等功能的系统。如 阿里 SchedulerX、业界 xxl-job、当当 elastic-job、有赞 TSP
数据库层:
用于支持弹性扩容和分库分表的 TDDL,数据库连接池 Driud, Binlog 同步的 Canal 等。