【合集】Spring Cloud 组件——架构进化史话 & Eureka,Nacos(1)

总结

总体来说,如果你想转行从事程序员的工作,Java开发一定可以作为你的第一选择。但是不管你选择什么编程语言,提升自己的硬件实力才是拿高薪的唯一手段。

如果你以这份学习路线来学习,你会有一个比较系统化的知识网络,也不至于把知识学习得很零散。我个人是完全不建议刚开始就看《Java编程思想》、《Java核心技术》这些书籍,看完你肯定会放弃学习。建议可以看一些视频来学习,当自己能上手再买这些书看又是非常有收获的事了。

本文已被CODING开源项目:【一线大厂Java面试题解析+核心总结学习笔记+最新讲解视频+实战项目源码】收录

需要这份系统化的资料的朋友,可以点击这里获取

目录

引出


1.SpringCloud是,在Spring Boot基础之上构建的,用于快速构建分布式系统的通用模式的工具集;
2.单体架构到微服务Microservices架构的变迁;
3.动态服务发现、配置管理和服务管理平台nacos;
4.声明式的HTTP客户端,用于简化服务间的调用openFeign;
5.流量控制、熔断降级规则统一配置和管理的入口sentinel;
6.新一代的API网关,用于实现统一的访问入口和路由gateway;

单体架构到微服务

1.单体架构,微服务,分布式

SpringCloud溯源——从单体架构到微服务Microservices架构 & 分布式和微服务 & 为啥要用微服务

在这里插入图片描述

2.服务器安装nacos+sentinel

SpringCloud相关组件——nacos和sentinel的安装和配置 & 运行内存情况 & 服务器被非法登陆尝试的解决

在这里插入图片描述

服务注册与发现–Nacos+Eureka

0.Eureka(服务注册和发现)

Eureka(服务注册和发现)——Eureka的简介和原理 & Eureka的使用和分析 & 心跳续约策略,服务的下线和剔除,自我保护 & Eureka集群的搭建

在这里插入图片描述

在这里插入图片描述

用在前面的微服务学习过程中注册中心和配置中心是两个非常重要的组成部分,但是注册中心、配置中心的管理却非常困难,特别是配置中心在更新完配置之后需要用到Bus进行配置推送,整个操作过程及其麻烦,正是因为这些原因阿里推出了一款叫做nacos的应用,该应用在能够实现注册中心的同时也实现了配置中心,而且操作十分简单,能够将程序员从繁琐的注册中心、配置中心的操作中解救出来。

英文全称Dynamic Naming and Configuration Service,Na为naming/nameServer即注册中心,co为configuration即注册中心,service是指该注册/配置中心都是以服务为核心。

Nacos注册中心分为server与client,server采用Java编写,为client提供注册发现服务与配置服务。而client可以用多语言实现,client与微服务嵌套在一起,nacos提供sdk和openApi,如果没有sdk也可以根据openApi手动写服务注册与发现和配置拉取的逻辑。

1.Nacos的Linux安装配置

Nacos基础(1)——初识Dynamic Naming and Configuration Service & Linux上nacos安装 + 配置 + 运行【附安装包】

华为云云耀云服务器L实例评测|SpringCloud相关组件——nacos和sentinel的安装和配置 & 运行内存情况 & 服务器被非法登陆尝试的解决

在这里插入图片描述

nacos参数设置初步(JVM调优)

nacos应用——占用内存过多问题解决(JVM调优初步)

在这里插入图片描述

2.Nacos作为注册中心和配置中心

Nacos基础(2)——nacos的服务器和命名空间 & springBoot整合nacos & 多个nacos配置的情况

在这里插入图片描述

3.Nacos集群和nginx

Nacos基础(3)——nacos+nginx & 集群的配置和启动 & 端口开放 & nginx反向代理nacos集群

在这里插入图片描述

Eureka和Nacos的区别?

  • eureka是一个jar包,必须在项目中引用才能发布,eureka没有配置中心
  • nacos是一个可运行的服务程序。nacos有配置中心
  • eureka是ap方案,nacos默认是cp方案
  • CAP方案

CAP原则又称CAP定理,指的是在一个分布式系统中,一致性(Consistency)、可用性(Availability)、分区容错性(Partition tolerance)。

+ 分区容错性(Partition tolerance) : 分布式系统出现网络分区的时候,仍然能够对外提供服务。因为一些故障,使得有些节点之间不连通了,整个网络就分成了几块区域,不同的区域仍然可以正常访问数据。分区容错性是必须的
+ 可用性(Availability):每一个请求不管成功或者失败都有响应。
+ 一致性(Consistency):在分布式系统中的所有数据备份,在同一时刻是否同样的值。

4.Apollo(阿波罗)配置中心

Apollo(阿波罗)——携程推出的分布式配置管理中心 & 启动Apollo & SpringBoot集成 & @ConfigurationProperties的使用姿势

主要内容:

  • 1.如何启动Apollo;
  • 2.如何SpringBoot集成;
  • 3.@ConfigurationProperties的使用姿势;

服务的调用–OpenFeign+Ribbon

1.RestTemplate+Ribbon

SpringCloud入门(微服务调用 RestTemplate)——微服务调用的方式 & RestTemplate的使用 & 使用nacos的服务名初步(Ribbon负载均衡)

在这里插入图片描述

2.OpenFeign

SpringCloud入门(微服务调用 OpenFeign)——从RestTemplate到OpenFeign & OpenFeign的相关配置 & 源码的分析和请求流程拆解

在这里插入图片描述
实际使用遇到的问题及解决

3.微服务调用链路分析 Sleuth+Zipkin

SpringCloud链路追踪——Spring Cloud Sleuth 和 Zipkin 介绍 & Windows 下使用初步

在这里插入图片描述

流量治理–Sentinel

Sentinel 控制台是流量控制、熔断降级规则统一配置和管理的入口,它为用户提供了机器自发现、簇点链路自发现、监控、规则配置等功能。在 Sentinel 控制台上,我们可以配置规则并实时查看流量控制效果。

随着微服务的普及,服务调用的稳定性变得越来越重要。Sentinel以“流量”为切入点,在流量控制、断路、负载保护等多个领域开展工作,保障服务可靠性。

哨兵具有以下特点:

  • 场景丰富: Sentinel 支持阿里巴巴双十一的关键场景10多年,如秒杀(即控制突发流量,使其在系统容量可接受范围内),消息负载转移,不可靠下游应用的断路。
  • 全面的实时监控: Sentinel 提供实时监控能力。您可以秒级精确查看服务器的监控数据,甚至可以看到少于500个节点的集群的整体运行状态。
  • 广泛的开源生态系统: Sentinel 提供了开箱即用的模块,可以轻松地与其他开源框架/库集成,例如 Spring Cloud、Dubbo 和 gRPC。使用Sentinel只需要引入相关的依赖,做一些简单的配置即可。
  • Sound SPI Extensions: Sentinel 提供了简单易用且完善的 SPI 扩展接口。您可以使用 SPI 扩展快速自定义逻辑,例如,您可以定义自己的规则管理,或适应特定的数据源。

1.雪崩问题和Sentinel初识

Sentinel学习(1)——CAP理论,微服务中的雪崩问题,和Hystix的解决方案 & Sentinel的相关概念 + 下载运行

在这里插入图片描述

2.Sentinel的流控和熔断

Sentinel学习(2)——sentinel的使用,引入依赖和配置 & 对消费者进行流控 & 对生产者进行熔断降级

在这里插入图片描述

统一的访问入口和路由–Gateway

SpringCloud Gateway 是 Spring Cloud 的一个全新项目,该项目是基于 Spring 5.0,Spring Boot 2.0 和 Project Reactor 等技术开发的网关,它旨在为微服务架构提供一种简单有效的统一的 API 路由管理方式。

SpringCloud Gateway 作为 Spring Cloud 生态系统中的网关,目标是替代 Zuul,在Spring Cloud 2.0以上版本中,没有对新版本的Zuul 2.0以上最新高性能版本进行集成,仍然还是使用的Zuul 2.0之前的非Reactor模式的老版本。而为了提升网关的性能,SpringCloud Gateway是基于WebFlux框架实现的,而WebFlux框架底层则使用了高性能的Reactor模式通信框架Netty。

Spring Cloud Gateway 的目标,不仅提供统一的路由方式,并且基于 Filter 链的方式提供了网关基本的功能,例如:安全,监控/指标,和限流。

SpringCloud Gateway 特征

SpringCloud官方,对SpringCloud Gateway 特征介绍如下:

(1)基于 Spring Framework 5,Project Reactor 和 Spring Boot 2.0

(2)集成 Hystrix 断路器

(3)集成 Spring Cloud DiscoveryClient

(4)Predicates(谓词、断言) 和 Filters 作用于特定路由,易于编写的 Predicates 和 Filters

(5)具备一些网关的高级功能:动态路由、限流、路径重写

从以上的特征来说,和Zuul的特征差别不大。SpringCloud Gateway和Zuul主要的区别,还是在底层的通信框架上。

专业术语

a)Filter(过滤器):

和Zuul的过滤器在概念上类似,可以使用它拦截和修改请求,并且对上游的响应,进行二次处理。过滤器为org.springframework.cloud.gateway.filter.GatewayFilter类的实例。

b)Route(路由):

网关配置的基本组成模块,和Zuul的路由配置模块类似。一个Route模块由一个 ID,一个目标 URI,一组断言和一组过滤器定义。如果断言为真,则路由匹配,目标URI会被访问。

c)Predicate(谓词、断言):

这是一个 Java 8 的 Predicate,可以使用它来匹配来自 HTTP 请求的任何内容,例如 headers 或参数。断言的输入类型是一个 ServerWebExchange。

工作流程

客户端向 Spring Cloud Gateway 发出请求。然后在 Gateway Handler Mapping 中找到与请求相匹配的路由,将其发送到 Gateway Web Handler。Handler 再通过指定的过滤器链来将请求发送到我们实际的服务执行业务逻辑,然后返回。过滤器之间用虚线分开是因为过滤器可能会在发送代理请求之前(“pre”)或之后(“post”)执行业务逻辑。

在这里插入图片描述

类型作用
pre这种过滤器在请求被路由之前调用。我们可利用这种过滤器实现身份验证、在集群中选择请求的微服务、记录调试信息等。
post这种过滤器在路由到微服务以后执行。这种过滤器可用来为响应添加标准的HTTP Header、收集统计信息和指标、将响应从微服务发送给客户端等。

Filter在“pre”类型过滤器中可以做参数校验、权限校验、流量监控、⽇志输出、协议转换等,在“post”类型的过滤器中可以做响应内容、响应头的修改、⽇志的输出、流量监控等。

总结

虽然我个人也经常自嘲,十年之后要去成为外卖专员,但实际上依靠自身的努力,是能够减少三十五岁之后的焦虑的,毕竟好的架构师并不多。

架构师,是我们大部分技术人的职业目标,一名好的架构师来源于机遇(公司)、个人努力(吃得苦、肯钻研)、天分(真的热爱)的三者协作的结果,实践+机遇+努力才能助你成为优秀的架构师。

如果你也想成为一名好的架构师,那或许这份Java成长笔记你需要阅读阅读,希望能够对你的职业发展有所帮助。

image

本文已被CODING开源项目:【一线大厂Java面试题解析+核心总结学习笔记+最新讲解视频+实战项目源码】收录

需要这份系统化的资料的朋友,可以点击这里获取

力才能助你成为优秀的架构师。

如果你也想成为一名好的架构师,那或许这份Java成长笔记你需要阅读阅读,希望能够对你的职业发展有所帮助。

[外链图片转存中…(img-lm6TNHKg-1715483260747)]

本文已被CODING开源项目:【一线大厂Java面试题解析+核心总结学习笔记+最新讲解视频+实战项目源码】收录

需要这份系统化的资料的朋友,可以点击这里获取

  • 4
    点赞
  • 9
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值