1. 系统架构的发展阶段
单体应用阶段–>垂直应用阶段–>分布式系统阶段–>服务治理阶段–>微服务阶段–>服务网格阶段
阶段 | 优点 | 缺点 |
---|---|---|
单体应用阶段 | 易于集中式开发、测试、管理、部署;避免功能重复开发 | 团队合作困难;代码维护、重构、部署比较难;扩展性不高 |
关键字:
RPC:Remote Procedure Call,远程过程调用
SOA:Service Oriented Architecture,面向服务的结构
ESB:Enterprise Service Bus,企业服务总线
DevOps:Development & Operations
Service provider:服务提供者
Service Consumer:服务消费者
服务网格:Service Mesh
2.主流微服务框架
Dubbo:
面向接口的高性能RPC,远程调用,使得用户可以像调用本地方法一样调用远程机器上的方法
Dubbox
Spring Cloud
Spring Cloud是基于Spring Boot的一个快速开发微服务的框架。他提供了以下开发微服务所需的常见组件。
- 服务发现(Service Discovery)
- 断路器(Circuit Breakers)
- 智能路由(Intelligent Routing)
- 微代理(Micro-proxy)
- 控制总线(Control Bus)
- 一次性令牌(One-time Tokens)
- 全局锁(Global Locks)
- 领导选举(Leadership Election)
- 配置管理(Configuration Management)
- 分布式会话(Distributed Sessions)
- 集群状态(Cluster State)
Spring Cloud的核心功能
- 分布式、版本化配置
通过Spring Cloud Config来统一管理服务配置。我们可以将所有服务的配置文件放置在本地仓库或者远程仓库中,让配置中心来负责读取仓库的配置文件,而客户端(服务)从配置中心读取配置。
Spring Cloud Config经常和Spring Cloud Bus结合使用,无需重启服务即可动态刷新配置文件。 - 服务注册和发现
服务治理组件(Eurake、Consul等)相当于交易的信息员,通过他可以发现“服务提供者”,还可以将自己注册到“服务中心”中。 - 路由
通过智能路由网关组件(Zuul、Spring Cloud Gateway)来实现智能路由和请求过滤功能。 - 负载均衡
通过Feign(远程调用组件)和Ribbon(负载均衡组件)实现负载均衡。 - 断路器
使用服务容错组件(Hystrix、Resilience4j)控制服务的API接口的熔断,以实现故障转移、服务限流、服务降级等功能,防止微服务系统发生雪崩效应。 - 分布式消息传递
通过消息总线组件,数据流操作组件可以将Redis、RabbitMQ、Kafka等封装起来,实现消息的接收和发送。
…
Kubernetes