微服务是一种架构风格,通过将应用程序拆分成多个独立的服务来实现更高的灵活性和可维护性。为了支持微服务的开发、部署和运行,以下是常用的技术栈,按功能模块划分:
1. 服务注册与发现
- Eureka:Netflix 开源的服务注册与发现组件。
- Consul:支持服务发现、配置管理和健康检查。
- Zookeeper:Apache 的分布式协调服务,适合服务发现。
- Nacos:阿里巴巴开源的服务注册、配置管理平台。
2. API 网关
- Spring Cloud Gateway:轻量级的 API 网关解决方案,支持动态路由、限流等功能。
- Kong:基于 NGINX 的高性能 API 网关。
- Zuul:Netflix 开源的网关,支持路由、过滤等功能。
- Traefik:支持动态服务发现和负载均衡的现代反向代理。
3. 服务通信
- RESTful API:通过 HTTP 协议进行通信,轻量级但性能较低。
- gRPC:基于 HTTP/2 和 Protocol Buffers 的高性能 RPC 框架。
- Thrift:跨语言的 RPC 框架,适合高性能需求。
- Dubbo:阿里巴巴开源的 RPC 框架,支持多种通信协议。
4. 配置管理
- Spring Cloud Config:集中化配置管理解决方案。
- Consul:不仅支持服务发现,还提供配置管理功能。
- Nacos:同时支持服务发现和配置管理。
- Etcd:分布式键值存储,用于配置管理。
5. 分布式追踪与监控
- Zipkin:分布式追踪系统,用于分析服务调用链。
- Jaeger:CNCF 开源的分布式追踪平台。
- Prometheus:开源的监控系统,支持时序数据存储和告警。
- ELK Stack:Elasticsearch、Logstash 和 Kibana 的日志分析和可视化工具。
- SkyWalking:支持分布式追踪、性能监控和故障诊断。
6. 服务容错与限流
- Hystrix:Netflix 开源的断路器,用于容错保护。
- Resilience4j:轻量级的断路器框架,替代 Hystrix。
- Sentinel:阿里巴巴开源的流量防护组件,支持限流和降级。
7. 消息队列
- RabbitMQ:支持多种协议的消息中间件。
- Kafka:分布式流处理平台,适合高吞吐场景。
- RocketMQ:阿里巴巴开源的分布式消息中间件。
- ActiveMQ:轻量级消息代理,支持多种协议。
8. 数据存储
- MySQL、PostgreSQL:关系型数据库。
- MongoDB、Cassandra:NoSQL 数据库。
- Redis、Memcached:内存数据库,用于缓存。
- Elasticsearch:全文搜索和分析引擎。
9. 分布式协调
- Zookeeper:分布式系统协调服务。
- Etcd:轻量级键值存储,适合分布式配置和协调。
- Consul:除了服务发现外,也支持分布式锁等协调功能。
10. 容器与编排
- Docker:容器化技术,用于打包和部署微服务。
- Kubernetes (K8s):容器编排工具,支持自动部署、扩展和管理。
- Helm:Kubernetes 的包管理工具。
- Istio:服务网格,用于微服务间流量管理和安全控制。
11. CI/CD 工具
- Jenkins:持续集成和交付工具。
- GitLab CI/CD:集成到 GitLab 的持续集成工具。
- ArgoCD:Kubernetes 原生的持续交付工具。
- Spinnaker:Netflix 开源的多云持续交付平台。
12. 身份验证与安全
- OAuth2:开放授权协议,用于用户身份验证。
- JWT (JSON Web Token):轻量级的身份认证机制。
- Spring Security:支持复杂的安全控制。
- Keycloak:开源的身份和访问管理解决方案。
13. 分布式任务调度
- Quartz:灵活的任务调度框架。
- xxl-job:Java 分布式任务调度平台。
- Elastic-job:分布式任务调度解决方案。