微服务框架学习笔记
一、微服务概述
微服务架构是一种分布式架构方式,它提倡将单一应用程序划分成一组小的服务,每个服务运行在其独立的进程中,服务之间互相协调、互相配置,为用户提供最终价值。
微服务架构具有以下核心特征:
- 每个服务独立开发、独立部署
- 服务之间通过轻量级API互相交互
- 服务可独立扩展、按需伸缩
- 去中心化,服务自治
- 技术栈无限制,可独立选择
优点:
- 独立部署,提高部署效率
- 高内聚、松耦合,代码可重用
- 故障隔离,一个模块故障不影响其他模块
- 按需伸缩,提高资源利用效率
二、微服务框架设计原理
微服务框架用于简化分布式微服务应用的开发。其主要原理如下:
1. 注册中心
服务注册中心记录服务及位置信息,服务实例启动时主动注册,客户端从注册中心获取服务列表。常见实现有Eureka、Zookeeper等。
2. 服务调用
客户端通过负载均衡调用服务。调用方式包括REST调用、RPC调用等。
3. 服务熔断
服务过载时快速失败,避免雪崩。常用Hystrix实现。
4. 动态配置
配置中心使配置外部化,支持动态更新,常用组件如Spring Cloud Config。
5. 路由管理
智能路由,实现请求的动态路由和转发。
6. 消息总线
使用轻量消息代理连接服务,实现异步通信和解耦。
三、微服务框架实现
主流微服务框架包括Spring Cloud、Dubbo等。
Spring Cloud 基于Spring Boot实现,使用Netflix组件进行分布式解决方案。主要组件包括:
- Eureka:服务注册中心
- Ribbon:负载均衡
- Feign:服务调用
- Hystrix: 熔断器
- Zuul:API网关
Dubbo 通过注册中心发现服务,使用RPC调用进行服务间通信。具有负载均衡、容错处理等能力。
四、应用思考
微服务架构也存在如服务运维难度大、分布式事务难以解决等问题。我认为应根据业务需要合理采用微服务,同时设计好服务边界,适当考虑微服务聚合。准备好监控和运维平台,从设计上优化系统。
疫情期间大流量也对微服务稳定性提出挑战。我计划通过完善评审标准,做好容量评估;同时进行locales和压测,发现问题优化系统。
微服务是建设可持续、可扩展系统的重要方式,需要我们不断学习和优化。