微服务杂谈
几个概念
还是第一次听说Spring Cloud Alibaba ,真是孤陋寡闻了,以前只知道 SpringCloud 是为了搭建微服务的,spring boot 则是快速创建一个项目,也可以是一个微服务 。那么SpringCloud 和 Spring boot 有什么区别呢?SpringCloud是管路整个服务上的各个微服务,会依赖spring boot ,但是Spring boot也可以是普通的项目,也可以是微服务 所以不一定需要依赖Spring cloud 。
那再来说一下Spring Cloud Alibaba和 SpringCloud 关系,Spring Cloud Alibaba 是 SpringCloud 的一个子集。Spring Cloud主要依赖于Netflix OSS作为其核心组件,然而Netflix OSS的维护已经逐渐减少,为了弥补这一缺失并跟进最新的技术发展,阿里巴巴提供了Spring Cloud Alibaba。
Spring Cloud Alibaba 组件有哪些?
Nacos:作为注册中心和配置中心,为微服务应用程序的服务发现和动态配置提供了一种更现代的解决方案。
Sentinel:用于流量控制、熔断降级和系统负载保护,使得应用程序能够在面对复杂的网络环境时保持稳定。
RocketMQ:作为分布式消息队列,用于在微服务之间实现异步通信和解耦。
Dubbo:作为高性能的RPC框架,支持跨服务之间的远程调用。
Seata : 分布式事务解决方案
除了上面这些之外,使用 Spring Cloud Alibaba 的时候一般会搭配下面这些 Spring Cloud 组件一起使用:
- OpenFeign:轻量级 RESTful 的 HTTP 服务客户端,用于替代已经进入停更维护状态的 Feign(Netflix Feign)
- Gateway:用于网关服务,实现请求的转发和路由。
- Ribbon:用于客户端负载均衡,将请求分发给不同的微服务实例。
配置文件:
<!-- Dubbo Spring Cloud Starter --><dependency><groupId>com.alibaba.cloud</groupId><artifactId>spring-cloud-starter-dubbo</artifactId></dependency>
Spring CloudAlibaba 总结
1. 背景与由来:Spring Cloud Alibaba是由阿里巴巴推出的开源项目,源于阿里巴巴在构建大规模分布式系统时的实际需求。它整合了阿里巴巴自己的核心技术和Spring Cloud生态系统,提供了一个完整的微服务解决方案。
2. 功能丰富:Spring Cloud Alibaba提供了多个核心组件,包括Nacos(服务注册与发现)、Sentinel(流量控制、熔断降级)、RocketMQ(分布式消息中间件)、Dubbo(远程服务调用)等。这些组件为构建微服务应用提供了必要的基础设施和支持。
3. 与Spring Cloud的整合:作为Spring Cloud生态系统的一部分,Spring Cloud Alibaba与Spring Cloud的其他组件紧密结合,使得开发者可以在现有的Spring Cloud技术栈上无缝地集成和扩展应用。
4. 国内应用普及:随着国内企业对微服务架构的认知不断提升,Spring Cloud Alibaba作为一个专注于微服务的框架,逐渐得到了广泛应用。阿里巴巴的背景和技术实力也加速了Spring Cloud Alibaba在国内的普及。
5. 优秀的社区支持:Spring Cloud Alibaba拥有一个活跃的开源社区,吸引了许多国内开发者积极参与到项目的开发和贡献中。社区的支持为项目的不断改进和完善提供了有力的支持。
组件nacos:
配置文件:
<!-- Spring Cloud Nacos Service Discovery --><dependency><groupId>com.alibaba.cloud</groupId><artifactId>spring-cloud-starter-alibaba-nacos-discovery</artifactId></dependency>
1. nacos简介
nacos是阿里巴巴开源的动态服务发现、配置和服务管理组件。nacos的核心功能主要有:
- 服务注册:服务提供方向nacos注册服务
- 服务发现:服务消费方从nacos获取到服务提供方的调用信息
- 配置管理:作为配置中心,统一管理配置文件。使得配置文件可以动态修改而无需重启服务
2. nacos服务注册原理
1、每个服务提供者都会引入nacos-client的依赖,并且需要配置nacos的服务地址,当服务提供者启动的时候,nacos-client就会将服务提供者注册到nacos服务上去
2、之后服务提供者会定期(默认5s一次)向nacos发送心跳包请求(包含信息:服务名,ip,端口,权重,集群名等),告诉nacos服务“我还活着”,nacos收到这个心跳包之后就会在服务列表中找到这个服务,并将状态设置为健康,返回心跳间隔信息给到nacos-client。当超过一定时间(默认15s)没有收到服务提供者的心跳包后,就会更新其状态为不健康。如果30s没有收到服务提供者的心跳包,就会将其从服务列表中剔除。所以可以看到nacos认为服务不健康后并不会马上将其剔除。
3、服务调用者(如网关)会定期(默认10s一次)向nacos获取服务列表,并且会缓存到本地,然后调用时就是从本地的服务列表调用的

springcloud:注册中心、配置中心组件nacos详解(四)_nacos-client-CSDN博客
3. nacos的使用
Spring Cloud Nacos 服务注册与发现_spring.cloud.nacos.discovery.service-CSDN博客
组件dubbo:
微服务之间部署在不同的物理机器上那怎么通信呢,rpc 远程调用服务,dubbo的功能是能两两通信,dubbo组件中的zookerper或者 nacos 是服务的注册和发现。zookeper或者 nacos就好比一个“淘宝”平台,让买家能够发现卖家,买家买(通信)东西,就是通过dubbo。
dubbo可以替换sping cloud哪些组件?
Dubbo主要用于服务之间的远程调用和通信。虽然Dubbo本身并不是Spring Cloud的一部分,但它可以与Spring框架进行集成,并在某些场景下替换Spring Cloud中的某些组件或功能。具体来说,Dubbo可以替换或补充Spring Cloud中的以下组件或功能:
服务注册与发现:Dubbo使用自身的注册中心组件(如Zookeeper、Nacos、Etcd等),可以替换Spring Cloud中的Eureka、Consul等服务注册与发现组件。Dubbo的注册中心用于维护服务提供者和消费者的信息,实现服务的自动注册、发现和管理。
远程调用:Dubbo提供了基于RPC的远程调用机制,可以替换Spring Cloud中基于HTTP的远程调用方式(如使用RestTemplate或Feign)。Dubbo的RPC调用更加轻量级和高效,适用于大规模、高并发的服务调用场景。
负载均衡:Dubbo内置了多种负载均衡策略(如随机、轮询、一致性哈希等),可以替换或补充Spring Cloud中的负载均衡组件。Dubbo的负载均衡机制能够根据服务提供者的性能和负载情况,智能地分配请求,提高系统的吞吐量和稳定性。
虽然Dubbo可以在某些方面替换Spring Cloud的组件,但两者在设计和定位上存在差异。Dubbo更专注于服务之间的远程调用和通信,而Spring Cloud则是一个更完整的微服务解决方案,提供了服务治理、配置管理、熔断降级、智能路由等一系列功能.
有一个疑问?不是还有一个nacos么 ,为什么不用nacos 还再引出一个zookerper呢 ??
dubbo作为国内一款主流的分布式系统,支持的注册中心有zookeeper、nacos和redis等第三方中间件,同时也支持Simple和Multicast的方式。zk和nacos可能是最常使用的方式,到底谁更胜一筹呢?
nacos 和 zookeeper
一场事故告诉你zookeeper和nacos谁更适合做注册中心_为什么用nacos不用zk-CSDN博客
组件gateway:
1.k8s kvm docker
Docker、Kubernetes(K8s)和KVM辨析_kvm docker-CSDN博客
2. 微服务的缩容
减少实例数
3. 微服务常见问题
相关文章:
微服务杂谈
几个概念 还是第一次听说Spring Cloud Alibaba ,真是孤陋寡闻了,以前只知道 SpringCloud 是为了搭建微服务的,spring boot 则是快速创建一个项目,也可以是一个微服务 。那么SpringCloud 和 Spring boot 有什么区别呢?S…...
【Pandas操作2】groupby函数、pivot_table函数、数据运算(map和apply)、重复值清洗、异常值清洗、缺失值处理
1 数据清洗 #### 概述数据清洗是指对原始数据进行处理和转换,以去除无效、重复、缺失或错误的数据,使数据符合分析的要求。#### 作用和意义- 提高数据质量:- 通过数据清洗,数据质量得到提升,减少错误分析和错误决策。…...
如何分辨IP地址是否能够正常使用
在互联网的日常使用中,无论是进行网络测试、网站访问、数据抓取还是远程访问,一个正常工作的IP地址都是必不可少的。然而,由于各种原因,IP地址可能无法正常使用,如被封禁、网络连接问题或配置错误等。本文将详细介绍如…...
Sqoop 数据迁移
Sqoop 数据迁移 一、Sqoop 概述二、Sqoop 优势三、Sqoop 的架构与工作机制四、Sqoop Import 流程五、Sqoop Export 流程六、Sqoop 安装部署6.1 下载解压6.2 修改 Sqoop 配置文件6.3 配置 Sqoop 环境变量6.4 添加 MySQL 驱动包6.5 测试运行 Sqoop6.5.1 查看Sqoop命令语法6.5.2 测…...
【数据结构】排序算法系列——希尔排序(附源码+图解)
希尔排序 算法思想 希尔排序(Shell Sort)是一种改进的插入排序算法,希尔排序的创造者Donald Shell想出了这个极具创造力的改进。其时间复杂度取决于步长序列(gap)的选择。我们在插入排序中,会发现是对整体…...
c++(继承、模板进阶)
一、模板进阶 1、非类型模板参数 模板参数分类类型形参与非类型形参。 类型形参即:出现在模板参数列表中,跟在class或者typename之类的参数类型名称。 非类型形参,就是用一个常量作为类(函数)模板的一个参数,在类(函数)模板中…...
【机器学习】从零开始理解深度学习——揭开神经网络的神秘面纱
1. 引言 随着技术的飞速发展,人工智能(AI)已从学术研究的实验室走向现实应用的舞台,成为推动现代社会变革的核心动力之一。而在这一进程中,深度学习(Deep Learning)因其在大规模数据处理和复杂问题求解中的卓越表现,迅速崛起为人工智能的最前沿技术。深度学习的核心是…...
WebLogic 笔记汇总
WebLogic 笔记汇总 一、weblogic安装 1、创建用户和用户组 groupadd weblogicuseradd -g weblogic weblogic # 添加用户,并用-g参数来制定 web用户组passwd weblogic # passwd命令修改密码# 在文件末尾增加以下内容 cat >>/etc/security/limits.conf<<EOF web…...
leetcode:2710. 移除字符串中的尾随零(python3解法)
难度:简单 给你一个用字符串表示的正整数 num ,请你以字符串形式返回不含尾随零的整数 num 。 示例 1: 输入:num "51230100" 输出:"512301" 解释:整数 "51230100" 有 2 个尾…...
Python GUI入门详解-学习篇
一、简介 GUI就是图形用户界面的意思,在Python中使用PyQt可以快速搭建自己的应用,自己的程序看上去就会更加高大上。 有时候使用 python 做自动化运维操作,开发一个简单的应用程序非常方便。程序写好,每次都要通过命令行运行 pyt…...
QT5实现https的post请求(QNetworkAccessManager、QNetworkRequest和QNetworkReply)
QT5实现https的post请求 前言一、一定要有sslErrors处理1、问题经过2、代码示例 二、要利用抓包工具1、问题经过2、wireshark的使用3、利用wireshark查看服务器地址4、利用wireshark查看自己构建的请求报文 三、返回数据只能读一次1、问题描述2、部分代码 总结 前言 QNetworkA…...
vscode 使用git bash,路径分隔符缺少问题
window使用bash --login -i 使用bash时候,在系统自带的terminal里面进入,测试conda可以正常输出,但是在vscode里面输入conda发现有问题 bash: C:\Users\marswennaconda3\Scripts: No such file or directory实际路径应该要为 C:\Users\mars…...
F12抓包10:UI自动化 - Elements(元素)定位页面元素
课程大纲 1、前端基础 1.1 元素 元素是构成HTML文档的基本组成部分之一,定义了文档的结构和内容,比如段落、标题、链接等。 元素大致分为3种:基本结构、自闭合元素(self-closing element)、嵌套元素。 1、基本结构&…...
android 删除系统原有的debug.keystore,系统运行的时候,重新生成新的debug.keystore,来完成App的运行。
1、先上一个图:这个是keystore无效的原因 之前在安装这个旧版本android studio的时候呢,安装过一版最新的android studio,然后通过模拟器跑过测试的demo。 2、运行旧的项目到模拟器的时候,就报错了: Execution failed…...
SQL入门题
作者SQL入门小白,此栏仅是记录一些解题过程 1、题目 用户访问表users,记录了用户id(usr_id)和访问日期(log_date),求出连续3天以上访问的用户id。 2、解答过程 2.1数据准备 通过navicat创建数据…...
Python实战:实战练习案例汇总
Python实战:实战练习案例汇总 **Python世界系列****Python实践系列****Python语音处理系列** 本文逆序更新,汇总实践练习案例。 Python世界系列 Python世界:力扣题43大数相乘算法实践Python世界:求解满足某完全平方关系的整数实…...
zabbix之钉钉告警
钉钉告警设置 我们可以将同一个运維组的人员加入到同一个钉钉工作群中,当有异常出现后,Zabbix 将告警信息发送到钉钉的群里面,此时,群内所有的运维人员都能在第一时间看到这则告警详细。 Zabbix 监控系统默认没有开箱即用…...
《OpenCV计算机视觉》—— 对图片进行旋转的两种方法
文章目录 一、用numpy库中的方法对图片进行旋转二、用OpenCV库中的方法对图片进行旋转 一、用numpy库中的方法对图片进行旋转 numpy库中的 np.rot90 函数方法可以对图片进行旋转 代码实现如下: import cv2 import numpy as np# 读取图片 img cv2.imread(wechat.jp…...
Python 错误 ValueError 解析,实际错误实例详解 (一)
文章目录 前言Python 中错误 ValueError: No JSON object Could Be Decoded在 Python 中解码 JSON 对象将 JSON 字符串解码为 Python 对象将 Python 对象编码为 JSON 字符串Python 中错误 ValueError: Unsupported Pickle Protocol: 3Python 中的 Pickling 和 UnpicklingPython…...
[java][git]上传本地代码及更新代码到GitHub教程
上传本地代码及更新代码到GitHub教程 上传本地代码 第一步:去github上创建自己的Repository,创建页面如下图所示: 红框为新建的仓库的https地址 第二步: echo "# Test" >> README.md 第三步:建立g…...
在rocky linux 9.5上在线安装 docker
前面是指南,后面是日志 sudo dnf config-manager --add-repo https://download.docker.com/linux/centos/docker-ce.repo sudo dnf install docker-ce docker-ce-cli containerd.io -y docker version sudo systemctl start docker sudo systemctl status docker …...
安宝特方案丨XRSOP人员作业标准化管理平台:AR智慧点检验收套件
在选煤厂、化工厂、钢铁厂等过程生产型企业,其生产设备的运行效率和非计划停机对工业制造效益有较大影响。 随着企业自动化和智能化建设的推进,需提前预防假检、错检、漏检,推动智慧生产运维系统数据的流动和现场赋能应用。同时,…...
FastAPI 教程:从入门到实践
FastAPI 是一个现代、快速(高性能)的 Web 框架,用于构建 API,支持 Python 3.6。它基于标准 Python 类型提示,易于学习且功能强大。以下是一个完整的 FastAPI 入门教程,涵盖从环境搭建到创建并运行一个简单的…...
python爬虫:Newspaper3k 的详细使用(好用的新闻网站文章抓取和解析的Python库)
更多内容请见: 爬虫和逆向教程-专栏介绍和目录 文章目录 一、Newspaper3k 概述1.1 Newspaper3k 介绍1.2 主要功能1.3 典型应用场景1.4 安装二、基本用法2.2 提取单篇文章的内容2.2 处理多篇文档三、高级选项3.1 自定义配置3.2 分析文章情感四、实战案例4.1 构建新闻摘要聚合器…...
如何为服务器生成TLS证书
TLS(Transport Layer Security)证书是确保网络通信安全的重要手段,它通过加密技术保护传输的数据不被窃听和篡改。在服务器上配置TLS证书,可以使用户通过HTTPS协议安全地访问您的网站。本文将详细介绍如何在服务器上生成一个TLS证…...
2025 后端自学UNIAPP【项目实战:旅游项目】6、我的收藏页面
代码框架视图 1、先添加一个获取收藏景点的列表请求 【在文件my_api.js文件中添加】 // 引入公共的请求封装 import http from ./my_http.js// 登录接口(适配服务端返回 Token) export const login async (code, avatar) > {const res await http…...
有限自动机到正规文法转换器v1.0
1 项目简介 这是一个功能强大的有限自动机(Finite Automaton, FA)到正规文法(Regular Grammar)转换器,它配备了一个直观且完整的图形用户界面,使用户能够轻松地进行操作和观察。该程序基于编译原理中的经典…...
短视频矩阵系统文案创作功能开发实践,定制化开发
在短视频行业迅猛发展的当下,企业和个人创作者为了扩大影响力、提升传播效果,纷纷采用短视频矩阵运营策略,同时管理多个平台、多个账号的内容发布。然而,频繁的文案创作需求让运营者疲于应对,如何高效产出高质量文案成…...
七、数据库的完整性
七、数据库的完整性 主要内容 7.1 数据库的完整性概述 7.2 实体完整性 7.3 参照完整性 7.4 用户定义的完整性 7.5 触发器 7.6 SQL Server中数据库完整性的实现 7.7 小结 7.1 数据库的完整性概述 数据库完整性的含义 正确性 指数据的合法性 有效性 指数据是否属于所定…...
三分算法与DeepSeek辅助证明是单峰函数
前置 单峰函数有唯一的最大值,最大值左侧的数值严格单调递增,最大值右侧的数值严格单调递减。 单谷函数有唯一的最小值,最小值左侧的数值严格单调递减,最小值右侧的数值严格单调递增。 三分的本质 三分和二分一样都是通过不断缩…...
