【行业】一些名词
名词
- 分布式应用架构(分布式计算技术的应用和工具)
- 中间件 中间件(Middleware)
- 主流中间件技术
- 1.通信类
- 2.数据类
- 3. **协调与治理类中间件**
- 4. 监控与可观测性中间件
- 5.**流处理与批处理**中间件
- 6.云原生中间件
- 数据库
- Redis
- mogodb
分布式应用架构(分布式计算技术的应用和工具)
(Distributed Architecture) 分布式计算技术的应用和工具。
也就是将一个庞大的服务分拆成一个个小服务。
分布式应用架构是一种将应用程序拆分为多个独立组件(或服务),并将这些组件部署在不同计算节点上,通过网络协作完成任务的系统设计方式。
其核心目标是提高可扩展性、可靠性和性能,同时支持灵活的技术选型。
核心特征
组件分布:服务部署在不同物理/虚拟节点(跨主机、跨机房甚至跨地域)松耦合:服务间通过标准协议(如HTTP/gRPC)通信,而非内部方法调用
自治性:单个组件可独立开发、部署、扩展和故障恢复
透明性:对用户隐藏分布式细节(如负载均衡、容错机制)
- 分层架构 Layered Architecture
- 微服务架构 (Microservices)
- 事件驱动 (EDA)
- 服务导向架构SOA
- CS架构
- P2P架构
- 集群架构
- 主从架构
- 分片架构
中间件 中间件(Middleware)
是连接不同组件或服务的核心基础设施,负责处理通信、数据管理、协调等通用能力。
主流中间件技术
1.通信类
- **消息队列 (Message Queue,MQ)**- 作用:异步解耦、流量削峰、事件驱动- 主流工具:- **Kafka**:高吞吐、分布式日志(适合大数据场景)- **RabbitMQ**:轻量级、支持复杂路由(AMQP协议)- RocketMQ:阿里开源,金融级可靠性- Pulsar:多租户、分层存储(云原生设计) - **RPC框架(远程调用)**- 作用:服务间高效通信(*替代* **HTTP短连接**)- 主流工具:- **gRPC**:基于HTTP/2,多语言支持(ProtoBuf编码)- **Dubbo**:**阿里开源**,**Java生态**(服务治理能力强)- Thrift:Facebook开源,跨语言支持
2.数据类
- 分布式缓存
- 作用:缓解数据库压力,加速读操作
- 主流工具:
- Redis : 内存数据库,支持数据结构丰富(如缓存、会话存储)
- Memcached:简单KV缓存,多线程高性能
- 分布式数据库中间件
- 作用:分库分表、读写分离
- 主流工具:
- ShardingSphere:Apache项目(JDBC透明分片)
- MyCat:MySQL代理层分片(已逐渐被ShardingSphere替代)
- 搜索引擎中间件
- 作用:全文检索、复杂查询
- 主流工具:
- Elasticsearch:近实时搜索,支持聚合分析
- Solr:传统搜索引擎,稳定性高
3. 协调与治理类中间件
-
服务发现与配置中心
- 作用:动态管理服务地址和配置
- 主流工具:
- Nacos:阿里开源(服务发现+配置中心)
- Consul:多数据中心支持,健康检查
- ZooKeeper:CP系统,强一致性(但性能较低)
- Etcd:Kubernetes默认存储,轻量级
-
分布式事务
- 作用:保证跨服务数据一致性
- 主流工具:
- Seata:阿里开源(AT/TCC/SAGA模式)
- DTF:华为开源(兼容Seata)
-
API网关
-
作用:统一入口、路由、鉴权、限流
-
主流工具:
- Kong:插件化设计(基于OpenResty)
- Spring Cloud Gateway:Java生态,响应式编程- Apigee:企业级商用API管理
4. 监控与可观测性中间件
- 日志收集
- ELK Stack:Elasticsearch + Logstash + Kibana
- Loki:轻量级日志聚合(Grafana生态)
- 指标监控
- Prometheus:时序数据库 + 告警(Pull模式)
- InfluxDB:高性能时间序列数据库
- 链路追踪
- Jaeger:Uber开源,兼容OpenTelemetry
- Zipkin:Twitter开源,简单易用
5.流处理与批处理中间件
-
流处理(Stream Processing)
-
Flink:低延迟、高吞吐(事件驱动)
-
Spark Streaming:微批处理(适合准实时)
-
-
批处理(Batch Processing)
- Hadoop MapReduce:离线大数据处理
- Spark:内存计算,替代MapReduce
6.云原生中间件
-
容器编排
-
Kubernetes:事实标准(自动扩缩、服务发现)
-
Docker Swarm:轻量级(已逐渐边缘化)
-
-
Serverless平台
-
AWS Lambda:函数即服务(FaaS)
-
Knative:Kubernetes原生Serverless框架
-
选型建议
消息队列:实时性选Kafka,简单场景用RabbitMQ
服务发现:云原生用Nacos/Consul,K8s环境直接用Etcd缓存:99%场景Redis足够
事务:Seata是Java生态首选
现代分布式系统通常组合多种中间件(如Kafka+Flink+Redis+K8s),需根据业务规模、团队技术栈和运维成本综合选择。
一、通信类中间件
消息队列(Message Queue)
- 作用:异步解耦、流量削峰、事件驱动
- 主流工具:
- Kafka:高吞吐、分布式日志(适合大数据场景)
- RabbitMQ:轻量级、支持复杂路由(AMQP协议)
- RocketMQ:阿里开源,金融级可靠性
- Pulsar:多租户、分层存储(云原生设计)
RPC框架(远程调用)
- 作用:服务间高效通信(替代HTTP短连接)
- 主流工具:
- gRPC:基于HTTP/2,多语言支持(ProtoBuf编码)
- Dubbo:阿里开源,Java生态(服务治理能力强)
- Thrift:Facebook开源,跨语言支持
二、数据类中间件
分布式缓存
- 作用:缓解数据库压力,加速读操作
- 主流工具:
- Redis:内存数据库,支持数据结构丰富(如缓存、会话存储)
- Memcached:简单KV缓存,多线程高性能
分布式数据库中间件
- 作用:分库分表、读写分离
- 主流工具:
- ShardingSphere:Apache项目(JDBC透明分片)
- MyCat:MySQL代理层分片(已逐渐被ShardingSphere替代)
搜索引擎中间件
- 作用:全文检索、复杂查询
- 主流工具:
- Elasticsearch:近实时搜索,支持聚合分析
- Solr:传统搜索引擎,稳定性高
三、协调与治理类中间件
服务发现与配置中心
- 作用:动态管理服务地址和配置
- 主流工具:
- Nacos:阿里开源(服务发现+配置中心)
- Consul:多数据中心支持,健康检查
- ZooKeeper:CP系统,强一致性(但性能较低)
- Etcd:Kubernetes默认存储,轻量级
分布式事务
- 作用:保证跨服务数据一致性
- 主流工具:
- Seata:阿里开源(AT/TCC/SAGA模式)
- DTF:华为开源(兼容Seata)
API网关
- 作用:统一入口、路由、鉴权、限流
- 主流工具:
- Kong:插件化设计(基于OpenResty)
- Spring Cloud Gateway:Java生态,响应式编程
- Apigee:企业级商用API管理
四、监控与可观测性中间件
日志收集
- ELK Stack:Elasticsearch + Logstash + Kibana
- Loki:轻量级日志聚合(Grafana生态)
指标监控
- Prometheus:时序数据库 + 告警(Pull模式)
- InfluxDB:高性能时间序列数据库
链路追踪
- Jaeger:Uber开源,兼容OpenTelemetry
- Zipkin:Twitter开源,简单易用
五、流处理与批处理中间件
流处理(Stream Processing)
- Flink:低延迟、高吞吐(事件驱动)
- Spark Streaming:微批处理(适合准实时)
批处理(Batch Processing)
- Hadoop MapReduce:离线大数据处理
- Spark:内存计算,替代MapReduce
六、云原生中间件
容器编排
- Kubernetes:事实标准(自动扩缩、服务发现)
- Docker Swarm:轻量级(已逐渐边缘化)
Serverless平台
- AWS Lambda:函数即服务(FaaS)
- Knative:Kubernetes原生Serverless框架
选型建议
- 消息队列:实时性选Kafka,简单场景用RabbitMQ
- 服务发现:云原生用Nacos/Consul,K8s环境直接用Etcd
- 缓存:99%场景Redis足够
- 事务:Seata是Java生态首选
现代分布式系统通常组合多种中间件(如Kafka+Flink+Redis+K8s),需根据业务规模、团队技术栈和运维成本综合选择。
数据库
-
主流数据库
-
关系型
- MySQL 最流行的开源数据库,适合Web应用、中小型系统
- PostgreSQL 开源、功能最强大的关系数据库
- Oracle 企业级商用数据库,金融/电信行业主流
- SQL Server Microsoft生态首选,与**
.NET
**深度集成
-
NoSQL(非关系型)
- k-v 键值对
- Redis
- 文文档型
- MongoDB |JSON文档模型,灵活 schema | 日志存储
- k-v 键值对
-
列式存储
- HBase Hadoop生态,适合海量数据存储
掌握至少一种关系型(如MySQL)和一种NoSQL(如Redis/MongoDB)是基础,再根据业务需求扩展其他类型。