前言
大型企业业务的高复杂度、高并发高性能需分散压力、团队协同、业务解耦、故障隔离等原因,内部系统都会在分布式架构下,服务之间以微服务的架构形式搭建。本文介绍微服务整体架构、架构中的关键组件。
整体架构
下面是大型企业级分布式架构下的整体技术架构示意:
其中本文指的微服务架构主要是整个分布式系统内部服务以微服务形式存在,以及服务之间调用、管控等方式的架构。
其中微服务架构涉及到对外网关、内部服务注册发现、服务调用方式、服务调用网络传输方式、服务限流、熔断、分布式链路追踪等关键组件,下面以SpringCloud举例,SpringCloud开源代码:https://github.com/spring-cloud,以及其他类试组件的对比:
关键组件 | SpringCloud对应组件 | SpringCloud组件其他说明 | 其他类试组件 |
网关 | Gateway,老版本用Zuul | ||
服务注册发现 | Eureka | 新版本不再使用。新版本建议用Consul、Zookeeper等 | Consul、Nacos、Zookeeper、ETCD |
服务调用 | Rest。 | Feign,RestTemplate等,通过Ribbon做负载均衡。采用Http方式调用、JSON等序列化方式传输。其他微服务调用大多采用RPC方式、Hessian或ProtoBuf等序列化方式 | Dubbo、Sofa、grpc |
静态配置 | SpringCloudConfig | Nacos、Apollo、Archaius | |
动态配置 | SpringCloudConfig结合SpringCloudBus(消息总线,基于RabbitMQ或Kafka)实现 | 配置、字段对象动态修改 | Diamond、Apollo |
限流 | - | 请求入口控制 | Sentinel |
熔断 | Hystrix | 请求出口控制 | Sentinel |
服务监控 | Spring Boot Admin | ||
全链路追踪 | Sleuth | Eagleeye、Zipkin、Brave、Dapper、Pinpoint、Skywalking |