设计模式-外观模式
外观模式案例123456789101112组建—家庭影院:DVD播放器、投影仪、自动屏幕、环绕立体声、爆米花机,要求完成使用家庭影院的功能,其过程为:·直接用遥控器:统筹各设备开关·开爆米花机·放下屏幕·开投影仪。·开音响·开DVD,选dvd。·去拿爆米花·调陪灯光·播放·观影结束后,关闭各种设备
传统方式的解决方法1234567ClientTest { public static void main(String args[]){ //1.创建相关对象 //2.调用创建的各个对象的一系列方法 //3.调用DVDPlayer对象的play方法 }}
传统方式解决影院管理问题
在ClientTest的main方法中,创建各个子系统的对象,并直接去调用子系统(对象)相关方法,会造成调用过程混乱,没有清晰的过程
不利于在ClientTest 中,去维护对子系统的操作
解决思路:定义一个高层接口,给子系统中的一组接口提供一个一致的界面(比如在高层接口提供四个方法ready, play, pause,e ...
OAuth
一、OAuth2.0介绍OAuth(开放授权)是一个开放标准,允许用户授权第三方应用访问他们存储在另外的服务提供者上的信息,而不 需要将用户名和密码提供给第三方应用或分享他们数据的所有内容
通过例子去理解OAuth2.0协议的认证流程:
用户借助微信认证登录网站,用户就不用单独在网站注册用户,怎么样算认证成功吗?网站需要成功从微信获取用户的身份信息则认为用户认证成功,那如何从微信获取用户的身份信息?用户信息的拥有者是用户本人,微信需要经过用户的同意方可为网站生成令牌,网站拿此令牌方可从微信获取用户的信息。
客户端请求第三方授权 ,点击微信的图标以微信账号登录系统,用户是自己在微信里信息的资源拥有者。
资源拥有者同意给客户端授权 , 验证通过后,微 信会询问用户是否给授权访问自己的微信数据,用户点击“确认登录”表示同意授权,微信认证服务器会颁发一个授权码,并重定向到网站。
客户端获取到授权码,请求认证服务器申请令牌,客户端应用程序请求认证服务器,请求携带授权码。
认证服务器向客户端响应令牌,微信认证服务器验证了客户端请求的授权码,如果合法则给客户端颁发令牌,令牌是客户端访问资源 ...
SpringSecurity原理
一、SpringSecurity 的过滤器介绍采用的是责任链的设计模式,它有一条很长的过滤器链。
WebAsyncManagerIntegrationFilter:将 Security 上下文与 Spring Web 中用于处理异步请求映射的 WebAsyncManager 进行集成。
SecurityContextPersistenceFilter:在每次请求处理之前将该请求相关的安全上下文信息加载到 SecurityContextHolder 中,然后在该次请求处理完成之后,将SecurityContextHolder 中关于这次请求的信息存储到一个“仓储”中,然后将SecurityContextHolder 中的信息清除,例如在 Session 中维护一个用户的安全信息就是这个过滤器处理的。
HeaderWriterFilter:用于将头信息加入响应中。
CsrfFilter:用于处理跨站请求伪造。
LogoutFilter:用于处理退出登录。
UsernamePasswordAuthenticationFilter:用于处理基于表单的登录请求,从表单中获取用户名和密 ...
SpringSecurity微服务权限
一、微服务是什么由来微服务架构风格是一种使用一套小服务来开发单个应用的方式途径,每个服务运行在自己的进程中,并使用轻量级机制通信,通常是 HTTP API,这些服务基于业务能力构建,并能够通过自动化部署机制来独立部署,这些服务使用不同的编程语言实现,以及不同数据存储技术,并保持最低限度的集中式管理。
微服务优势
微服务每个模块就相当于一个单独的项目,代码量明显减少,遇到问题也相对来说比较好解决。
微服务每个模块都可以使用不同的存储方式(比如有的用 redis,有的用 mysql等),数据库也是单个模块对应自己的数据库。
微服务每个模块都可以使用不同的开发技术,开发模式更灵活。
微服务本质微服务,关键其实不仅仅是微服务本身,而是系统要提供一套基础的架构,这种架构使得微服务可以独立的部署、运行、升级,不仅如此,这个系统架构还让微服务与微服务之间在结构上“松耦合”,而在功能上则表现为一个统一的整体。这种所谓的“统一的整体”表现出来的是统一风格的界面,统一的权限管理,统一的安全策略,统一的上线过程,统一的日志和审计方法,统一的调度方式,统一的访问入口等等。
微服务的目的是有效的拆分应用,实 ...
集群安全机制
一、概述kubernetes通过API Server 的认证授权、准入控制机制及保护敏感信息的 Secret 机制等。
有以下几个目标:
保证容器与其所在的宿主机的隔离。
限制容器给基础设施及其他容器带来消极影响的能力。
最小权限原则一一合理限制所有组件的权限,确保组件只执行它被授权的行为,通过限制单个组件的能力来限制它所能到达的权限范围。
明确组件间边界的划分。
划分普通用户和管理员的角色。
在必要时允许将管理员权限赋给普通用户。
允许拥有“ Secret ”数据( Keys Certs Passwords )的应用在集群中运行。
二、API Server 认证管理(Authentication)Kubernetes 集群中所有资源的访问和变更都是通过kubernetes API Server 的REST API 来实现的,所以集群安全的关键点就在于如何识别并认证客户端身份( Authentication ),以及随后访问权限的授权( Authorization )
Kubernetes 集群提供了3种级别的客户端身份认证方式。
HTTPS 证书认证:基于 CA 根证书签名的双 ...
kube-proxy运行机制分析
一、概念Kubernetes 在创建服务时会为服务分配一个虚拟的IP地址,客户端通过访问这个虚拟的 IP地址来访问服务,而服务则负责将请求转发到后端的 Pod 上。这就是 个反向代理。但是,它和普通的反向代理有一些不同:首先它的IP地址是虚拟的,想从外面访问还需要一些技巧;其次是它的部署和启停是 Kubernetes 统一自动管理的。
真正将 Service 的作用落实的是背后的 kube-proxy 服务进程。
Kubernetes 集群的每个 Node 上都会运行一个 kube-proxy 服务进程,这个进程可以看作Service 的透明代理兼负载均衡器,其核心功能是将到某个 Service 的访问请求转发到后端的Pod 实例上。对每一个 TCP 类型的 Kubernetes Service, kube-proxy 都会在本地 Node 上建一个 SocketServer 来负责接收请求,然后均匀发送到后端某个 Pod 的端口上,这个过程默认采Round Robin 负载均衡算法。另外 Kubernetes 也提供通过修改 Service 的 service.spec.sessio ...
kubelet运行机制分析
一、简介每个 Node 节点(又称 Minion )上都会启动 kubelet 服务进程。该进程用于处理 Master 节点下发到本节点的任务,管理 Pod及Pod 中的容器。每个Kubelet会在 API Server 上注册节点自身信息,定期向 Master 节点汇报节点资源的使用情况,并通过cAdvisor 监控容器和节点资源。
二、节点管理点通过设置 kubelet 启动参数--register-node ,来决定是否向 API Server 注册自己.注册时包括以下参数
--api-servers: API Server 的位置。
--kubeconfig: kubeconfig 文件,用于访问 API Server 的安全配置文件
--cloud-provider :云服务商IaaS地址,仅用于公有云环境
每个 kubelet 被授予创建和修改任何节点的权限。但是在实践中,它仅仅创建和修改自己。
三、Pod管理kubelet 通过以下几种方式获取自身 Node 上所要运行的 Pod 清单。
文件: kubelet 启动参数 “--config ”指定的配置文件目录下的 ...
Scheduler原理
一、简介Scheduler 在整个系统中承担了“承上启下”的重要功能,“承上”是指它负则接收Controller Manager 创建的新 Pod,为它找到目标Node ,“启下”是指安置工作完成后,目标 Node 上的 kubelet 务进程接管后继工作,负 Pod 生命周期中的“下半生”
Scheduler 的作用是将待调度的 Pod (API 新创建的 Pod 、ControllerManager 为补足副本而创建的 Pod 等)按照特定的调度算法和调度策略绑定( Binding )到集群中的某个合适的 Node 上,并将绑定信息写入 etcd 中。在整个调度过程中涉及 3个对象,分别是:待调度 Pod 列表、可用 Node 列表,以及调度算法和策略 。简单地说,就是通过调度算法调度为待调度 Pod 列表的每个 Pod 从Node 列表中选择一个最适合的 Node,随后目标节点上的kubelet通过API Server监听到Pod的绑定事件,获取对应Pod清单,下载Image,启动容器。
二、调度流程
预选调度过程,即遍历所有目标 Node ,筛选出符合要求的候选节点。
确定 ...
Controller Manager
一、概述为集群内部的管理控制中心,负责集群内的 Node 、Pod 副本、服务端点( Endpoint )、命名空间( Namespace )、服务账号( ServiceAccount )、资源定额( ResourceQuota) 等的管理,当某个 Node 意外岩机时, Controller Manager 会及时发现此故障并执行自动化修复流程,确保集群始终处于预期的工作状态。
主要包括:
12345678Replication Controller Node ControllerResourceQuota Controller Namespace Controller ServiceAccount Controller Token ControllerService Controller Endpoint Controller
在 Kubernetes 集群中,每个 Controller 都是不断修正系统的工作状态,它们通过API Server 提供的接口实时监控整个集群里的每个资源对象的当前状态,当发生各种故障导致系统状态发生变化时,会尝试着将系统状态从“现有状态”修正到“期望 ...
Kubernetes API SERVER
一、概述Kubernetes API Server 的核心功能是提供了 Kubernetes 各类资源对象(如 PodRC Service 等〉的增、删、改、查及 Watch HTTP Rest 接口,成为集群内各个功能模块之间数据交互和通信的中心枢纽,是整个系统的数据总线和数据中心。
集群管理的 API 入口。
资源配额控制的入口。
提供了完备的集群安全机制。
通过一个个名为 kube-apiserver 的进程提供服务,该进程运行在 Master节点上。默认情况会在8080端口(-- insecure-port)提供REST服务。可以同时启动 HTTPS 安全端口( --secure=6443 )来启动安全机制。
命令行工具kubectl就是与API Server进行交互的
如果我们想对外暴露部分 REST 服务,则可以在 Master 或其他任何节点上通过运行kubectl proxy 程启动一个 部代理来实现。
12345#运行下面的命令,在8001端口启动代理,并且拒绝客户端访问RC的API:kubectl proxy --reject-paths="^/api ...