Spring Cloud 微服务组件和架构

微服务的概念:

  1. 多个微服务开发的依然是一个完整的应用
  2. 微服务都会独立运行在一个独立的进程里面
  3. 微服务之间通常会采用轻量级的通信机制来进行通信,比如http, https ,socket ,netty,dubbo,thrift
  4. 通常采用自动化部署方式 devops cicd docker k8s service mesh 云原生
  5. 通常都是去中心化,也就是某个节点挂了,而不会影响其他节点
    6 . 这些微服务可以通过不同的编程语言实现 订单: java 天气 python,php,go 等
  6. 服务通常可以使用属于不同的数据存储技术 全文检索 :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 组件

  1. 服务注册与发现:
    Nacos[Alibaba] 服务注册与发现 服务配置管理
    gateway组件,是springcloud生态中的网关组件,统一的API路由规则管理 黑白名单鉴权
    ribbon【Neflix】 Loadbalance 负载均衡
    zipkin组件 和sleuth,该组件是一个链路的实时数据 服务调用追踪系统, 页面化视图

  2. 服务调用
    openfreign 服务间调用(服务间无需http方式,方便以对象方式调用)
    senta 组件是为了解决分布式事务的问题
    rocketmq 是一个分布式消息队列类型的组件,实现流量削峰,模块之间的解耦

  3. 高流量控制使用:
    针对应用维度 : skywalking :链路调用追踪,JVM性能工具(apache),agent角度
    针对机器维度-->Prometheus+ granfa
    elk
    sentinel【Alibaba】容错主要作用是为了应对服务突然承受极高的流量压力,实现了流量控制,熔断降级等主要作用,其控制台dashboard打包后可直接运行,在页面访问查看各个服务的流量情况
    Hystrix【Neflix】 容错 高可用流量防护组件,系统负载服务、热点防护容错,提供断路器,限时等机制防止服务雪崩。

posted @ 2021-12-15 22:22  悠然采  阅读(578)  评论(0编辑  收藏  举报