Spring Cloud微服务

一、定义

        微服务,又叫微服务架构,也就是分布式架构,是软件架构的一种方式。它将一个大的单体架构应用拆分成一系列按业务领域划分模块的小的自治服务

   如开发部有很多任务,如果把任务给了一个组的话,效率肯定会降低。于是把不同任务交给不同的小组如A组,B组,前端,ui,每个组是独立工作的,有问题也是可以自理的,小组之间也是互相配合的,他们的总体目标是项目正常运行。在这种情况下:

        每个就相当于一个“微服务”。

        Spring Cloud 就像一个“开发部经理”,它要帮助开发部来管理小之间的沟通、协作,确保每个小都能高效完成任务。

二、Spring Cloud/Spring Cloud Alibaba微服的基本组成

  1. 服务注册与发现EurekaConsul

      功能:让微服务能够动态找到彼此告诉每个小,“在哪里?”“能做什么?”

      具体作用:当多个微服务部署在不同的服务器上时,如何知道某个服务的地址?Spring Cloud 提供了服务注册中心(如 Eureka、Consul),每个服务启动后会向注册中心注册自己的信息(IP 地址、端口号等)。其他服务可以通过注册中心查询到目标服务的地址,从而实现通信。

     应用场景:动态环境中,服务实例可能频繁上下线

     阿里云:提供了 Nacos,它是一个更符合国内开发者习惯的服务注册与配置中心工具。Nacos 不仅支持服务注册与发现,还支持动态配置管理,适合复杂的分布式系统。

  1. 负载均衡Ribbon

功能:当某个服务有多个实例时,合理分配请求流量。

具体作用:如果一个服务中 有 3 个实例运行,Spring Cloud 的负载均衡器(如 Ribbon 或 LoadBalancer)会自动选择一个实例来处理请求。避免某些实例过载,提升系统的整体性能。

应用场景:高并发场景下,需要分担流量。服务实例数量动态变化时,确保请求分配均匀。

阿里云:提供了 SLB(Server LoadBalancer) 和 Spring Cloud

LoadBalancer 的集成支持。

  • ①SLB:阿里云提供的服务器负载均衡服务,支持四层和七层流量分发,适用于大规模分布式系统。
  • ②Spring Cloud LoadBalancer:作为 Ribbon 的替代方案,支持动态调整权重和服务实例的选择策略。
  1. 断路器Hystrix

功能:防止级联故障,提升系统的容错能力。

具体作用:如果某个微服务出现故障或响应超时,断路器会阻止请求继续传递,并返回一个默认值或错误信息。防止某个服务的问题扩散到整个系统。

应用场景:系统中存在依赖关系的服务,某个服务故障可能导致其他服务不可用。需要保护系统稳定性。

阿里云:提供了 Sentinel,它是阿里巴巴开源的高可用防护工具。支持:

流量控制:支持基于 QPS、线程数等多种维度的限流策略。

熔断降级:当服务出现异常或响应超时时,自动熔断并返回降级逻辑。

实时监控:提供可视化的监控面板,帮助开发者实时了解系统的运行状态。

  1. API网关 Spring Cloud Gateway

功能:作为系统的统一入口,负责路由、过滤、安全校验等功能。

具体作用:客户端只需要访问网关(如 Zuul 或 Spring Cloud Gateway),网关会根据规则将请求转发到对应的服务。提供统一的安全校验、限流、日志记录等功能。不过Spring Cloud Gateway替代 Zuul,功能更强大,性能更高。

应用场景:对外提供 API 接口的系统。需要集中管理请求流量和安全性。阿里云:提供了 Alibaba Cloud API Gateway 和 Spring Cloud Alibaba Gateway 的支持。阿里云的企业级 API 网关服务,支持:

路由规则定义:根据请求路径、参数等条件将流量转发到不同的后端服务。

安全校验:支持 OAuth2、JWT 等认证机制,确保只有合法用户才能访问。

流量控制:支持限流、黑白名单等功能,保护后端服务免受恶意攻击。

  • Spring Cloud Alibaba Gateway:基于 Spring Cloud Gateway 的增强版本,集成了更多阿里云生态的功能。
  1. 配置管理Spring Cloud Config

功能:集中化管理所有微服务的配置文件。

具体作用:所有微服务的配置文件(如数据库连接信息、日志级别等)可以存储在一个地方(如 Git 或 SVN)。Spring Cloud Config 会将这些配置推送到各个服务,支持动态刷新。

应用场景:配置需要频繁调整的系统。多个服务共享相同配置的场景。

阿里云:提供了 Nacos 和 ACM(Application Configuration Management)。

Nacos:支持动态配置管理,允许开发者通过 Web 界面或 API 修改配置,并实时推送到所有服务实例。

ACM:阿里云提供的配置管理服务,支持

配置版本管理:记录配置的历史变更,便于回滚和审计。

多环境隔离:支持开发、测试、生产等环境的独立配置。

灰度发布:支持逐步推送配置变更,降低风险。

  • Spring Cloud优缺点
  1. 提高系统的可扩展性:每个微服务可以独立部署和升级,不会互相之间影响,比如项目又新增了一项业务,这样就不用修改现有的项目代码了,直接新增一个服务
  2. 提高系统的稳定性:如果某个微服务宕机了,也不会整个系统崩溃
  3. 统一的管理和配置:集中化的配置管理,让你可以随时调整所有微服务的参数,而不需要逐一手动修改。
  4. 简化开发和运维:提供了一整套开箱即用的工具,比如服务注册与发现、分布式追踪等,开发者不用自己从头实现这些复杂的功能。

缺点:最明显的就是服务调用关系错综复杂,技术成本相对高,随着业务的扩展服务的增加,运维压力也会随之增大

  • 如何才算真正的Spring Cloud

首先要明确的是并不是把单体项目拆分成小的项目并打包独立部署后就是Spring Cloud微服务。Spring Cloud微服务要互相之间能通信,能协作起来,但又互不影响才算是Spring Cloud微服务架构。

比如:电商平台,包含用户管理、订单管理、支付管理,产品管理等功能

把这些功能拆分为独立的小项目,也能启动并运行,但是这些服务之间没有通信和协作,那么它们只是孤立的“孤岛”,无法完成一个完整的业务流程,用户购买产品时需要下单,下单就需要用户信息,就需要订单管理。因此仅仅拆分是不够的,还需要让这些服务互相通信、联动起来,才能组成一个完整的应用。

     总结:通信,自治,统一标准的对外接口,有自己的数据源

  • 构建一个简单的微服务

因为我的 Spring Boot 应用是通过阿里云创建的,那么我们可以基于阿里云的生态工具来构建一个微服务架构。

1.确定需求

假设我们要开发一个新系统,包含以下两个功能:

A.用户管理(user-service):负责用户注册、登录等操作。

B.订单管理(order-service):负责创建订单、查询订单等功能。

这两个功能将被拆分成两个独立的微服务,并通过 Spring Cloud Alibaba 实现通信和协作。

2. 技术选型

框架:Spring Boot + Spring Cloud Alibaba

服务注册与发现:Nacos

负载均衡:SLB(LoadBalancer

配置管理:Nacos

API 网关:Spring Cloud Gateway

  1. 构建步骤

创建 Nacos 服务注册与配置中心

下载并解压 Nacos。Nacos官网| Nacos 配置中心 | Nacos 下载| Nacos 官方社区 | Nacos 官网

启动 Nacos:解压后进入 nacos/bin 目录打开cmd  Windows: startup.cmd -m standalone 

启动成功后,访问 http://localhost:8848/nacos,默认用户名和密码为 nacos/nacos。

创建用户服务(user-service)

创建订单服务(order-service)

创建API网关(Spring Cloud Gateway)

演练项目源码(如果这里没有,可以私信我要,写的比较简单)

你们的点赞是我动力的源泉。
这个源码资源其实绑定上了,不知道为啥不能免费下载,如果有需要私信我吧。

                                              

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.rhkb.cn/news/18950.html

如若内容造成侵权/违法违规/事实不符,请联系长河编程网进行投诉反馈email:809451989@qq.com,一经查实,立即删除!

相关文章

华为防火墙pppoe拨号接入互联网配置案例

目录 1.pppoe拨号背景2.网络拓扑3.网络需求4.网络配置4.1 网络基础配置4.2 pppoe配置4.2.1 pppoe服务端配置(现网环境可忽略)4.2.2 pppoe客户端配置4.2.3 结果验证 5.小结 1.pppoe拨号背景 PPPoE(Point-to-Point Protocol Over Ethernet)拨号产生的背景…

认识vue-admin

认识vue-admin **核心交付:** 为什么要基于现成架子二次开发 什么是二次开发:基于已有的代码(项目工程,脚手架)开进行新功能的开发 所以看懂已有的框架中的既有代码,变得很重要了 1. 背景知识 后台管理系统是一种最…

【16】思科AireOS:创建使用 LWA 认证的 WLAN

1. 概述 LWA(Local Web Authentication)是一种基于 Web 认证的方式,允许无线客户端在连接 WLAN 后,使用 Web 认证页面进行身份验证。该方法适用于访客网络或需要身份认证的场景。 本指南详细介绍如何在 Cisco AireOS 无线控制器(WLC)上配置 LWA 认证的 WLAN,并确保认证…

电解电容的参数指标

容量 这个值通常是室温25℃,在一定频率和幅度的交流信号下测得的容量。容量会随着温度、直流电压、交流电压值的变化而改变。 额定电压 施加在电容上的最大直流电压,通常要求降额使用。 例如额定电压是4V,降额到70%使用,最高施…

【C++】IO流

目录 一、C语言的输入与输出二、流是什么三、CIO流3.1 C标准IO流3.2 C文件IO流3.2.1 二进制读写3.2.2 文本读写 四、stringstream的简单介绍结尾 一、C语言的输入与输出 C语言中我们用到的最频繁的输入输出方式就是scanf ()与printf()。 scanf(): 从标准输入设备(键盘)读取数据…

软件开发 | GitHub企业版常见问题解读

什么是GitHub企业版? GitHub企业版是一个企业级软件开发平台,专为现代化开发的复杂工作流程而设计。 作为可扩展的平台解决方案,GitHub企业版使组织能够无缝集成其他工具和功能,并根据特定需求定制开发环境,提高整体…

红黑树:高效平衡二叉树的奥秘

🌟 快来参与讨论💬,点赞👍、收藏⭐、分享📤,共创活力社区。🌟 引言 在数据结构的奇妙世界里🧐,二叉搜索树就像一把神奇的钥匙,能高效地查找数据。但这把钥匙也…

[免费]SpringBoot公益众筹爱心捐赠系统【论文+源码+SQL脚本】

大家好,我是老师,看到一个不错的SpringBoot公益众筹爱心捐赠系统,分享下哈。 项目介绍 公益捐助平台的发展背景可以追溯到几十年前,当时人们已经开始通过各种渠道进行公益捐助。随着互联网的普及,本文旨在探讨公益事业…

【设计模式】03-理解常见设计模式-行为型模式(专栏完结)

前言 前面我们介绍完创建型模式和创建型模式,这篇介绍最后的行为型模式,也是【设计模式】专栏的最后一篇。 一、概述 行为型模式主要用于处理对象之间的交互和职责分配,以实现更灵活的行为和更好的协作。 二、常见的行为型模式 1、观察者模…

DeepSeek 助力 Vue 开发:打造丝滑的卡片(Card)

前言:哈喽,大家好,今天给大家分享一篇文章!并提供具体代码帮助大家深入理解,彻底掌握!创作不易,如果能帮助到大家或者给大家一些灵感和启发,欢迎收藏关注哦 💕 目录 Deep…

基于单片机的开关电源设计(论文+源码)

本次基于单片机的开关电源节能控制系统的设计中,在功能上设计如下: (1)系统输入220V; (2)系统.输出0-12V可调,步进0.1V; (3)LCD液晶显示实时电压&#xff…

SpringBoot(7)-Swagger

目录 一、是什么 二、SpringBoot集成Swagger 三、配置Swagger 3.1 配置文档信息 3.2 配置扫描接口 3.3 配置Swagger开关 3.4 配置API分组 3.5 实体配置 四、常用注解 五、总结 一、是什么 是一款API框架,API文档和API定义同步更新,可以在线测…

Atlassian工具集:Jira与Confluence集成优势、使用技巧、更新功能等

本文由Atlassian全球白金合作伙伴-龙智翻译整理,深入探讨了Jira和Confluence最受欢迎的集成功能与技巧,期待为您新一年的团队协作开个好头。 此前,来自K15t 的Customer Advocate Matt Reiner 和Atlassian副产品经理David Olive在一场学习会议…

Qt QOpenGLShaderProgram详解

1. 概述 QOpenGLShaderProgram 是 Qt 框架中用于管理 OpenGL 着色器程序的类。它提供了一种方便的方式来创建、编译和链接着色器,以及管理着色器程序中的属性和统一变量。通过 QOpenGLShaderProgram,开发者可以轻松地将顶点着色器和片段着色器组合成一个…

小爱音箱控制手机和电视听歌的尝试

最近买了小爱音箱pro,老婆让我扔了,吃灰多年的旧音箱。当然舍不得,比小爱还贵,刚好还有一台红米手机,能插音箱,为了让音箱更加灵活,买了个2元的蓝牙接收模块Type-c供电3.5接口。这就是本次尝试起…

ESXi安装【真机和虚拟机】(超详细)

项目简介: ESXi(Elastic Sky X Integrated)是VMware公司开发的一种裸机虚拟化管理程序,允许用户在单一物理服务器上运行多个虚拟机(VM)。它直接安装在服务器硬件上,而不是操作系统之上&#xff…

本地通过隧道连接服务器的mysql

前言 服务器上部署了 mysql,本地希望能访问该 mysql,但是又不希望 mysql 直接暴露在公网上 那么可以通过隧道连接 ssh 端口的方式进行连接 从外网看,服务器只开放了一个 ssh 端口,并没有开放 3306 监听端口 设置本地免密登录 …

MyBatis-Plus模块扩展分页查询

文章目录 1.说明2.common-mybatis-plus-starter1.目录结构2.MybatisPLusAutoConfiguration.java 添加MyBatis Plus分页插件3.PlusPageResult.java MyBatis Plus 分页对象的增强版4.SunPlusPageHelper.java 分页工具类 3.EasyCode模板修改4.common-mybatis-plus-starter-demo 分…

TestHubo基础教程-创建项目

TestHubo是一款国产开源一站式测试工具,涵盖功能测试、接口测试、性能测试,以及 Web 和 App 测试,可以满足不同类型项目的测试需求。本文将介绍如何快速创建第一个项目,以快速入门上手。 1、创建项目 在 TestHubo 中,…

Pythong 解决Pycharm 运行太慢

Pythong 解决Pycharm 运行太慢 官方给Pycharm自身占用的最大内存设低估了限制,我的Pycharm刚开始默认是256mb。 首先找到自己的Pycharm安装目录 根据合适自己的改 保存,重启Pycharm