10.7学习

news2024/11/26 4:25:54

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 就得等待。

 

 

 

 

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

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

相关文章

分层解耦-03.IOCDI-入门

一. IOC&DI入门 二.控制转移注解Component 因为dao和service接口的实现类对象需要传入到service和controller中,因此需要将dao和service代码加上Component注解,使之实现控制反转,将实现类对象交给IOC容器管理,成为IOC容器中…

字符编码发展史5 — UTF-16和UTF-32

上一篇《字符编码发展史4 — Unicode与UTF-8》我们讲解了Unicode字符集与UTF-8编码。本篇我们将继续讲解字符编码的第三个发展阶段中的UTF-16和UTF-32。 2.3. 第三个阶段 国际化 2.3.2. Unicode的编码方式 2.3.2.2. UTF-16 UTF-16也是一种变长编码,对于一个Unic…

构建快速应用,国内低代码开发平台的选择指南

本文盘点10款主流低代码开发平台,包括ZohoCreator、阿里宜搭等,分析其特点及应用场景。各平台各具优势,适用于不同企业和业务需求,建议企业根据自身需求和技术水平试用后选择。 一、Zoho Creator Zoho Creator 是一个低代码开发平…

软件设计之SSM(8)

软件设计之SSM(8) 路线图推荐: 【Java学习路线-极速版】【Java架构师技术图谱】 尚硅谷新版SSM框架全套视频教程,Spring6SpringBoot3最新SSM企业级开发 资料可以去尚硅谷官网免费领取 学习内容: Mybatis 数据输出多表映射动态语句 1、数…

【Linux】基础IO(文件描述符、缓冲区、重定向)

🌈个人主页:秦jh__https://blog.csdn.net/qinjh_?spm1010.2135.3001.5343🔥 系列专栏:https://blog.csdn.net/qinjh_/category_12625432.html 目录 前言 C文件IO相关操作 系统文件I/O open open函数返回值 文件描述符fd re…

Rspamd:开源垃圾邮件过滤系统

Rspamd 是一个开源垃圾邮件过滤和电子邮件处理框架,旨在根据各种规则评估消息,包括正则表达式、统计分析以及与 URL 黑名单等自定义服务的集成。 系统会分析每封邮件并做出判定,MTA可据此采取进一步行动,例如拒绝邮件或添加垃圾邮…

【GeekBand】C++设计模式笔记7_Bridge_桥接模式

1. “单一职责”模式 在软件组件的设计中,如果责任划分的不清晰,使用继承得到的结果往往是随着需求的变化,子类急剧膨胀,同时充斥着重复代码,这时候的关键是划清责任。典型模式 DecoratorBridge 2. Bridge 桥接模式…

UE5+ChatGPT实现3D AI虚拟人综合实战

第11章 综合实战:UE5ChatGPT实现3D AI虚拟人 通过结合Unreal Engine 5(UE5)的强大渲染能力和ChatGPT的自然语言处理能力,我们可以实现一个高度交互性的AI虚拟人。本文将详细介绍如何在UE5中安装必要的插件,配置OpenAI…

trans-cinnamate 4-monooxygenase肉桂酸4-羟化酶C4H的克隆和功能鉴定-文献精读62

Cloning and functional characterization of two cinnamate 4-hydroxylase genes from Pyrus bretschneideri 两种从白梨(Pyrus bretschneideri)中克隆和功能鉴定的肉桂酸4-羟化酶基因 摘要 肉桂酸4-羟化酶(C4H)是植物苯丙素类…

安装Spark-单机部署,Standalone集群部署,Spark on Yarn实现

目录 单机部署spark本地模式部署 Anaconda部署Python(3台机器都需要) Spark本地模式部署 Spark Python Shell Spark的Standalone集群部署 Standalone集群架构 Standalone集群部署 Standalone集群启动 Standalone集群测试 Spark on YARN的实现 Spark on YARN&#xf…

解决java: 无法访问java.lang.Record

版权声明 本文原创作者:谷哥的小弟作者博客地址:http://blog.csdn.net/lfdfhl 错误描述 项目在编译期间报错:java: 无法访问java.lang.Record, 找不到java.lang.Record的类文件;图示如下: 解决方案 请在…

力扣203.移除链表元素

题目链接:203. 移除链表元素 - 力扣(LeetCode) 给你一个链表的头节点 head 和一个整数 val ,请你删除链表中所有满足 Node.val val 的节点,并返回 新的头节点 。 示例 1: 输入:head [1,2,6…

57.对称二叉树

迭代 class Solution {public boolean isSymmetric(TreeNode root) {if(rootnull){return true;}Deque<TreeNode> denew LinkedList<>();TreeNode l,r;int le;de.offer(root.left);de.offer(root.right);while(!de.isEmpty()){lde.pollFirst();rde.pollLast();if(…

如何使用MATLAB代码生成器生成ADRC跟踪微分器(TD) PLC源代码(ST)

ADRC线性跟踪微分器TD详细测试 ADRC线性跟踪微分器TD详细测试(Simulink 算法框图+CODESYS ST+博途SCL完整源代码)-CSDN博客文章浏览阅读383次。ADRC线性跟踪微分器(ST+SCL语言)_adrc算法在博途编程中scl语言-CSDN博客文章浏览阅读784次。本文介绍了ADRC线性跟踪微分器的算法和…

P3197 [HNOI2008] 越狱

题目传送门 题面 [HNOI2008] 越狱 题目描述 监狱有 n n n 个房间&#xff0c;每个房间关押一个犯人&#xff0c;有 m m m 种宗教&#xff0c;每个犯人会信仰其中一种。如果相邻房间的犯人的宗教相同&#xff0c;就可能发生越狱&#xff0c;求有多少种状态可能发生越狱。 …

js操作元素的其他操作(4个案例+效果图+代码)

目录 1. 获取元素的位置和大小 案例:获取元素的位置和大小 1.代码 2.效果 2. 获取元素的可视区域 案例:获取元素的可视区域 1.代码 2.效果 3. 元素的滚动操作 案例:元素的滚动操作 1.代码 2.效果 4. 获取鼠标指针位置 案例:时刻获取鼠标位置 1.代码 2.效果 案例:拖动的小球 1.代…

第一个Flutter应用(一)

1、创建项目 1.1 新建 1.2 选择Flutter SDK的位置 1.3 项目名称 英文单词加下划线起名规范&#xff0c;其他默认即可。 1.4 点击运行 发生报错显示我们的JAVA版本不符合 1.5 更改版本设置 1.6 再次启动项目 2、分析页面代码 以下是lib/main.dart的源代码&#xff08;为了阅…

为什么一定要用大模型,为什么说AI大模型开发人人必备?

AI 大模型技术经过2023年的狂飙&#xff0c;2024年迎来应用的落地&#xff0c;对 IT 同学来讲&#xff0c;这里蕴含着大量的技术机会&#xff0c;人人必备开发技能。 文讨论 AI 大模型开发技术大师的修炼之道&#xff0c;试图找到一个共同的速成模式&#xff0c;希望对 IT 同学…

数据结构(7.4_2)——B树的插入删除

B树的插入 B树的删除 对非终端结点的删除 对终端结点的删除 终端结点关键字低于下限时&#xff1a; 借后继结点&#xff1a; 借前驱结点&#xff1a; 结点合并&#xff1a; 总结 &#xff1a;

图像分割恢复方法

传统的图像分割方法主要依赖于图像的灰度值、纹理、颜色等特征&#xff0c;通过不同的算法将图像分割成多个区域。这些方法通常可以分为以下几类&#xff1a; 1.基于阈值的方法 2.基于边缘的方法 3.基于区域的方法 4.基于聚类的方法 下面详细介绍这些方法及其示例代码。 1. 基…