Spring cloud Alibaba小白入门指南

本文是一篇关于Spring Cloud Alibaba的入门指南,涵盖了Spring Boot基础、服务发现(Nacos)、负载均衡(Ribbon)、声明式HTTP客户端(Feign)、服务容错(Sentinel)以及消息驱动的微服务(RocketMQ)。通过学习,读者可以了解如何使用这些组件搭建和管理分布式应用服务。
摘要由CSDN通过智能技术生成

Spring Cloud Alibaba 致力于提供微服务开发的一站式解决方案。此项目包含开发分布式应用服务的必需组件,方便开发者通过
Spring Cloud 编程模型轻松使用这些组件来开发分布式应用服务。 官网链接:
https://github.com/alibaba/spring-cloud-alibaba/wiki

写在前面

参考链接:http://javadaily.cn/tags/SpringCloud

学习一个项目,首先就是配置好自己的idea咯~
mark 一些快捷键工具:

  • windows:HotKey Explorer , HotKey Commander , idea快捷建说明【推荐】
  • mac:CheatSheet

SpringBoot Actuator - 项目监控工具
Spring Boot基础

从GitHub下载东西时,如果网速过慢加上 https://github.com.cnpmjs.org/ 就好啦~

Spring cloud Alibaba技术栈选择

在这里插入图片描述

一、Spring Cloud Alibaba简介

二、Spring Boot基础

三、微服务的拆分和编写

四、Spring Cloud Alibaba介绍

五、服务发现-Nacos

Nacos既可以作为注册中心也可以作为配置中心。(Namespace - 官方推荐的环境隔离配置)

六、实现负载均衡-Ribbon

Ribbon使用代码配置时,config需要放在不和 启动类相同的包(@Conponentscan扫描包以外)。在启动类下的config包中指定
@RibbonClient(name = “life-base”,configuration = RibbonConfiguration.class)
因为父子上下文不能重叠,。Ribbon父子上下文重叠,会被所有的Ribbon Client共享。

Ribbon默认是懒加载的,通过饥饿加载即可解决第一次调用慢的问题。
扩展Ribbon的负载均衡策略extends AbstractLoadBalancerRule,让它支持Nacos权重

至此,Nacos + Ribbon 已经整合完成。但是有以下问题:

  • 代码不可读。
  • 复杂的url难以维护
  • 难以相应需求的变化
  • 编程体验不统一

七、声明式HTTP客户端Feign

Java代码的方式@Configuration 注解也会带来父子上下文问题,被所有Feign共享,不写@Configuration就好了。
属性配置优先级最高啦。
Feign的默认使用的URLConnection去发送请求的,他是没有连接池的。但是Feign底层除了使用URLConnection发送请求以外,还支持使用Apache的HTTPClient以及OKHTTP去发送请求,而Apache的HTTPClient以及OKHTTP都是支持连接池的。

RestTemplate
Spring Web提供的轻量级HTTP Client,简化HTTP调用。
RestTemplate.getForEntity / getForObject(不需要HTTP状态码的时候使用,简单)

八、服务容错Sentinel

Sentinel:把流量作为切入点,从流量控制、熔断降级、系统负载保护等多个维度保护服务的稳定性。

  • 快速失败。
  • warm up。 慢慢到达阈值,达到阈值就抛弃。
  • 排队等待 。空闲的时候慢慢处理

三个核心API :

  • SphU:定义、监控、保护资源
  • Tracer:对异常进行统计
  • ContextUtil:实现调用来源,标记调用

SentinelBeanPostProcessor - 源码解析。
Sentinel:熔断,限流

九、消息驱动的微服务-SpringCloudAlibabaRocketMQ

RocketMQ:一款开源的分布式消息系统,基于高可用分布式集群技术,提供低延时的、高可靠的消息发布与订阅服务。

Spring实现异步操作:

  1. AsyncRestTemplate
  2. @Async
  3. WebClient (Spring 5.0引入)
  4. MQ

组件

Nacos:一个更易于构建云原生应用的动态服务发现、配置管理和服务管理平台。

服务注册到Nacos上后,可以用Spring Cloud DiscoveryClient发现对应组件。
在这里插入图片描述

  • NameSpace:实现隔离,默认public (环境配置)
  • Group:不同服务可以分到一个组,默认default
  • Service:微服务
  • Cluster:对指定微服务的一个虚拟化分
  • Instance:微服务实例

元数据

  • 设置服务描述信息(微服务版本控制 Ribbon支持基于元数据的版本管理)

分布式服务的问题

TraceId和SpanId

TraceId:通过 TraceId 来将一个请求在各个服务器上的调用日志串联起来,TraceId 一般由接收请求经过的第一个服务器产生,产生规则是: 服务器 IP + 产生 ID 时候的时间 + 自增序列 + 当前进程号 。
SpanId:代表了本次请求在整个调用链路中的位置或者说层次,比如 A 系统在处理一个请求的过程中依次调用了 B,C,D 三个系统,那么这三次调用的的 SpanId 分别是:0.1,0.2,0.3。如果 B 系统继续调用了 E,F 两个系统,那么这两次调用的 SpanId 分别是:0.1.1,0.1.2。

  • 0
    点赞
  • 4
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值