springboot第33集:nacos图
./startup.sh -m standalone

Nacos是一个内部微服务组件,需要在可信的内部网络中运行,不可暴露在公网环境,防止带来安全风险。
Nacos提供简单的鉴权实现,为防止业务错用的弱鉴权体系,不是防止恶意攻击的强鉴权体系。
鉴权
https://nacos.io/zh-cn/docs/v2/guide/user/auth.html














在Spring Boot后端中,RPC代表远程过程调用(Remote Procedure Call)。RPC是一种通信机制,它允许不同计算机或进程间的程序能够相互调用彼此的函数或方法,就像调用本地函数一样。
在分布式系统中,当应用程序的各个部分分布在不同的服务器上,需要相互之间进行通信和协作时,RPC是非常有用的。通过RPC,应用程序可以将请求发送到远程服务器上的方法或服务,并获取返回结果,就好像这些方法或服务是在本地执行的一样。
Spring Boot本身并不提供RPC的实现,但是它可以与其他RPC框架集成,如:
gRPC: 由Google开发的高性能、跨语言的RPC框架,使用Protocol Buffers(protobuf)作为默认的序列化协议。
Apache Dubbo: 一种基于Java的高性能、轻量级的RPC框架,提供了丰富的功能和可插拔的扩展点。
Apache Thrift: 由Apache开发的跨语言的RPC框架,支持多种编程语言,并提供了丰富的数据类型和服务定义。
Spring Cloud: 尽管不是专门的RPC框架,但它提供了在微服务架构中实现RPC风格通信的能力,例如通过RESTful API或Feign客户端。
要在Spring Boot应用程序中使用RPC,您需要:
选择一个适合您的需求的RPC框架,并在项目中添加相关的依赖。
根据RPC框架的文档和示例配置和实现服务端和客户端。
在客户端中调用远程服务的方法,将请求发送到远程服务器并处理返回结果。
需要注意的是,RPC通常比本地方法调用涉及更多的网络通信,因此在设计RPC接口时需要考虑网络延迟和异常处理,以确保系统的可靠性和性能。
与硬件通信交互在物联网应用中是一种常见的需求。Spring Boot作为后端框架,可以与硬件进行通信,实现物联网功能。下面是一般实现物联网的基本步骤以及后端处理的方法:
硬件设备选择:首先,您需要选择适合您物联网项目的硬件设备。这可以是传感器、执行器、嵌入式设备等,取决于您的具体应用场景。
通信协议选择:在与硬件通信时,您需要选择合适的通信协议。常见的通信协议有MQTT、CoAP、HTTP等。您应该根据硬件设备和网络环境的特点选择最适合的协议。
连接硬件设备:在Spring Boot后端中,您可以使用相应的通信库或框架来实现与硬件设备的通信。例如,如果选择MQTT协议,您可以使用Eclipse Paho或者Spring Integration的MQTT支持来建立与硬件设备的连接。
设计API和数据格式:定义与硬件设备交互的API和数据格式。这涉及到如何发送命令到硬件设备,以及如何解析硬件设备发送回来的数据。使用JSON或其他轻量级的数据格式可以方便数据交换。
处理数据和业务逻辑:一旦与硬件设备建立了连接,并通过API交互,后端需要处理从硬件设备接收到的数据。您可以编写相应的业务逻辑来处理这些数据,例如存储到数据库、进行实时分析等。
安全性:在物联网应用中,安全性非常重要。确保与硬件设备之间的通信是安全的,可以使用加密和身份验证机制来保护通信的安全性。
异常处理:在与硬件设备通信时,可能会出现通信故障或其他异常情况。后端需要做好异常处理,保证系统的稳定性和可靠性。
Sentinel 环境
熔断降级组件,https://github.com/alibaba/Sentinel/releases
java -Dserver.port=8080 -Dcsp.sentinel.dashboard.server = localhost:8080 -Dproject.name = sentinel-dashboard -jar sentinel-dashboard-1.8.x.jar

1、docker安装sentinel
docker pull bladex/sentinel-dashboard
2、启动镜像
docker run --name sentinel -d -p 8858:8858 -d bladex/sentinel-dashboard
3、开放端口
firewall-cmd --permanent --add-port=8858/tcp
4、登录:
http://192.168.1.58:8858/#/dashboard/flow/sentinel-dashboard
账号密码默认均为:sentinel
brew install redis
brew services restart redis
ps -ef|grep redis

cd /Users/xiaolige/app
## 创建 redis master 节点配置文件目录
mkdir -p redis/redisSentinel/master
## 创建 redis slave 节点配置文件目录
mkdir -p redis/redisSentinel/slave
## 创建 redis sentinel 节点配置文件目录
mkdir -p redis/redisSentinel/sentinel
## 创建 redis 启动相关脚本目录
mkdir -p redis/redisSentinel/script
## 创建 redis 日志目录
mkdir -p redis/redisSentinel/logs

把下载好的sentinel-dashboard-1.7.2.jar
包上传到服务器/usr/local中
进入/usr/local目录启动
cd /usr/local
启动Sentinel
直接启动sentinel控制台
java -jar sentinel-dashboard-1.7.2.jar
后台进程方式启动
nohup java -jar sentinel-dashboard-1.7.2.jar >sentinel.log &
管理Sentinel
浏览器访问:http://localhost:8080
默认账号密码
账号:sentinel
密码:sentinel
nacos is starting with standalone
./startup.sh -m standalone
nacos is starting,you can check the /Users/jeskson/Downloads/nacos/logs/start.out


Docker安装Sentinel(Mac)
java -jar sentinel-dashboard-1.8.6.jar
startup.cmd -m standalone
拉取依赖java:8-alpine镜像
docker pull java:8-alpine
创建Dockerfile
在目录 /Users/xxx/docker/sentinel
(根据需要自定义) 下创建Dockerfile文件,并授权
sentinel % pwd /Users/luyou/docker/sentinel
sentinel % touch Dockerfile # 授权目录
chmod -R 777 sentinel
cd sentinel
将 sentinel-dashboard-1.8.4.jar
放入 /Users/xxx/docker/sentinel
目录下
FROM java:8-alpine
COPY ./sentinel-dashboard-1.8.4.jar /tmp/sentinel-dashboard-1.8.4.jar
EXPOSE 8081 8719
ENTRYPOINT java -Dserver.port=8081 -Dcsp.sentinel.dashboard.server=localhost:8081 -Dproject.name=sentinel-dashboard -jar /tmp/sentinel-dashboard-1.8.4.jar
docker build . -t sentinel-dashboard:1.8.4

创建容器
docker run --name sentinel -p 8081:8081 -p 8719:8719 -d sentinel-dashboard:1.8.4
docker ps
docker start sentinel

docker stop sentinel
docker rm sentinel
docker logs -f sentinel
进入容器
docker exec -it sentinel bash
退出容器
exit
Docker安装Seata
Docker安装Nacos
Docker安装Mongodb
Docker安装RabbitMQ
java -jar sentinel-dashboard-1.8.6.jar
nslookup github.com 8.8.8.8
java -jar -Dserver.port=8080 sentinel-dashboard-1.8.6.jar
java -jar -Dserver.port=8718 sentinel-dashboard-1.8.6.jar
./startup.sh -m standalone
http://localhost:8848/nacos/#
8718
问题 异常提示:JWT signature does not match locally computed signature. JWT validity cannot be asserted and should not be trusted.
中文意思是:JWT签名与本地计算的签名不匹配。无法断言JWT有效性,不应信任JWT有效性。
解决 出现这种异常的情况有:
1、生成token时用的密钥和验签时用的密钥不一致。通过打断点的方式debug检查对比两个地方的密钥是否一致。
2、验签时使用的令牌不对。通过打断点的方式debug检查,生成的令牌和回传的令牌是否一致。
public static void addAuthentication(HttpServletResponse res, String username, String role) {String JWT = Jwts.builder().setSubject(username).setExpiration(new Date(System.currentTimeMillis() + EXPIRATIONTIME)).claim("roleName", role).signWith(SignatureAlgorithm.HS512, SECRET).compact();res.addHeader(HEADER_STRING, TOKEN_PREFIX + " " + JWT);
}
// parse the token.
Claims body = Jwts.parser().setSigningKey(SECRET).parseClaimsJws(token.replace(TOKEN_PREFIX, "")).getBody();
String username = body.getSubject();

加群联系作者vx:xiaoda0423
仓库地址:https://github.com/webVueBlog/JavaGuideInterview
相关文章:

springboot第33集:nacos图
./startup.sh -m standalone Nacos是一个内部微服务组件,需要在可信的内部网络中运行,不可暴露在公网环境,防止带来安全风险。Nacos提供简单的鉴权实现,为防止业务错用的弱鉴权体系,不是防止恶意攻击的强鉴权体系。 鉴…...

学习gRPC(一)
gRPC 简介 根据官网的介绍,gRPC 是开源高性能远程过程调用(RPC)框架,可以在任何环境中运行。它可以有效地连接数据中心内部和数据中心之间的服务,并为负载平衡、跟踪、运行状况检查和身份验证提供支持。同时由于其建立…...

【二进制安全】堆漏洞:Double Free原理
参考:https://www.anquanke.com/post/id/241598 次要参考:https://xz.aliyun.com/t/6342 malloc_chunk 的源码如下: struct malloc_chunk { INTERNAL_SIZE_T prev_size; /*前一个chunk的大小*/ INTERNAL_SIZE_T size; /*当前chunk的…...

python之open,打开文件时,遇到解码错误处理方式
在Python中,当我们打开一个文件时,我们可以指定文件的编码方式。如果文件的编码方式与我们指定的编码方式不同,那么就会出现解码错误。为了避免这种情况,我们可以使用errors参数来指定如何处理解码错误。 errors参数用于指定解码…...

STM32 CAN通信-CubeMX环境下CAN通信程序的编程与调试经验
文章目录 STM32 CAN通信-CubeMX环境下CAN通信程序的编程 STM32 CAN通信-CubeMX环境下CAN通信程序的编程 STM32F103ZE芯片 CAN通信测试代码: #include "main.h" #include "can.h"CAN_HandleTypeDef hcan1;void SystemClock_Config(void);int ma…...

windows创建不同大小的文件命令
打开命令窗口(windowsR输入cmd打开) 输入:fsutil file createnew C:\Users\Desktop\fileTran\10M.txt 10240000,创建10M大小的文件。 文件若存在需要先删除。...

Attention Is All You Need
Attention Is All You Need 摘要1. 简介2. Background3. 模型架构3.1 编码器和解码器堆栈3.2 Attention3.2.1 缩放的点积注意力(Scaled Dot-Product Attention)3.2.2 Multi-Head Attention3.2.3 Attention 在我们模型中的应用 3.3 Position-wise前馈网络…...

手写线程池 - C++版 - 笔记总结
1.线程池原理 创建一个线程,实现很方便。 缺点:若并发的线程数量很多,并且每个线程都是执行一个时间较短的任务就结束了。 由于频繁的创建线程和销毁线程需要时间,这样的频繁创建线程会大大降低 系统的效率。 2.思考 …...

PHP 容器化引发线上 502 错误状态码的修复
最后更新时间 2023-01-24. 背景 笔者所在公司技术栈为 Golang PHP,目前部分项目已经逐步转 Go 语言重构,部分 PHP 业务短时间无法用 Go 重写。 相比 Go 语言,互联网公司常见的 Nginx PHP-FPM 模式,经常会出现性能问题—— 特…...

QT中UDP之UDPsocket通讯
目录 UDP: 举例: 服务器端: 客户端: 使用示例: 错误例子并且改正: UDP: (User Datagram Protocol即用户数据报协议)是一个轻量级的,不可靠的࿰…...

【C语言】10-三大结构之循环结构-1
1. 引言 在日常生活中经常会遇到需要重复处理的问题,例如 统计全班 50 个同学平均成绩的程序求 30 个整数之和检查一个班级的同学程序是否及格要处理以上问题,最原始的方法是分别编写若干个相同或相似的语句或者程序段进行处理 例如:处理 50 个同学的平均成绩可以先计算一个…...

Windows下RocketMQ的启动
下载地址:下载 | RocketMQ 解压后 一、修改runbroker.cmd 修改 bin目录下的runbroker.cmd set "JAVA_OPT%JAVA_OPT% -server -Xms2g -Xmx2g" set "JAVA_OPT%JAVA_OPT% -XX:MaxDirectMemorySize15g" set "JAVA_OPT%JAVA_OPT% -cp %CLASSP…...

linux内核升级 docker+k8s更新显卡驱动
官方驱动 | NVIDIA在此链接下载对应的显卡驱动 # 卸载可能存在的旧版本nvidia驱动(如果没有安装过可跳过,建议执行) sudo apt-get remove --purge nvidia* # 安装驱动需要的依赖 sudo apt-get install dkms build-essential linux-headers-generic sudo vim /etc/mo…...

express学习笔记2 - 三大件概念
中间件 中间件是一个函数,在请求和响应周期中被顺序调用(WARNING:提示:中间件需要在响应结束前被调用) 路由 应用如何响应请求的一种规则 响应 / 路径的 get 请求: app.get(/, function(req, res) {res…...

Steam搬砖蓝海项目
这个项目早在很久之前就已经存在,并且一直非常稳定。如果你玩过一些游戏,你一定知道Steam是什么平台。Steam平台是全球最大的综合性数字发行平台之一,玩家可以在该平台购买、下载、讨论、上传和分享游戏和软件。 今天我给大家解释一下什么是…...

就业并想要长期发展选数字后端还是ic验证?
“就业并想要长期发展选数字后端还是ic验证?” 这是知乎上的一个热点问题,浏览量达到了13,183。看来有不少同学对这个问题感到疑惑。之前更新了数字后端&数字验证的诸多文章,从学习到职业发展,都写过,唯一没有做过…...

当服务器域名出现解析错误的问题该怎么办?
域名解析是互联网用户接收他们正在寻找的域的地址的过程。更准确地说,域名解析是人们在浏览器中输入时使用的域名与网站IP地址之间的转换过程。您需要站点的 IP 地址才能知道它所在的位置并加载它。但,在这个过程中,可能会出现多种因素…...

面试必考精华版Leetcode2095. 删除链表的中间节点
题目: 代码(首刷看解析 day22): class Solution { public:ListNode* deleteMiddle(ListNode* head) {if(head->nextnullptr) return nullptr;ListNode *righthead;ListNode *lefthead;ListNode *NodeBeforeLeft;while(right!n…...

对 Redis 实现分布式事务的探索与实现
对 Redis 实现分布式事务的探索与实现 一、简介简介优势 二、Redis 的事务机制事务WATCH 命令MULTI 命令EXEC 命令UNWATCH 命令 三、Redis 的分布式事务集群架构分布式事务分布式事务实现方式1. 两阶段提交(2PC)方式Paxos 算法实现方式Raft 算法实现方式…...

Matlab实现Spectral Clustering算法
Spectral Clustering算法是一种基于图论的聚类算法,它可以将数据点按照图结构进行划分,发现复杂和非线性可分的结构。在这篇博客中,我将介绍Spectral Clustering算法的原理和步骤,并给出一个用Matlab实现的代码示例。 目录 一、…...

Android 测试
工程目录图 1- Espresso 2- uiautomator Espresso 文档UI Automator文档ui-automator 英文文档 请点击下面工程名称,跳转到代码的仓库页面,将工程 下载下来 Demo Code 里有详细的注释 代码:testespresso 参考文献 Android 利用 espre…...

全面解析大语言模型的工作原理
当ChatGPT在去年秋天推出时,在科技行业乃至世界范围内引起了轰动。当时,机器学习研究人员尝试研发了多年的语言大模型(LLM),但普通大众并未十分关注,也没有意识到它们变得多强大。 如今,几乎每个…...

cmake+pybind11打包c++库成python wheel安装包
目录 写在前面准备1、pybind11获取源码编译安装 2、conda demo官方源码修改CMakeLists.txt编译生成安装测试 参考完 写在前面 1、本文内容 有时候我们需要用c代码,供python调用,本文提供将c库封装成python接口的方法,并将库打包成可通过pip安…...

史上最细,接口自动化测试框架-Pytest+Allure+Excel整理(代码)
目录:导读 前言一、Python编程入门到精通二、接口自动化项目实战三、Web自动化项目实战四、App自动化项目实战五、一线大厂简历六、测试开发DevOps体系七、常用自动化测试工具八、JMeter性能测试九、总结(尾部小惊喜) 前言 Allure框架 Allu…...

【计算机视觉中的 GAN 】 - 条件图像合成和 3D 对象生成(2)
一、说明 上文 【计算机视觉中的 GAN 】或多或少是GANs,生成学习和计算机视觉的介绍。我们达到了在 128x128 图像中生成可区分图像特征的程度。但是,如果你真的想了解GAN在计算机视觉方面的进展,你肯定必须深入研究图像到图像的翻译。…...

智安网络|常见的网络安全陷阱:你是否掉入了其中?
在数字化时代,网络安全成为了一个重要的议题。随着我们越来越多地在互联网上进行各种活动,诸如在线银行交易、社交媒体分享和在线购物等,我们的个人信息也更容易受到攻击和滥用。虽然有许多关于网络安全的指导和建议,但仍然有许多…...

亚马逊云科技HPC解决方案,帮助浙江大学实现成本和科研任务的双丰收
浙江大学土壤学科是朱祖祥院士等几代土壤科学家共同创建的A国家重点学科,整体实力雄厚,优势特色明显,总体水平居国内前列。在亚马逊云科技科研创新支持计划(Amazon Web Services Cloud Credits for Research)的多次支持…...

【Docker】Docker中安装MySQL数据库
文章目录 1. 前言2. Docker中安装MySQL服务2.1. 查看可用的MySQL版本2.2. 拉取MySQL镜像2.3. 查看本地镜像2.4. 运行容器2.5. 查看正在运行的容器2.6. 查看容器内部2.7. 授权root远程登录2.8. 在宿主机连接到容器的MySQL2.9. 用Navicat连接容器的MySQL 3. 如果是MySQL8.0可能需…...

Unity的IPostBuildPlayerScriptDLLs:深入解析与实用案例
Unity IPostBuildPlayerScriptDLLs Unity IPostBuildPlayerScriptDLLs是Unity引擎中的一个非常有用的功能,它可以让开发者在构建项目后自定义哪些文件需要被复制到输出目录中。这个功能可以帮助开发者更好地控制项目的构建过程,确保输出目录只包含必要的…...

MySQL数据库服务器安装与配置(步骤简单详细,看完可学会下载MySQL所有版本)
目录 引言 一,5.6.51数据库服务器下载 二,8.1.0最新版数据库服务器下载 三,MySQL客户端下载 引言 个人认为MySQl数据库目前推荐的两个版本系列为5.6.51和8.系列。 至于我们为什么要下载两个版本呢?是因为官方在数据库下载的结构…...