当前位置: 首页 > news >正文

10.7学习

1.安全认证

●Session

认证中最常用的一种方式,也是最简单的。存在多节点session丢失的情况,可通过nginx粘性Cookie和Redis集中式Session存储解决

 

●HTTP Basic Authentication

服务端针对请求头中base64加密的Authorization 和用户名和密码进行校验。

 

●Token

Session 只是一个 key,会话信息存储在后端。而 Token 中会存储用户的信息,然后通过加密算法进行加密,只有服务端才能解密,服务端拿到 Token 后进行解密获取用户信息。

 

●JWT认证

JWT(JSON Web Token)用户提供用户名和密码给认证服务器,服务器验证用户提交信息的合法性;如果验证成功,会产生并返回一个 Token,用户可以使用这个 Token 访问服务器上受保护的资源。

①认证服务提供认证的 API,校验用户信息,返回认证结果

②通过JWTUtils中的RSA算法,生成JWT token,token里封装用户id和有效期

③服务间参数通过请求头进行传递,服务内部通过 ThreadLocal 进行上下文传递。

④Hystrix导致ThreadLocal失效的问题可以通过,重写 Hystrix 的 Callable 方法,传递需要的数据。

 

★Token最佳实践

●设置较短(合理)的过期时间。

 

●注销的 Token 及时清除(放入 Redis 中做一层过滤)。

虽然不能修改 Token 的信息,但是能在验证层面做一层过滤来进行处理。

 

●监控 Token 的使用频率。

为了防止数据被别人爬取,最常见的就是监控使用频率,程序写出来的爬虫程序访问频率是有迹可循的

 

●核心功能敏感操作可以使用动态验证(验证码)。

比如提现的功能,要求在提现时再次进行验证码的验证,防止不是本人操作。

 

●网络环境、浏览器信息等识别。

银行 APP 对环境有很高的要求,使用时如果断网,APP 会自动退出,重新登录,因为网络环境跟之前使用的不一样了,还有一些浏览器的信息之类的判断,这些都是可以用来保证后端 API 的安全。

 

●加密密钥支持动态修改。

如果 Token 的加密密钥泄露了,也就意味着别人可以伪造你的 Token,可以将密钥存储在配置中心,以支持动态修改刷新,需要注意的是建议在流量低峰的时候去做更换的操作,否则 Token 全部失效,所有在线的请求都会重新申请 Token,并发量会比较大。

 

2.灰度发布

★痛点:

●服务数量多,业务变动频繁,一周一发布

●灰度发布能降低发布失败风险,减少影响范围

通过灰度发布,先让一部分用户体验新的服务,或者只让测试人员进行测试,等功能正常后再全部发布,这样能降低发布失败带来的影响范围。

●当发布出现故障时,可以快速回滚,不影响用户

灰度后如果发现这个节点有问题,那么只需回滚这个节点即可,当然不回滚也没关系,通过灰度策略隔离,也不会影响正常用户

 

可以通过Ribbon的负载均衡策略进行灰度发布,可以使用更可靠的Discovery

 

★Discovery

基于Discovery 服务注册发现、Ribbon 负载均衡、Feign 和 RestTemplate 调用等组件的企业级微服务开源解决方案,包括灰度发布、灰度路由、服务隔离等功能

92f6c2262789460dab50c717c7d19ba5.png

 

①首先将需要发布的服务从转发过程中移除,等流量剔除之后再发布。

②部分机器中的版本进行升级,用户默认还是请求老的服务,通过版本来支持测试请求。

③测试完成之后,让新的版本接收正常流量,然后部署下一个节点,以此类推。

 

3.多版本隔离

a6e2473580fd44cca0a0d93420d46881.png

 

本地复用测试服务-Eureka Zone亮点

 

​ region 地理上的分区,比如北京、上海等

 

​ zone 可以简单理解为 region 内的具体机房

 

​ 在调用的过程中会优先选择相同的 zone 发起调用,当找不到相同名称的 zone 时会选择其他的 zone 进行调用,我们可以利用这个特性来解决本地需要启动多个服务的问题。

 

[^]: 当你访问修改的服务 A 时,这个服务依赖了 B、C 两个服务,B 和 C 本地没有启动,B 和 C 找不到相同的 zone 就会选择其他的 zone 进行调用,也就是会调用到测试环境部署的 B 和 C 服务,这样一来就解决了本地部署多个服务的问题。

 

4.各组件调优

当你对网关进行压测时,会发现并发量一直上不去,错误率也很高。因为你用的是默认配置,这个时候我们就需要去调整配置以达到最优的效果。

 

首先我们可以对容器进行调优,最常见的就是内置的 Tomcat 容器了,

 

Hystrix 的信号量(semaphore)隔离模式,并发量上不去很大的原因都在这里,信号量默认值是 100,也就是最大并发只有 100,超过 100 就得等待。

 

 

 

 

相关文章:

10.7学习

1.安全认证 ●Session 认证中最常用的一种方式,也是最简单的。存在多节点session丢失的情况,可通过nginx粘性Cookie和Redis集中式Session存储解决 ●HTTP Basic Authentication 服务端针对请求头中base64加密的Authorization 和用户名和密码进行校验。…...

基础算法之前缀和--Java实现(下)--LeetCode题解:-和为 K 的子数组 - 和可被 K 整除的子数组 -连续数组-矩阵区域和

这里是Themberfue 和为 K 的子数组 题目解析 返回子数组中所有元素的和等于给定k的个数。 算法讲解 这题好像是用滑动窗口解决,但其实不能,因为 nums 中的元素可能存在负数,就不能保证其单调性的性质。 用前缀和求也不易想到,…...

序列化与反序列化基础及反序列化漏洞(附案例)

参考文章: [web安全原理]PHP反序列化漏洞 - 笑花大王 - 博客园 (cnblogs.com) 一、概念 为了能有效的存储数据而不丢失数据的类型和内容,经常需要通过序列化对数据进行处理,将数据进行序列化后,会生成一个字符串,字符…...

Khronos:动态环境下时空度量语义SLAM的统一方法

Khronos: A Unified Approach for Spatio-Temporal Metric-Semantic SLAM in Dynamic Environments 原文 项目 引言: 人类居住环境通常是高度动态的,人、机器人和其他实体不断移动、互动和改变场景。对于机器人在这种情况下的操作,仅仅建立一…...

一个迷茫的25岁前端程序员的自述

作者:一尾流莺 一直听说程序员的危机在 35 岁,没想到我的危机从 25 岁就开始了。 我甚至不知道自己是不是 25 岁,也可能是 26 岁,或者 27 岁,1998 年的生日,按照 2023 - 1998 的算法就是 25,按…...

多文件并发多线程MD5工具(相对快速的MD5一批文件),适配自定义MD5 Hash I/O缓存。

自己写的多文件 MD5校验工具,一个文件开一个线程,有最大I/O 缓存设置,兼容读写MD5后缀文件。 共计91个文件,合计180G左右 12分钟左右,UI基本卡废,但程序没蹦,属于正常。 卡的原因是基本是用 I/O…...

Pikachu-url重定向-不安全的url跳转

不安全的url跳转 不安全的url跳转问题可能发生在一切执行了url地址跳转的地方。如果后端采用了前端传进来的(可能是用户传参,或者之前预埋在前端页面的url地址)参数作为了跳转的目的地,而又没有做判断的话就可能发生"跳错对象"的问题。 url跳转比较直接的危害是: …...

如何下载和安装CLion,图文详解

一、下载 登录JetBrains官网,下载最新版本的Clion,Clion目前没有社区版,都是专业版。 二、安装 1、启动Clion安装程序,下一步。 2、修改安装目录,下一步。 3、创建桌面快捷方式,更新PATH变量&#xff0…...

vue3导入本地图片2种实现方法

在<script setup>中使用import语法&#xff1a; <template><img :src"logo" alt"Logo"> </template><script setup> import logo from ./assets/logo.png; </script> 使用Vue的ref来动态地在<script setup>中…...

leetcode 刷题day36动态规划Part05 背包问题(完全背包、518. 零钱兑换 II、377. 组合总和 Ⅳ、70. 爬楼梯 (进阶))

完全背包 完全背包的每件商品都有无限个&#xff0c;和01背包的一不同主要体现在遍历顺序上。为了保证每个物品仅被添加一次&#xff0c;01背包内嵌的循环是从大到小遍历。而完全背包的物品是可以添加多次的&#xff0c;所以要从小到大去遍历。 518. 零钱兑换 II 思路&#…...

检查jar冲突,查找存在相同class的jar

写在前面 本文看下如何查找jar冲突&#xff0c;即查找哪些jar包中存在相同的class。如果是存在相同jar的不同版本&#xff0c;基本一眼就能看出来&#xff0c;然后结合maven的依赖关系将其剔除掉即可&#xff0c;但是当你遇到了有人手动拷贝某些class到jar包中导致冲突的情况时…...

PhpStudy-PHP5.4.45后门漏洞应用程序(C++/base64/winhttp)

PhpStudy-PHP5.4.45后门漏洞应用程序&#xff08;C/base64/winhttp&#xff09; 前言引言&#xff08;时间回到多年前&#xff09; PhpShellCmd.exe使用介绍&#xff1a;&#xff08;1&#xff09;输入网址检测是否存在PHP/5.4.45&#xff08;2&#xff09;whoami&#xff08;3…...

【优选算法】(第二十七篇)

目录 重排链表&#xff08;medium&#xff09; 题目解析 讲解算法原理 编写代码 合并K个升序链表&#xff08;hard&#xff09; 题目解析 讲解算法原理 编写代码 重排链表&#xff08;medium&#xff09; 题目解析 1.题目链接&#xff1a;. - 力扣&#xff08;LeetCod…...

学习Flask框架

Flask简介 Flask是一个使用 Python 编写的轻量级 Web 应用框架。其 WSGI 工具箱采用 Werkzeug &#xff0c;模板引擎则使用 Jinja2 。Flask使用 BSD 授权。 Flask也被称为 “microframework” &#xff0c;因为它使用简单的核心&#xff0c;用 extension 增加其他功能。Flask没…...

Elasticsearch:使用 LLM 实现传统搜索自动化

作者&#xff1a;来自 Elastic Han Xiang Choong 这篇简短的文章是关于将结构化数据上传到 Elastic 索引&#xff0c;然后将纯英语查询转换为查询 DSL 语句&#xff0c;以使用特定过滤器和范围搜索特定条件。完整代码位于此 Github repo 中。 首先&#xff0c;运行以下命令安装…...

人脸表情行为识别系统源码分享

人脸表情行为识别系统源码分享 [一条龙教学YOLOV8标注好的数据集一键训练_70全套改进创新点发刊_Web前端展示] 1.研究背景与意义 项目参考AAAI Association for the Advancement of Artificial Intelligence 项目来源AACV Association for the Advancement of Computer Vis…...

ThreadLocal原理解析及面试

基本使用 讲原理之前&#xff0c;我简单写个demo小程序说说怎么使用 public class TestThreadLocal {public static void main(String[] args) throws InterruptedException {ThreadLocal<String> tl new ThreadLocal();/**主线程设置了一个值*/tl.set("SSSSSs&…...

探索未来:mosquitto-python,AI领域的新宠

文章目录 探索未来&#xff1a;mosquitto-python&#xff0c;AI领域的新宠背景&#xff1a;为何选择mosquitto-python&#xff1f;库简介&#xff1a;mosquitto-python是什么&#xff1f;安装指南&#xff1a;如何安装mosquitto-python&#xff1f;函数用法&#xff1a;5个简单…...

C++版iwanna1

第一篇目录 开头程序Game.cpp源文件Player.h头文件Player.cpp源文件trigger.h头文件trigger.cpp源文件Cmp.h头文件Cmp.cpp源文件 开头 大家好&#xff0c;我叫这是我58。 程序 Game.cpp源文件 #define _CRT_SECURE_NO_WARNINGS 1 #include <iostream> #include <c…...

LSTM变种模型

一、GRU 1.概念 GRU&#xff08;门控循环单元&#xff0c;Gated Recurrent Unit&#xff09;是一种循环神经网络&#xff08;RNN&#xff09;的变体&#xff0c;旨在解决标准 RNN 在处理长期依赖关系时遇到的梯度消失问题。GRU 通过引入门控机制简化了 LSTM&#xff08;长短期…...

Qwen3.5-2B企业应用案例:制造业设备手册图像问答系统搭建全流程

Qwen3.5-2B企业应用案例&#xff1a;制造业设备手册图像问答系统搭建全流程 1. 项目背景与需求分析 在制造业生产现场&#xff0c;设备操作手册是工人日常工作的必备参考资料。传统纸质手册或PDF文档存在以下痛点&#xff1a; 查找效率低&#xff1a;遇到问题时需要手动翻阅…...

RT-Thread线程管理实战技巧与常见问题解析

1. RT-Thread线程管理实战指南在嵌入式系统开发中&#xff0c;线程管理是RTOS&#xff08;实时操作系统&#xff09;最核心的功能之一。作为一名长期使用RT-Thread的开发者&#xff0c;我发现很多初学者在掌握了线程理论后&#xff0c;在实际应用中仍然会遇到各种问题。本文将深…...

VideoAgentTrek-ScreenFilter模型压缩与量化教程:在边缘设备上实现轻量部署

VideoAgentTrek-ScreenFilter模型压缩与量化教程&#xff1a;在边缘设备上实现轻量部署 想让一个原本需要强大GPU才能流畅运行的视频分析模型&#xff0c;在树莓派或者Jetson Nano这类小巧的边缘设备上也能跑起来吗&#xff1f;这听起来像是个不可能的任务&#xff0c;但通过模…...

Phi-4-mini-reasoning推理服务监控:通过webshell日志诊断部署状态方法

Phi-4-mini-reasoning推理服务监控&#xff1a;通过webshell日志诊断部署状态方法 1. 模型简介 Phi-4-mini-reasoning 是一个基于合成数据构建的轻量级开源模型&#xff0c;专注于高质量、密集推理的数据处理。作为Phi-4模型家族的一员&#xff0c;它经过专门微调以提升数学推…...

开源大模型效果展示:Pixel Language Portal对emoji+文字混合输入的语义解析

开源大模型效果展示&#xff1a;Pixel Language Portal对emoji文字混合输入的语义解析 1. 项目概览 Pixel Language Portal&#xff08;像素语言跨维传送门&#xff09;是一款基于Tencent Hunyuan-MT-7B大模型构建的创新翻译工具。与传统翻译软件不同&#xff0c;它将语言转换…...

YEDDA中文文本标注工具:零基础快速上手的高效标注解决方案

YEDDA中文文本标注工具&#xff1a;零基础快速上手的高效标注解决方案 【免费下载链接】yedda-py3 项目地址: https://gitcode.com/gh_mirrors/ye/yedda-py3 在人工智能和自然语言处理领域&#xff0c;数据标注是构建高质量模型的基础。YEDDA中文文本标注工具是一款专为…...

嵌入式开发中的静态代码分析工具实战指南

1. 嵌入式代码静态分析工具概述作为一名嵌入式开发工程师&#xff0c;我深知在资源受限的MCU环境中&#xff0c;代码质量直接决定了产品的稳定性和可靠性。传统的C语言编译器虽然能发现语法错误&#xff0c;但对代码设计缺陷和潜在风险往往无能为力。这正是静态代码分析工具的价…...

互联网大厂Java求职者面试全场景详解(含技术栈解析与问答)

互联网大厂Java求职者面试全场景详解&#xff08;含技术栈解析与问答&#xff09; 文章标签 Java SE, Jakarta EE, JVM, Spring Boot, Maven, 微服务, 消息队列, 互联网大厂面试, 求职招聘, 技术问答 文章简述 本文围绕互联网大厂Java求职者面试场景&#xff0c;设计了由严肃面…...

OpenClaw技能组合:Qwen2.5-VL-7B串联多个自动化任务流

OpenClaw技能组合&#xff1a;Qwen2.5-VL-7B串联多个自动化任务流 1. 为什么需要任务流串联 上周我需要完成一个市场竞品分析的周报&#xff0c;整个过程让我意识到手动操作的效率瓶颈。首先要在电商平台截图商品页面&#xff0c;然后用OCR工具提取价格信息&#xff0c;接着把…...

Phi-3-mini-4k-instruct-gguf效果展示:温度0.0下100%一致性的制度类文本生成

Phi-3-mini-4k-instruct-gguf效果展示&#xff1a;温度0.0下100%一致性的制度类文本生成 1. 模型介绍与特点 Phi-3-mini-4k-instruct-gguf是微软推出的轻量级文本生成模型&#xff0c;属于Phi-3系列中的GGUF版本。这个模型特别适合需要稳定、一致输出的场景&#xff0c;尤其是…...