Spring Cloud 微服务组件和架构
微服务的概念:
- 多个微服务开发的依然是一个完整的应用
- 微服务都会独立运行在一个独立的进程里面
- 微服务之间通常会采用轻量级的通信机制来进行通信,比如http, https ,socket ,netty,dubbo,thrift
- 通常采用自动化部署方式 devops cicd docker k8s service mesh 云原生
- 通常都是去中心化,也就是某个节点挂了,而不会影响其他节点
6 . 这些微服务可以通过不同的编程语言实现 订单: java 天气 python,php,go 等 - 服务通常可以使用属于不同的数据存储技术 全文检索 :es ,缓存: mongodb /redis
分布式架构不一定是微服务,而微服务一定是分布式
1 . Spring Cloud 组件和架构
Spring Cloud是属于Spring Family中的Project
Spring Cloud可以理解为是一套微服务解决方案
Spring Family中有很多Project,比如Spring Framework、Spring Boot、Spring Cloud、Spring Security等
Spring Cloud提供了微服务一站式解决方案,Alibaba和Netflix的确是目前比较主流的两套解决方案。
在整合 Spring Cloud很多组件时,需要用到Spring Boot中的Starter实现自动装配、属性配置等功能。
微服务场景下需要解决的问题是:
A 服务注册与发现 : 服务之间发现彼此
Nacos[alibaba] \eureka(netfilx) \consul\etcd\zookerper
B 服务调用 : 服务间相互调用 dubbo[alibaba] Openfreign
C 负载均衡 : 集群部署时负载均衡问题 ribbon[netflix]
D 容错机制 : 服务调用需要对应的容错机制
E 路由网关 黑白名单规则 zuul[netflix] gateway[springcloud]
F 分布式事务 : 流量控制、熔断降级、系统负载保护 Sentinel[alibaba] /Hystrix [netflix]
H 异步消息通信 rocketmq kafka
Spring Cloud 组件
-
服务注册与发现:
Nacos[Alibaba] 服务注册与发现 服务配置管理
gateway组件,是springcloud生态中的网关组件,统一的API路由规则管理 黑白名单鉴权
ribbon【Neflix】 Loadbalance 负载均衡
zipkin组件 和sleuth,该组件是一个链路的实时数据 服务调用追踪系统, 页面化视图 -
服务调用
openfreign 服务间调用(服务间无需http方式,方便以对象方式调用)
senta 组件是为了解决分布式事务的问题
rocketmq 是一个分布式消息队列类型的组件,实现流量削峰,模块之间的解耦 -
高流量控制使用:
针对应用维度 : skywalking :链路调用追踪,JVM性能工具(apache),agent角度
针对机器维度-->Prometheus+ granfa
elk
sentinel【Alibaba】容错主要作用是为了应对服务突然承受极高的流量压力,实现了流量控制,熔断降级等主要作用,其控制台dashboard打包后可直接运行,在页面访问查看各个服务的流量情况
Hystrix【Neflix】 容错 高可用流量防护组件,系统负载服务、热点防护容错,提供断路器,限时等机制防止服务雪崩。