首页 > 编程语言 >云原生,云服务,服务网格,限流算法和oauth鉴权

云原生,云服务,服务网格,限流算法和oauth鉴权

时间:2024-12-26 19:29:49浏览次数:8  
标签:令牌 服务 限流 授权 oauth 服务器 鉴权 客户端

目录

云原生

服务网格

云服务

限流算法

sentinel组件里的滑动窗口算法

oauth


云原生

cloud native 是一种构建和运行应用程序的方法,cloud表示应用程序运行在云中,不是传统的数据中心,native 表示应用程序从设计开始就考虑到云环境,充分运用和发挥云平台的弹性和分布式优势。解决传统部署方式算力不足的问题,为将来更大规模算力要求的业务场景提供了更强有力的支撑。

要素:1.必须是微服务。

2.必须实现容器化

3.支持devops,开发和运维

4.必须满足持续交付

服务网格

对微服务架构进一步升级,实现网络通信和业务逻辑的分离,使得开发人员专注于业务的实现上。他是专门用来处理服务通信的基础设施层,主要功能是处理服务之间的通信,并实现请求的可靠传输。我们Service mesh称作第三代微服务架构。

sidecar 一个独立的代理进程,负责微服务之间的通信,承载了二代微服务架构里的服务发现,容错,服务治理的功能,使得微服务基础设施和业务逻辑迭代解耦。

为什么叫服务网格?

因为在大规模的微服务架构里,每个服务的通信都是由sidecar代理,各个服务之间的通信拓扑图开起来像一个网格形状。

isio 目前主流开源服务网格框架。

云服务

利用互联网提供动态易扩展的虚拟化资源整合服务,他的主题架构主要有基础设施服务,平台服务、软件服务,通过抽象和分层,提出了一切即服务的概念,x as service

iaas infrastructure as a Service 基础设施即服务,是面向企业或者开发者,提供基础资源支持,包括计算,存储,网络等,这样企业在开发APP时,只需要在公有的云平台上注册一个账号,支付相关费用配置各种云服务器,存储,网络带宽,不要操心机房选址,设备采购,实体服务器,存储,网络问题。作为开发者,只需要在服务器上安装各类程序,中间件,数据库,包括前端与后台,测试,上线,迭代,更新操作都可以以iaas为基础。

PaaS platform as a Service 平台即服务,面向开发者,提供软件运行的平台环境。以api,SDK的形式发放给客户调用,包括数据分析,人工智能,docker,消息推送,通信,语言识别,图像识别,统计,广告等。

在iaas基础之上,解决了操作系统,数据库,运行时环境,中间件,各种框架的搭建工作,程序员只需要关心自己的APP就行了。

SaaS software as a Service 软件即服务,面向企业或个人终端用户,通过网络租用形式提供软件,包括管理类,业务类,行业类应用等。SaaS可以调用PaaS层的能力,也可以使用iaas层的资源独立开发。通过SaaS用户只需要专注自己的业务,例如写代码,维护等各种定制化工作,都交给SaaS厂商完成,用户只需要注册续费就能解决所有问题。

限流算法

限制流量请求的频次,是在高并发情况下,保护系统的一种策略,避免在流量高峰时导致系统崩溃,造成系统不可用的问题。

计算器限流算法,每次调用一次加1,处理结束后减1,适用单一维度的访问频率限制上,例如,验证码每隔60秒发送一次,或者调用接口的次数。

滑动窗口,本质上是计算器,通过以时间维度的可滑动窗口设计,来减少临界值带来的并发超过阈值问题。每次进行数据统计的时候,只需要统计这个窗口内每个时间刻度的访问量。

漏桶限流,一种恒定速率的限流算法,不管请求量是多少,服务端的处理效率是恒定的。

令牌桶限流,相对于漏桶算法,令牌桶算法可以处理突发流量问题。核心思想,令牌桶以恒定的速率生成令牌并保存到令牌桶里,桶的大小是固定的,令牌桶满了就不在生产令牌。每一个客户端请求进来的时候,必须从令牌桶里获得一个令牌才能访问,否则排队等待。在流量低峰的时候,令牌桶会出现堆积,因此当出现瞬时高峰的时候,有足够多的令牌可以获取,因此令牌桶可以处理瞬时流量,网关层的限流或者接口的调用的限流,都可以使用,例如Google的guava,redisson的限流使用令牌桶算法。

sentinel组件里的滑动窗口算法

数据统计算法,在一个大的数组上,定义一个固定长度的滑动窗口,然后这个窗口在数组上滑动,在滑动的过程里,左边会出一个元素,右边会进一个元素。根据当前窗口内的数据进行计算,统计出数据。

滑动窗口用来解决数组统计问题:

1.解决数组或字符串子元素问题

2.把嵌套的for循环问题转化为单循环问题,降低时间复杂度。

在hystrix里,使用了滑动窗口实现熔断触发的数据统计。在sentinel限流框架里,用来实现限流数据统计。通过时间线驱动窗口滑动,以hystrix为例,他定义了一个长度为10的数组,每个数组表示一个1秒的时间区间跨度,然后每个区间记录当前时间段内发生的所有请求的失败,成功次数。hystrix只需要统计当前10秒内对应的10个窗口总的成功,失败次数。最后根据配置的阈值决定是否触发熔断。

oauth

开放标准的授权协议,可以在不共享用户名和密码的情况下,实现将授权从一个应用程序转移到另一个程序。用来实现第三方授权登录。主目标是提供一个安全,开放,可扩展的身份验证和授权机制。

4种角色,

1.资源所有者

2.客户端,需要授权的应用

3.资源服务器,保存信息的服务器,例如QQ密码

4.授权服务器,提供api的服务器,微信的open api服务

工作流程,

一般情况下资源服务器和授权服务器是一台服务器,

客户端向资源所有者发送授权请求,一般资源所有者的资源存放在资源服务器。

客户端收到资源服务器的授权许可。

客户端拿到许可之后,向授权服务器发送一次验证,授权服务器给客户端发送一个 access token 访问令牌。

客户端获得令牌后,交给资源服务器。

资源服务器将获得的令牌传给授权服务器验证令牌的有效性。

资源服务器验证令牌通过后,返回一个受保护的资源个客户端。

授权模式,授权码,简化模式,密码模式,客户端模式。

标签:令牌,服务,限流,授权,oauth,服务器,鉴权,客户端
From: https://blog.csdn.net/z524635690/article/details/144646508

相关文章

  • 在Asp.netCore中使用Attribute来描述限流
    前言同事问我Asp.netCore的RateLimiting是怎么使用的,我回答说很简单的,你只要按照如下步骤来:在RateLimiterOptions上注册policy,记住policy对应的policyName在Web应用添加UseRateLimiter()中间件在api对应的Action上标注[EnableRateLimiting(policyName)]半小时后,同事说要对......
  • SpringCloud微服务项目实战 - 限流、熔断、降级处理
    SpringCloud微服务项目实战-限流、熔断、降级处理|Id|Title|DateAdded|SourceUrl|PostType|Body|BlogId|Description|DateUpdated|IsMarkdown|EntryName|CreatedTime|IsActive|AutoDesc|AccessPermission||-------------|-------------|-----......
  • sentinel学习笔记6-限流降级(上)
    本文属于sentinel学习笔记系列。网上看到吴就业老师的专栏,写的好值得推荐,我整理的有所删减,推荐看原文。https://blog.csdn.net/baidu_28523317/category_10400605.htmlsentinel实现限流降级、熔断降级、黑白名单限流降级、系统自适应限流降级以及热点参数限流降级都是由Pro......
  • 分布式系统架构5:限流设计模式
    这是小卷对分布式系统架构学习的第5篇文章,今天来学习限流器和限流设计模式1.为什么要限流?任何一个系统的运算、存储、网络资源都不是无限的,当系统资源不足以支撑外部超过预期的突发流量时,就应该要有取舍,建立面对超额流量自我保护的机制,而这个机制就是微服务中常说的“限流”2......
  • 老生常谈——分布式限流:部分Sentinal源码解读
    基础知识HTTPCODE=429“请求过多”A.限流的类型服务端客户端限流的标的IP用户...基本要求准确限制过量的请求。低延时。限流器不能拖慢HTTP响应时间。尽量占用较少的内存。这是一个分布式限流器,可以在多个服务器或者进程之间共享。......
  • OAuth2.0中刷新令牌(Refresh Token)的作用
    来着ChatGPT:1.为什么需要刷新令牌?访问令牌的短有效期:访问令牌(AccessToken)通常设置短有效期(例如几分钟到几小时),以减少令牌被盗用后产生的安全风险。令牌过期后,客户端需要一种方式重新获取新的访问令牌,以继续访问受保护资源。避免频繁授权:如果每次访问令牌过期后都需要......
  • redis-cli (error) NOAUTH Authentication required问题解决
    1.查找redis-cli所在目录whichredis-cli2.切换到redis-cli目录3.切换到usr/bin目录执行以下命令redis-cli-hip-pport4.验证redis登录密码auth'password'5.获取redis数据......
  • [Blazor] 一文理清 Blazor Identity 鉴权验证
    一文理清BlazorIdentity鉴权验证摘要在现代Web应用程序中,身份认证与授权是确保应用安全性和用户数据保护的关键环节。Blazor作为基于C#和.NET的前端框架,提供了丰富的身份认证与授权机制。本文将深入解析Blazor的身份认证框架的构成,比较不同渲染模式下鉴权逻辑的异同,并通过具......
  • 【SpringCloud】4.Resilience 4J——服务熔断/服务降级、隔离、限流
    CircuitBreaker断路器Resilience4j:实现CircuitBreaker规范熔断(CricutBreaker,服务熔断+服务降级):隔离(BulkHead):限流(RateLimiter):CircutBreaker断路器概述官网地址:https://spring.io/projects/spring-cloud-circuitbreaker历史Hystrix(豪猪哥)目前也进入维护模式。......
  • 无限流量卡与无线网络跑pcdn
    对于无限流量卡和无线网络是否可以用于PCDN(PeerContentDeliveryNetwork,即点对点内容分发网络)的问题,以下是对两者的详细分析:无限流量卡理论可行性:无限流量卡提供了理论上不受限制的数据使用量,这看似满足了PCDN需要大量数据传输的需求。然而,需要注意的是,尽管流量是无限的,......