Proxy 代理模式

kube-proxy的三种代理模式 前言 Service是k8s中资源的一种,也是k8s能够实现减少运维工作量,甚至免运维的关键点,我们公司的运维都要把服务搭在我们集群里,接触过的人应该都能体会到其方便之处。Service能将pod的变化屏蔽在集群内部,同时提供负载均衡的能力,自动将请求流量分布到后端的pod,这一功能的实现靠的就是kube-proxy的流量代理,一共有三种模式,userspace、iptables以及ipvs。 ... 阅读详情

模式定义

当客户类因为不适合、性能限制或者权限问题而无法(或性能较差)访问一种对象的时候,提供一种代理的机制,由代理来完成客户类的一系列请求。改代理能比较好地直接访问该对象。

使用方法


Proxy替Client来完成对RealSubject的直接访问。

使用范围

代理使用的范围比较多,如:

  • 远程代理,适合远距离的对象传输或不在同一个地址空间内而比较耗时的对象访问
  • 虚拟代理,当创建一个开销很大的对象时,可以使用该代理模式,使其只有当需要被创建或访问的时候才创建
  • 保护代理,适合权限对某对象实施保护而客户类需要能访问其的时候

举例说明

此处,我们只举例虚拟代理的方式。假设需要在本地加载并显示一个图片,该图片十分庞大比较耗内存,那么可以短暂地先使改图片的占位符能显示在屏幕上,同时,启用另一个线程加载该图片:

public interface Image {
    public void displayImage();
}

--------
public class RealImage implements Image{
	private String filename;
	public void displayImage() {
		System.out.println("Display Real Image: " + filename);
	}
	public RealImage(String filename){
		this.filename = filename;
		loadImageFromDisk();
	}
	private void loadImageFromDisk(){
		System.out.println("Loading Real Image: " + filename);
	}

}

--------
public class DummyImage implements Image{
	private String filename;
	public void displayImage() {
		System.out.println("Display Dummy Image: " + filename);
	}
	public DummyImage(String filename){
		this.filename = filename;
		loadDummyImage();
	}
	private void loadDummyImage(){
		System.out.println("Prepare Dummy Image: " + filename);
	}

}

观察如上列出的两个实现Image的类。RealImage是实际加载图片的类,而DummyImage是实现占位功能的类,用来显示类似一个空白图片。

接下来需要创建Image的代理类。该类必须有如下功能:在RealImage还没有全部加载之前,启用DummyImage并返还给客户类,显示DummyImage。而当RealImage加载完成之后,则实际返回该类。

public class ProxyDisplay implements Image {
	private String filename;
	private Image img;
	private Image realImg;
	public ProxyDisplay(String filename){
		this.filename = filename;
	}
	public void displayImage(){
		if (img == null){
			img = new DummyImage(filename);
			realImg = new RealImage(filename); //注
		}else if (img instanceof  DummyImage){
			img = realImg;
		}
		img.displayImage();
	}

}

注意如上代码的注处:最好的实现方式是启用一个线程,同步加载。

最后客户类调用Proxy来加载图片。

public class ProxyClient {
	public static void main(String args[]){
		ProxyDisplay pimg = new ProxyDisplay("hello.gif");
		pimg.displayImage();
		pimg.displayImage();
	}
}

下载示例

代理模式(proxy) 代理模式(proxy) 代理模式:为其他对象提供一种代理以控制对这个对象的访问。 代理模式的应用 一、远程代理,也就是为了一个对象在不同的地址空间提供局部代表,这样可以隐藏一个对象存在于不同地址空间的事实。 二、虚拟代理,是根据需要创建开销很大的对象。通过它来存放实例化需要很长时间的真实对象。这样可以达到性能最优化。 三、安全代理,用来控制真实对象访问时的权限。 四、智能指引,是指... 阅读详情

相关推荐

http代理

NULL 博文链接:https://angrycoder.iteye.com/blog/1682007

设计模式之代理模式(Proxy)

代理模式(Proxy):为其他对象提供一种代理以控制这个对象的访问. 使用环境:1.远程代理,也就是为一个对象在不同的地址空间提供局部代表,这样额可以隐藏一个对象存在于不同的地址空间的事实2.虚拟代理,根据需要创建开销很大的对象。通过它来存放实例化需要很长时间的真实对象。3.安全代理,用来控制真实对象访问时的权限。4.智能指引,是指当调用真实的对象时,代理处理另外一些事 Subject.cs:

wendy_soft的专栏 508

代理Proxy

博客里面写了一篇介绍Proxy的文章,这里面是几个案例和源码,有需要的下载

代理(Proxy)

在 Spring 框架中,生成代理类的主要目的是为了实现 AOP(面向切面编程)和其他增强功能。Spring 启动时生成代理类的原因在于,某些功能无法直接通过目标对象本身实现,而需要通过代理机制来动态地为目标对象添加额外的行为。

一个public的class的博客 1725

Python经常遇到导入xlwings就出错,如何解决

Python经常在导入xlwings时遇到错误。有人建议尝试重装或升级xlwings,但这些操作后仍然无法解决导入错误问题。

felix_8的博客 1740

Python画好看的雷达图,全网开源代码最好看的

【代码】Python画好看的雷达图,全网开源代码最好看的。

大模型天花板 2284

网络代理详解

代理是一种通过中间服务器来帮助客户端访问目标服务器的技术。代理服务器位于客户端与服务器之间,充当两者的中介,从而实现客户端和服务器之间的隔离。用户的所有请求经过代理后,再发往目标服务器,而目标服务器的响应则返回代理,再由代理传递给用户。

yymagicer的博客 1万+

别再只改config了!YOLO/RT-DETR多通道输入实战:数据集结构、多卡训练与参数优先级避坑指南

本文详细解析了YOLO/RT-DETR模型在多通道输入(如8通道多光谱图像)中的实战应用,涵盖数据集结构优化、数据加载器改造、模型参数调优及多卡训练配置。针对常见的多通道输入报错问题,提供了系统的解决方案和性能优化技巧,帮助开发者高效实现非标准数据格式的适配与训练。

weixin_30955617的博客 397

代理是什么及如何使用

代理是什么及如何使用

Whoo_的博客 3005

Appstore开发者必读:3.2(f)违规预警与高效申诉指南

本文为AppStore开发者提供了应对3.2(f)违规通知的完整指南。文章深度解析了3.2(f)条款下的隐瞒性、关联性与真实性违规类型,并提供了黄金48小时内的自查、申诉信撰写与提交全流程策略。同时,文章强调遵循App Review Guidelines,建立内部合规清单与保持账号独立,是预防违规、维护开发者账号安全的关键。

weixin_29214559的博客 273

Anaconda启动失败,一直在loading application的问题

实战基础新的改变功能快捷键合理的创建标题,有助于目录的生成如何改变文本的样式插入链接与图片如何插入一段漂亮的代码片生成一个适合你的列表创建一个表格设定内容居中、居左、居右SmartyPants创建一个自定义列表如何创建一个注脚注释也是必不可少的KaTeX数学公式新的甘特图功能,丰富你的文章UML 图表FLowchart流程图导出与导入导出导入 你好! 这是你第一次使用 Markdown编辑器 所展示的欢迎页。如果你想学习如何使用Markdown编辑器, 可以仔细阅读这篇文章,了解一下Markdown的基本

Tristan的博客 2772

Proxy代理模式

[list] [*] [/list][code="java"] Proxy代理模式是一种结构型设计模式,主要解决的问题是:在直接访问对象时带来的问题,比如说:要访问的对象在远程的机器上。在面向对象系统中,有些对象由于某些原因(比如对象创建开销很大,或者某些操作需要安全控制,或者需要进程外的访问),直接访问会给使用者或者系统结构带来很多麻烦,我们可以在访问此对象时加上一个对此对象的访问层。如下...

大米文子 8043

深度学习(五)迁移学习(实战:新数据预测+vgg16和聚类预测)

6、成功引入PCA数据降维技术,剔除了数据中的噪音信息、降低了模型复杂度、减少了模型训练时间,并最终提高了模型表现;gen=datagen.flow_from_directory(path,target_size=(224,224),batch_size=2,save_to_dir=dst_path,save_prefix='gen',save_format='jpg') # 生成图片大小224*224,bs产生多少组图像,存储路径和前缀。1、通过使用新数据,实现了模型的2次训练,达到了较好的预测效果;

weixin_37699342的博客 775

代理模式(Proxy)

设计模式系列 Proxy代理模式——对象结构模式 1.意图 为其他对象提供一种代理以控制对这个对象的访问。 2.适用性 在需要用比较通用和复杂的对象指针代替简单的指针的时候,使用Proxy模式。 1)远程代理(Remote Proxy)为一个对象在不同的地址空间提供局部代表。 2)虚代理(Virtual Proxy)根据需要创建开销很大的对象。 3)保护代理(Protecti...

行走 897

Redis下载安装与配置(windows)

一、Redis下载 二、Redis安装 三、启动Redis临时服务并测试连接(可跳过) 四、Redis配置

欢迎订阅我的“JAVA全栈开发笔记(全)”专栏,价格优惠,仅需19.9元。 7万+

WiFi基本概念(六)(L-STF,L-LTF)

L-STF它由10个OFDM symbol(1,0,1,0,1,0,1,0,1,0)构成,每个symbol是0.8us,GI是0.2us,总计10us。Symbol的长度是正常长度的1/4,因此称为Short training field,主要用于快速进行信号检测,信号同步,自动增益控制,接收天线选择(Diversity Selection)。 由于symbol长度是正常的1/4,子载波的宽度是正常的4倍,能进行初略的信道估计,其使用了-24, -20, -16, -12, -8, -4, 4, 8, 1

reekyli的专栏 6864

kube-proxy代理模式详解

kube-proxy代理模式详解kube-proxy当前支持以下几种代理模式:1、userspace:最早的负载均衡方案,它在用户空间监听一个端口,所有服务通过iptables转发到这个端口,然后在其内部负载均衡到实际的Pod。该方式最主要的问题是效率低,有明显的性能瓶颈,不再推荐使用。比如说创建一个service,对应的IP:1.2.3.4,port:8888,kube-proxy随机选择的端口是32890,则会在iptables中追加。

nings666的博客 1124

蓝牙模块HM-10手册

蓝牙模块HM-10手册,该手册对蓝牙模块HM-10进行了详细的介绍和使用方法以及一些AT指令。

转 ——Proxy代理模式

Proxy代理模式是一种结构型设计模式,主要解决的问题是:在直接访问对象时带来的问题,比如说:要访问的对象在远程的机器上。在面向对象系统中,有些对象由于某些原因(比如对象创建开销很大,或者某些操作需要安全控制,或者需要进程外的访问),直接访问会给使用者或者系统结构带来很多麻烦,我们可以在访问此对象时加上一个对此对象的访问层。如下图: 比如说C和A不在一个服务器上,A要频...

weixin_30294709的博客 139

文档:亲测可用解决vnc灰屏,黑屏,鼠标大黑叉情况

主要解决vnc-viewer灰屏,黑屏,鼠标大黑叉等现象,详细见文档。

霍尼韦尔SoftMaster使用说明

霍尼韦尔SoftMaster使用说明

查看k8s集群kube-proxy的代理模式

查看k8s集群中kube-proxy的代理模式

weixin_47729423的博客 5935

汉书HE8,好用的汇编代码编写工具

汉书HE8,好用的汇编代码编写工具早期编写汇编代码所用功能强大

Java —— Proxy 代理模式

Java —— 代理模式

Genius only means hard-working all one's life. 535

代理模式Proxy

public class MainActivity extends AppCompatActivity { TextView textView; Button button; protected void onCreate(Bundle savedInstanceState) { super.onCreate(savedInstan...

96
上一篇: Facade 外观模式
下一篇: Interpreter 解释器模式
zigzagsoft
博客等级 码龄19年 34粉丝 50原创
评论
成就一亿技术人!
拼手气红包6.0元
还能输入1000个字符
 
 条评论被折叠 查看
添加红包

请填写红包祝福语或标题

个

红包个数最小为10个

元

红包金额最低5元

当前余额3.43元 前往充值 >
需支付:10.00元
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付元
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值