目录
云原生
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