Please enable JavaScript.
Coggle requires JavaScript to display documents.
中间件 - Coggle Diagram
中间件
基础
作用
通信管理:不同服务之间通信,如消息队列、远程过程调用、服务总线等
安全性:提供认证、授权、加密和审计等
事务管理:分布式系统中的事务管理
负载均衡和容错:分配负载到多个服务器,通过高可用性和故障转移机制
数据管理:对数据库和其它数据存储系统进行配置和管理
服务发现和注册:管理和查找可用服务,支持动态配置和扩展
什么情况考虑使用中间件
集成系统:大量独立的系统
异构系统:不同操作系统、编程语言和数据库
分布式架构:组件之间需要通信等
高并发和高可用性:处理大量请求
安全性需求:系统之间需要认证和授权
业务流程自动化:优化复杂的业务逻辑,保持数据一致性
常见中间件
远程过程调用中间件:gRPC、Thrift
数据库中间件:Hibernate、Mybatis
消息队列中间件:Kafka、RabbitMQ
应用服务器:Tomcat、WebSphere
服务总线(集成中间件):Camel、Mule ESB
使用场景
电信:提供呼叫路由、计费系统、客户支持服务
医疗服务:电子健康记录系统、诊断设备、保险提供商
金融服务:支付交易管理、账户管理、风险控制、报告生成
物联网:管理设备通信、数据采集和处理
电子商务:订单管理、支付网关、库存管理、客户关系管理系统
优势
简化开发:提供通用的服务和功能,减少重复代码和时间
提高可维护性:提供标准化的接口和服务,简化系统的升级和维护
增强可扩展性:支持分布式架构和负载均衡,易于扩展满足新增的需求
改善性能和可靠性:提供缓存、消息队列、事务管理等,优化信通性能和可靠性
简介
做什么:通过提供统一的服务和功能,简化分布式系统的开发、管理和部署
是什么:是一种位于操作系统和应用程序之间的软件层和服务
怎么做:连接不同的应用程序,使它们之间能够通信和操作
消息队列中间件
RabbitMQ
易于管理:提供一个管理控制台,用于监控和管理消息队列、连接、交换机
插件支持:通过插件扩展功能,例如分布式拓扑、监控和报警
灵活的消息路由:支持通过交换机进行消息路由
工作流:生产者发送消息到交换机 -> 交换机通过规则路由消息到一个或多个队列 -> 消费者从队列中获取消息
可靠性:提供消息确认、持久化和高可用性(镜像队列),来保证消息的可靠性
使用场景:适合需要复杂路由、消息确认和事务支持的场景,常用作处理短周期、低延迟的消息队列
多协议支持:支持多种消息传输协议
设计架构:基于AMQP协议,提供丰富的消息路由和可靠性功能
介绍:基于高级消息队列协议,在分布式系统中传递消息
性能:低延迟消息传递,但在高吞吐量和持久化方面不如kafka
Kafka
介绍:一个分布式流处理平台,主要构建实时数据处理和流应用
高吞吐量:高吞吐量的数据传输,每秒可以处理数百万条消息
分布式:可分布式部署,具有高可用性和容错性
持久化:消息持久化到磁盘,确保数据的耐久性
水平扩展:通过增加broker扩展系统容量
流应用:提供kafka Sreams和Kafka Connect,用于构建实时流应用和数据集成
工作流:生产者将消息发布到特定主题 -> 消息被分布到主题的不同分区 -> 消费者订阅主题,从分区获取消息
使用场景:适合大数据实时处理、高吞吐量和持久化日志场景,常用于数据管道、日志收集和流处理应用
设计架构:基于分布式日志存储系统费,设计为高吞吐量和横向可扩展
性能:高吞吐量和持久化性能优异,但延迟可能较高
定义:分布式系统中传递消息,解耦生产者和消费者,提供异步通信
缓存系统中间件
Memcached
特点:高可用、分布式缓存,内存缓存,无持久化
存储机制:简单的键值对缓存
定义:高性能、分布式数据对象缓存系统
适用场景:临时缓存(数据库查询、api接口缓存等),键值对简单数据缓存,无需持久化的场景
Redis
特点:可持久化,快速读写和高并发,发布/订阅(可实现消息通知),事务性(多个操作原子性执行),高可用(主从复制,哨兵实现高可用),分布式缓存(Redis Cluster实现数据分片和负载均衡)
存储机制:多种数据类型存储
定义:开源的数据内存缓存系统,可用于存储和缓存数据
适用场景:多种数据结构支持、可持久化的场景,高级功能(发布订阅、事务)的场景,常用于会话存储、消息队列、实时分析第场景
定义:系统中提供高性能的数据访问,减少数据库负载,提高响应速度