springboot第33集:nacos图

news2024/12/23 13:21:04

./startup.sh -m standalone

aa310e4a89cf6471628a7daa484ab84e.jpeg

  • Nacos是一个内部微服务组件,需要在可信的内部网络中运行,不可暴露在公网环境,防止带来安全风险。

  • Nacos提供简单的鉴权实现,为防止业务错用的弱鉴权体系,不是防止恶意攻击的强鉴权体系。

鉴权

https://nacos.io/zh-cn/docs/v2/guide/user/auth.html

d4cf0efa0d502ff650ac0589bdaf922b.png

3e915d414a077d166bbd3a1b805b7c55.png

6fbc2ba918f49989c4692139e28b173e.png

8e86393ee30f2796b9cf942df0f89c46.png
049511e3d3d09ccfcb0512fab2520c2d.png

d7d5aebf4574ec2584aed34d445bae2f.png
image.png
c7f3369eda3557a8b0cf60a5fa93cda7.png
image.png
5c19d8dd07b321eaa512658158a5bc9c.png
image.png
ceebf8d5f5f497f351c67a599cd7840b.png
image.png
59cc455b9154aa5673bf3865577a55e6.png
image.png
6039f106b15c761ff4f96a8b6e8da540.png
image.png
4f994a826df3452187fca1be80b666bb.png
image.png
f6bbc08adc00a60d958df3c53e504b4f.png
image.png
1ba5bae102d0bad88853c67f188d8fce.png
image.png

在Spring Boot后端中,RPC代表远程过程调用(Remote Procedure Call)。RPC是一种通信机制,它允许不同计算机或进程间的程序能够相互调用彼此的函数或方法,就像调用本地函数一样。

在分布式系统中,当应用程序的各个部分分布在不同的服务器上,需要相互之间进行通信和协作时,RPC是非常有用的。通过RPC,应用程序可以将请求发送到远程服务器上的方法或服务,并获取返回结果,就好像这些方法或服务是在本地执行的一样。

Spring Boot本身并不提供RPC的实现,但是它可以与其他RPC框架集成,如:

  1. gRPC: 由Google开发的高性能、跨语言的RPC框架,使用Protocol Buffers(protobuf)作为默认的序列化协议。

  2. Apache Dubbo: 一种基于Java的高性能、轻量级的RPC框架,提供了丰富的功能和可插拔的扩展点。

  3. Apache Thrift: 由Apache开发的跨语言的RPC框架,支持多种编程语言,并提供了丰富的数据类型和服务定义。

  4. Spring Cloud: 尽管不是专门的RPC框架,但它提供了在微服务架构中实现RPC风格通信的能力,例如通过RESTful API或Feign客户端。

要在Spring Boot应用程序中使用RPC,您需要:

  1. 选择一个适合您的需求的RPC框架,并在项目中添加相关的依赖。

  2. 根据RPC框架的文档和示例配置和实现服务端和客户端。

  3. 在客户端中调用远程服务的方法,将请求发送到远程服务器并处理返回结果。

需要注意的是,RPC通常比本地方法调用涉及更多的网络通信,因此在设计RPC接口时需要考虑网络延迟和异常处理,以确保系统的可靠性和性能。

与硬件通信交互在物联网应用中是一种常见的需求。Spring Boot作为后端框架,可以与硬件进行通信,实现物联网功能。下面是一般实现物联网的基本步骤以及后端处理的方法:

  1. 硬件设备选择:首先,您需要选择适合您物联网项目的硬件设备。这可以是传感器、执行器、嵌入式设备等,取决于您的具体应用场景。

  2. 通信协议选择:在与硬件通信时,您需要选择合适的通信协议。常见的通信协议有MQTT、CoAP、HTTP等。您应该根据硬件设备和网络环境的特点选择最适合的协议。

  3. 连接硬件设备:在Spring Boot后端中,您可以使用相应的通信库或框架来实现与硬件设备的通信。例如,如果选择MQTT协议,您可以使用Eclipse Paho或者Spring Integration的MQTT支持来建立与硬件设备的连接。

  4. 设计API和数据格式:定义与硬件设备交互的API和数据格式。这涉及到如何发送命令到硬件设备,以及如何解析硬件设备发送回来的数据。使用JSON或其他轻量级的数据格式可以方便数据交换。

  5. 处理数据和业务逻辑:一旦与硬件设备建立了连接,并通过API交互,后端需要处理从硬件设备接收到的数据。您可以编写相应的业务逻辑来处理这些数据,例如存储到数据库、进行实时分析等。

  6. 安全性:在物联网应用中,安全性非常重要。确保与硬件设备之间的通信是安全的,可以使用加密和身份验证机制来保护通信的安全性。

  7. 异常处理:在与硬件设备通信时,可能会出现通信故障或其他异常情况。后端需要做好异常处理,保证系统的稳定性和可靠性。

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
0ed785886dc07ef9be7d3c4587393b1c.png
image.png

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

7458be5952a8a5e0b8ae369048f7ecbc.png
image.png
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
a60b49e1d6fed703ddd32d8a42d5a0fb.png
image.png

把下载好的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

901948bcaf881c44b2e98618bb87c59c.png
image.png
9de79ab6d0f70311f1eb33c0215c0d45.png
image.png

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

226b6ca77f985efb104273ae25da88a2.png

创建容器

docker run --name sentinel -p 8081:8081 -p 8719:8719 -d sentinel-dashboard:1.8.4

docker ps

docker start sentinel

f07ad46c55a8890b3b7fccb7e14b20be.png
image.png

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();
0e5af9da4660c4044b1b0d41f7607c3d.jpeg
image.png

加群联系作者vx:xiaoda0423

仓库地址:https://github.com/webVueBlog/JavaGuideInterview

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

如若内容造成侵权/违法违规/事实不符,请联系多彩编程网进行投诉反馈,一经查实,立即删除!

相关文章

门面模式:简化复杂系统的接口调用

门面模式:简化复杂系统的接口调用 什么是门面模式? 门面模式(Facade Pattern)是一种结构型设计模式,它提供了一个简单的接口,用于访问复杂子系统中的一组接口。门面模式通过封装子系统的复杂性&#xff0…

如何免费制作中小学分班查询系统?

暑假即将结束,新学年即将开始,学校面临着一个重要任务:学生分班。不论是新生入学还是低年级升入高年级,都需要进行分班工作。这对负责分班的老师们来说,增加了相当大的工作量和挑战。 在开学前,如何快速解…

排序八卦炉之插入和希尔

文章目录 1.插入排序1.1代码1.2复杂度 2.希尔排序2.1代码2.2复杂度2.3算法解析 1.插入排序 1.1代码 //插入排序1.0 /* void InsertSort(int* a, int n) {//i&#xff1a; 0 -- 倒数第2个元素for (int i 0; i < n - 1; i){//end记录iint end i;//tmp记录end后一个值int tm…

ios_base::out和ios::out、ios_base::in和ios::in、ios_base::app和ios::app等之间有什么区别吗?

2023年8月2日&#xff0c;周三晚上 今天我看到了这样的两行代码&#xff1a; std::ofstream file("example.txt", std::ios_base::out);std::ofstream file("example.txt", std::ios::out);这让我产生了几个疑问&#xff1a; 为什么有时候用ios_base::o…

物联网潜在的巨大价值在于大数据分析

物联网潜在的巨大价值在于大数据分析 从数据里去挖掘市场或者用户的精准需求。 往小的说&#xff0c;后台可以统计用户家里各各插座一年甚至更久的用电情况&#xff0c;这些数据也可以通过app或者小程序展现给用户。 用户可以很直观看到自己一年的用电情况&#xff0c;哪个家…

2.6 伽马校正 一、Gamma校正

一、Gamma校正 颜色空间 通用&#xff1a;sRGB 电影&#xff1a;DCI-P3 电视&#xff1a;Rec-709、PAL等 印刷&#xff1a;CMYK、Adobe RGB 传递函数 我们知道了颜色的颜色值&#xff0c;要在电子设备上显示&#xff0c;就要把它转换为视频信号&#xff0c;传递函数就是用…

Linux上安装Keepalived,多台Nginx配置Keepalived(保姆级教程)

目录 一、yum安装 第一步&#xff1a;下载 第二步&#xff1a;编辑Keepalived配置文件&#xff08;第一台&#xff09; 第三步&#xff1a;编辑Keepalived配置文件&#xff08;第二台&#xff09; 第四步&#xff1a;我们在本机利用cmd ping一下 一、yum安装 第一步&…

[国产MCU]-BL602开发实例-开发环境搭建

开发环境搭建 文章目录 开发环境搭建1、BL602介绍2、软件准备3、源码编译3.1 编译内置工程3.2 自定义工程、自定义组件添加与编译4、固件下载BL602 是一款Wi-Fi + BLE组合的芯片组,用于低功耗和高性能应用开发。无线子系统包含2.4G无线电,Wi-Fi 802.11b/g/n和BLE 5.0 基带/MA…

【编程范式】聊聊编程的本质

任何算法都会有两个部分&#xff0c; 一个是 Logic 部分&#xff0c;这是用来解决实际问题的。另一个是 Control 部分&#xff0c;这是用来决定用什么策略来解决问题。Logic 部分是真正意义上的解决问题的算法&#xff0c;而 Control 部分只是影响解决这个问题的效率。程序运行…

单元测试之- mock工具mockito

常用的mock工具mockito 在编写单元测试时&#xff0c;需要mock依赖的对象&#xff0c;减少依赖对象对测试的影响&#xff0c;Mocktio是常用的mock工具之一&#xff0c;那么mockito提供了哪些功能呢&#xff1f; Mock对象的创建和配置&#xff1a;Mockito可以通过简单的语法创建…

WebView2对比CefSharp的超强优势

第一次使用了CefSharp组件&#xff0c;集成开发结束后&#xff0c;测试及使用过程中遇到了一些无法处理的bug及严重的性能问题。然后又测试对比了其他多种组件&#xff0c;具体情况可以阅读我的博客​ ​《.NET桌面程序集成Web网页开发的十种解决方案》​​。最终选用了微软新出…

质数(判定质数 分解质因数 筛质数)

这里写目录标题 一、判定质数思路分析代码实现 二、分解质因数思路分析典型题目代码实现 三、质数筛经典题目思路分析1. 朴素筛法2. 埃氏筛法3. 欧拉筛法 一、判定质数 思路分析 由于每个合数的因子是成对出现的&#xff0c;即如果 d d d 是 n n n 的因子&#xff0c;那么 …

【python】两数之和 python实现(详细讲解)

&#x1f449;博__主&#x1f448;&#xff1a;米码收割机 &#x1f449;技__能&#x1f448;&#xff1a;C/Python语言 &#x1f449;公众号&#x1f448;&#xff1a;测试开发自动化【获取源码商业合作】 &#x1f449;荣__誉&#x1f448;&#xff1a;阿里云博客专家博主、5…

使用gdb打印寄存器和地址的值

目录 一、文件介绍&#xff1a;1、源码2、目标文件test13、使用dynamorio工具生成的注释文件&#xff08;后面简称它注释文件吧&#xff09; 二、使用gdb调试目标文件1、设置断点2、设置汇编格式为intel3、打开tui界面&#xff08;汇编c语言&#xff09;4、run5、查看当前指令5…

tomcat8的安装与服务启动脚本的配置并部署jpress应用

目录 一.了解tomcat8 二.下载安装包 三.安装jdk与tomcat 1.安装jdk 2.安装tomcat &#xff08;1&#xff09;解压安装包并创建软链接 &#xff08;2&#xff09;设置启动用户并更改权限 &#xff08;3&#xff09;编写系统服务文件 &#xff08;4&#xff09;重新加载文件…

【计算机视觉|语音分离】期望在嘈杂环境中聆听:一个用于语音分离的不依赖于讲话者的“音频-视觉模型”

本系列博文为深度学习/计算机视觉论文笔记&#xff0c;转载请注明出处 标题&#xff1a;Looking to Listen at the Cocktail Party: A Speaker-Independent Audio-Visual Model for Speech Separation 链接&#xff1a;Looking to listen at the cocktail party: a speaker-in…

数据采集的方法有哪些?

近年来&#xff0c;国家和各大企业都在部署大数据战略。“大数据”这个词也越来越频繁地出现在我们的生活中。当我们在进行网上冲浪时&#xff0c;页面总会跳出我们想要搜索的相关产品或关联事物。大数据&#xff0c;似乎总是能够“算”出我们“心中所想”。那么&#xff0c;大…

键入网址到网页显示,期间发生了什么

HTTP 浏览器做的第一步工作是解析URL 首先浏览器做的第一步工作就是要对URL进行解析&#xff0c;从而生成发送给 web 服务器的请求信息。 所以图中长长的URL实际上是请求服务器里的文件资源。 如果图中的蓝色部分URL元素省略了&#xff0c;那应该请求哪个文件呢&#xff1f; 当…

arcgis--连接到数据库失败--外部数据库驱动程序(1)

问题描述&#xff1a; 在加载Excel表格时出现以下问题&#xff0c;无法加载进来。 经过百般尝试&#xff0c;终于找到解决方法。 解决方案&#xff1a; 在微软官网下载accessDataEngine程序&#xff0c;并按照相关位数&#xff08;32位或64位&#xff09;安装&#xff0c;具…

FastAPI(七)应用配置

目录 一、在apps下新建文件夹config 二、新建配置文件app_conf.py 一、在apps下新建文件夹config 二、新建配置文件app_conf.py from functools import lru_cachefrom pydantic.v1 import BaseSettingsclass AppConfig(BaseSettings):app_name: str "Windows10 插件&qu…