吴旭华 发表于 昨天 11:59

看一看 中间件Middleware

中间件(Middleware)是介于操作系统与应用步伐之间的一层软件
它为分布式应用步伐提供了统一的通信、数据交换、服务调用、消息传递等本领。
它的作用就像“胶水”,毗连各个系统组件。


消息队列

Message Queue Middleware
   消息队列是 现代分布式系统中的关键组件,用来解耦、削峰、异步处置惩罚和提高系统可扩展性。
消息队列是一种异步通信机制:发送方(Producer)把消息放到队列里,接收方(Consumer)从队列中取消息。中间的“队列”就是中间件的作用。
功能:


[*]解耦:它让两个系统模块不必同时在线,发送者发送完就走,消费者有空再处置惩罚。
[*]削峰填谷:在高并发场景下,队列能缓冲瞬间大量请求,防止系统崩溃。
[*]异步处置惩罚
[*]广播/订阅:一个消息可以被多个消费者订阅,好比用户注册乐成后,分别发送欢迎邮件、创建用户初始设置等。
中间件特点应用场景RabbitMQ基于 Erlang,支持 AMQP 协议,功能丰富,支持事件、插件机制强金融、电商、任务调度Kafka高吞吐量、分布式、恒久化强、偏向日志收集/流处置惩罚日志收集、用户活动追踪、监控RocketMQ阿里开源,Java 编写,事件消息支持好,性能精良国内互联网、电商场景多见ActiveMQJava 实现,老牌 MQ,支持多协议轻量级系统、企业系统Redis StreamRedis 5.0 引入,轻量级流处置惩罚方案简单任务队列、轻量异步处置惩罚 缓存中间件

   缓存中间件是 高性能系统架构中不可或缺的一环,主要用于提高访问速度、减轻数据库压力、提升系统吞吐量。
缓存中间件是一个用于快速访问热门数据的中间层系统,通常存储在内存中。相较于数据库的磁盘访问,缓存是读写速度非常快的内存访问。
典型的缓存数据如:用户会话信息、验证码、热门消息、商品信息等。
功能:


[*]加快读请求:好比一个商品详情页面,每次都查数据库会慢;缓存可以毫秒级相应。
[*]降低数据库压力:热门数据可以从缓存中直接获取,极大淘汰数据库访问量。
[*]数据预加载:可以在系统启动或访问前,提前将数据加载进缓存。
[*]分布式共享数据:缓存可以部署为集群,多个服务共享缓存数据。
中间件特点应用场景Redis单线程、支持多种数据结构、恒久化、高可用集群、Lua脚本分布式缓存、排行榜、计数器、会话存储Memcached简单、纯内存、支持 key-value、无恒久化临时缓存、对象缓存Ehcache嵌入式缓存、Java 集成方便单机应用、JVM 内部缓存Guava CacheGoogle 的当地缓存库,轻量级当地缓存、小规模系统 常见术语:
缓存穿透:不存在
缓存击穿:刚好逾期
缓存雪崩:大量同时逾期
Redis 的典型使用场景:
登录状态 Session 管理,商品详情缓存,秒杀库存控制,排行榜,延迟任务
数据库中间件

   数据库中间件:解决数据库在大规模系统中遇到的性能瓶颈、扩展性题目以及高可用等需求。
功能:


[*]分库分表(水平拆分)【数据库分片】:将大表根据特定规则(如 id 取模)拆分为多个小表或分到差别数据库节点上。
[*]读写分离(主从架构):写操作走主库,读操作走从库,提高并发本领。
[*]数据库路由
[*]SQL剖析与重写: 自动拼接分页、聚合等操作
[*]事件和谐(跨库事件): 支持 分布式事件协议(如 XA、TCC、SAGA),包管事件同等性。
中间件特点适用场景ShardingSphereApache 顶级项目,功能最强,支持分布式事件、弹性扩容、SQL重写复杂系统,数据库中间层统一解决方案MyCat国内常用,基于 Cobar,设置文件驱动,易部署中小型系统、轻量分库分表TDDL(淘宝)阿里早期内部使用,支持双十一高并发场景电商平台、分布式大数据系统VitessYouTube 开源,支持海量分库分表和水平扩展高可用、大规模数据库服务OceanBase蚂蚁团体自研,融合关系型数据库与分布式本领金融级数据库、强同等需求场景 长处:


[*]横向扩展本领强:突破单库容量限制
[*]容灾本领增强:支持主从切换、高可用架构
[*]透明接入:应用层无需修改大量代码
[*]灵活路由:根据设置灵活选择数据节点
服务注册与发现

Service Registry & Discovery
   服务注册与发现 主要用于解决“服务实例动态厘革”带来的访问题目

在微服务架构下,一个系统通常由多个小服务组成,服务实例可能频繁上线、下线、扩容或重启,因此不能像单体应用那样写死 IP 和端口。
于是,我们需要一个“服务注册中央”来动态记载每个服务的地址信息。别的服务通过“服务发现”找到它们要调用的服务。
流程:
服务提供者(Service A)启动 -> 向注册中心注册自己的信息

服务消费者(Service B) -> 从注册中心拉取/订阅服务列表 -> 根据负载均衡策略选择一个实例调用
中间件特点适用场景EurekaNetflix 开源,经典 Java 生态,得当 Spring Cloud,支持自我保护机制中小型微服务架构Nacos阿里巴巴开源,支持服务注册/发现 + 设置中央,易集成 Dubbo/Spring Cloud国内主流项目ConsulHashiCorp 开源,支持健康检查、KV存储、DNS 发现、跨语言支持好跨语言服务体系Zookeeper强同等性,CAP 中偏 CP,Apache 项目,广泛用于 Dubbo、Kafka需要严格同等性的系统EtcdCoreOS 开源,Kubernetes 的底层组件,支持高并发、强同等Kubernetes 原生注册系统 Web 中间件

   Web 中间件 要用于毗连前端请求和后端服务,提供多种通勤奋能。
种别代表产品功能反向署理Nginx、Apache HTTPD负载平衡、SSL 制止、静态资源、请求转发API 网关Kong、APISIX、Zuul、Spring Cloud Gateway路由、认证、限流、服务聚合、跨域处置惩罚Web 框架中间件Express.js 中间件、Django Middleware、Flask Middleware权限、日志、跨域、参数处置惩罚服务网格数据面Envoy、Linkerd服务之间通信控制,透明署理静态资源中间件CDN、Nginx、Varnish缓存、就近访问、内容分发应用服务器Tomcat、JettyHTTP 服务、Servlet 容器、JSP 剖析网络通信框架Netty高性能网络通信、异步事件驱动 RPC 中间件

Remote Procedure Call,远程过程调用
是一种通过网络请求调用远程服务器上的函数或方法的技能,它隐藏了底层的网络通信细节,让开发者像调用当地方法一样调用远程方法【Feign】。
简化了分布式系统的构建。
名称特点使用场景gRPC基于 Google 的 Protocol Buffers(Protobuf),支持高效的二进制序列化,内建支持负载平衡、认证、追踪等高性能、高并发的微服务架构DubboApache 提供,支持多种协议和序列化方式,具有服务治理和负载平衡功能大规模分布式系统,企业级服务框架Thrift由 Facebook 开发,支持多种编程语言,灵活的跨语言调用,支持多种协议和传输层跨语言应用,性能要求高的场景Hessian轻量级、快速的二进制协议,得当大规模分布式系统高效的分布式服务调用RMIJava 提供的 RPC 机制,适用于 Java 环境中远程方法调用Java 环境内的服务调用Zookeeper分布式和谐服务,常用于服务注册、设置管理等,支持高可用性服务发现、设置管理Consul提供服务发现、健康检查和键值存储,适用于微服务架构微服务架构中的服务注册和发现Restful API基于 HTTP 协议的简单、易用的远程调用机制简单的 Web 服务和 RESTful 接口
免责声明:如果侵犯了您的权益,请联系站长,我们会及时删除侵权内容,谢谢合作!更多信息从访问主页:qidao123.com:ToB企服之家,中国第一个企服评测及商务社交产业平台。
页: [1]
查看完整版本: 看一看 中间件Middleware