微服务架构系列 - 基础篇:微服务架构总体设计概览
- 1 min 微服务架构系列(二)
看完微服务的定义后,接下来我们一起走进微服务架构,来看看它的总体设计和各个组成部分。
在具体介绍各个组件之前,我们先通过下面这张微服务设计整体架构图来看下一次完整的服务调用流程:
首先,服务提供者(用户、商品等微服务子模块)按照指定格式的服务接口描述,向注册中心注册服务,声明自己能够提供哪些服务以及对应的服务提供者地址,从而完成服务发布。
接下来,服务消费者(API 网关层或者相邻的其它微服务子模块)通过订阅注册中心,发现需要调用服务对应的服务提供者地址,然后以约定的通信协议(REST API 或 RPC)向服务提供者发起请求,得到请求结果后再按照约定的协议解析结果。
在服务调用过程中,服务的请求耗时、调用量以及成功率等指标都会被记录下来用作监控指标,整个调用所经过的链路信息也会被记录下来,用于故障定位和问题追踪。在这期间,如果调用失败,可以通过重试、熔断、隔离等服务治理手段来保证服务的可用性。
总结起来,在微服务架构下,服务调用主要依赖下面几个基本组件:
- 注册中心:注册并维护远程服务及服务提供者的地址,供服务消费者发现和调用,为保证可用性,通常基于分布式 kv 存储器来实现,比如 zookeeper、etcd 等;
- 服务框架:用于实现微服务的 RPC 框架,包含服务接口描述及实现方案、向注册中心发布服务等功能,常见的 RPC 框架包括 Spring Cloud、Dubbo、gRPC、 Thrift、go-micro 等;
- 服务网关:介于客户端与微服务之间的网关层,可以理解为「门卫」的角色,以确保服务提供者对客户端的透明,这一层可以进行反向路由、安全认证、灰度发布、日志监控等前置动作;
- 服务监控:对服务消费者与提供者之间的调用情况进行监控和数据展示;
- 服务追踪:记录对每个请求的微服务调用完整链路,以便进行问题定位和故障分析;
- 服务治理:服务治理就是通过一系列的手段来保证在各种意外情况下,服务调用仍然能够正常进行,这些手段包括熔断、隔离、限流、降级、负载均衡等。
- 基础设施:分布式消息队列、日志存储、数据库、缓存、文件服务器、搜索集群等,用以提供服务底层的基础数据服务,可以自建,也可以使用阿里云等公有云提供的服务。
此外,从微服务部署角度来说,我们通常会基于容器编排技术实现微服务的运维。
上述组件基本上都有成熟的开源框架可供选择,接下来,我们会逐一介绍这些组件在微服务中的具体实现。