首页 > 其他分享 >架构之道:如何有效控制对象访问权

架构之道:如何有效控制对象访问权

时间:2024-09-24 12:22:21浏览次数:3  
标签:负载 架构 请求 对象 代理 之道 访问 反向 客户端


架构之道:如何有效控制对象访问权

代理架构概述

  • 代理模式(Proxy Pattern)是一种常用的设计模式,其主要功能是提供一个对象的替代品或占位符,从而控制对该对象的访问。这种模式在软件开发中尤为重要,特别适用于那些创建成本较高或资源受限的对象。作为结构型模式的一种,代理模式通过创建一个代理对象来包装原对象,从而提供一种有效的访问控制手段。这种方式在处理创建成本高、内存需求大的对象,或需要进行远程系统交互的场景中显得尤为重要。
  • 代理模式的应用非常广泛,其中一种常见的使用方式是控制对特定对象的访问。例如,通过代理对象可以限制对被代理对象的某些方法或属性的访问,这在处理包含敏感信息的对象或需要特定访问控制的场合中特别有用。

为什么要使用代理

  • 在系统设计中,代理(Proxy)的应用非常广泛,其核心目标是在不改变对象或服务本质行为的基础上,增添额外的控制层、安全层或功能层。以下是几个常见的代理类应用场景:
  • 访问控制: 代理可以在客户端访问实际对象或服务之前执行身份验证和授权检查,以此来实现访问控制。这确保只有经过授权的用户或系统能够与目标对象进行交互。
  • 负载均衡: 负载均衡代理能够在多个真实对象或服务实例之间均匀分配请求或任务,这有助于确保资源的最佳利用并避免单个组件的过载。
  • 虚拟代理: 虚拟代理延迟创建资源密集型或成本高的对象,直至实际需要时才进行初始化,这有助于优化内存使用和应用程序性能。
  • 延迟初始化: 当对象的创建成本高昂且资源消耗大时,代理类可以在实际需要时才进行对象的加载和初始化。
  • 远程代理: 当需要访问的对象位于远程服务器上时,远程代理提供了一种本地访问远程资源的方式。
  • 缓存和记录请求: 代理类可以记录并保存客户端的每个请求,并对重复的数据请求进行缓存,从而降低数据库的负担。
  • 资源监控: 代理可以监控客户端对资源的使用情况,并在客户端不活跃时智能地释放资源。

代理的类型

  • 代理模式一般作为中间件,在架构模式中扮演着关键角色。它既可以是硬件也可以是软件,主要位于客户端和后端服务器之间。代理的核心功能是接收客户端发出的请求,并将这些请求有效地转发至原始服务器。在实际应用中,代理服务器不仅用于请求的过滤和记录,还可能对请求进行处理和变换,如添加或删除头部信息、加密/解密,甚至数据压缩。在代理架构模式中,主要分为正向代理和反向代理两种类型。
正向代理
  • 正向代理,通常简称为代理,主要服务于客户端群体。它介入并处理客户端向互联网站点或服务发起的请求,充当客户端与网络服务器之间的中间人(如图6-1所示)。
  • 正向代理的主要优点包括:
  • 控制并阻止访问特定内容;
  • 允许绕过地理位置限制访问内容;
  • 为用户提供匿名性,保护隐私;
  • 规避网络浏览中的其他限制。
  • 然而,尽管正向代理提供了匿名性保护,但仍可能存在对个人信息的追踪风险。此外,代理服务器的设置和维护成本相对较高,且配置过程需要专业知识。
反向代理
  • 反向代理位于一个或多个网络服务器前,主要用于拦截并处理来自客户端的请求。这种代理确保客户端请求首先经过代理服务器,再由其转发至原始服务器(如图6-2所示)。
  • 正向代理与反向代理之间的主要区别在于它们所服务的对象不同:正向代理面向客户端,而反向代理面向服务器。这一差异使得反向代理在安全性、数据管理和网络性能优化方面发挥重要作用。
  • 反向代理的优点包括:
  • 增强网络安全性和隐私保护;
  • 实现有效的数据缓存策略;
  • 支持SSL加密处理;
  • 负载均衡,提高服务器处理能力;
  • 提升系统的可伸缩性和灵活性。
负载均衡器与反向代理的区别
  • 负载均衡和反向代理是两个在网络架构中常见但不同的概念。虽然它们都在服务端接入方面发挥作用,但各自的核心目标和功能不同,这有时会导致一些混淆。
  • 负载均衡 的主要目的是将流入的网络请求均衡地分配到多个服务端。这样做的目的是提高服务器的处理能力和整个网络系统的效率。通过均匀分配请求,负载均衡确保没有单一的服务器承受过大压力,从而提高了整个系统的稳定性和可靠性。
  • 反向代理 则主要用于隐藏服务器的内部地址,同时为这些服务器提供对外的访问接口。反向代理的设置使得客户端请求被发送到代理服务器,代理服务器再将请求转发给内部服务器。在这个过程中,客户端不会直接与内部服务器进行交互,从而增强了服务器的安全性和隐私保护。
  • 由于反向代理在处理请求时也可能涉及到对多个后端服务的访问,这使得一些系统如 Nginx 同时具备了反向代理和负载均衡的能力。这种功能上的重叠是导致概念混淆的主要原因。
  • 在具体实现上,七层负载均衡的请求转发机制与反向代理相似,都涉及到了内容级的处理。而四层负载均衡采用的是 NAT(网络地址转换)形式,通过修改报文的目的地址直接将请求转发到真实的后端服务地址,这与反向代理的工作方式有本质的区别。
  • 总结来说,虽然负载均衡和反向代理在某些场景下可能会发挥类似的作用,但它们各自的核心目标、功能和实现方式有着明显的区别。理解这些区别对于设计和优化网络架构至关重要。

常用代理技术

  • 在当前流行的网络架构中,常见的代理技术包括:
  • Nginx:广泛应用于网站和应用程序的反向代理和负载均衡。
  • HAProxy:专注于提供高可用性、负载均衡和基于TCP/HTTP的应用代理。
  • Traefik:以其动态配置功能而闻名,适用于微服务架构。
  • Envoy:作为边缘和服务代理,特别适合于大规模的服务网格架构。
  • 通过上述详细的介绍和分析,可以看出,代理服务器在现代网络架构中扮演着至关重要的角色,不仅提供了网络安全和性能优化的解决方案,还在应对复杂网络环境和需求中发挥着核心作用。


标签:负载,架构,请求,对象,代理,之道,访问,反向,客户端
From: https://blog.51cto.com/u_15903793/12098424

相关文章

  • Oracle数据库中创建用户并对用户授予特定的视图访问权限。
    1.创建用户名和密码---创建用户名密码createuseruseridentifiedbypassword;--userpassword分别为用户名及密码登录用户使用defaulttablespacetsp_ehis_indextemporarytablespacetsp_ehis_tempprofiledefault;2.对用户进行相对应的授权增加用户的......
  • 架构设计:系统间通信(17)——服务治理与Dubbo 中篇(分析)
    作者简介:大家好,我是smart哥,前中兴通讯、美团架构师,现某互联网公司CTO联系qq:184480602,加我进群,大家一起学习,一起进步,一起对抗互联网寒冬学习必须往深处挖,挖的越深,基础越扎实!阶段1、深入多线程阶段2、深入多线程设计模式阶段3、深入juc源码解析阶段4、深入jdk其余源码解析......
  • 架构设计:系统间通信(19)——MQ:消息协议(上)
    作者简介:大家好,我是smart哥,前中兴通讯、美团架构师,现某互联网公司CTO联系qq:184480602,加我进群,大家一起学习,一起进步,一起对抗互联网寒冬学习必须往深处挖,挖的越深,基础越扎实!阶段1、深入多线程阶段2、深入多线程设计模式阶段3、深入juc源码解析阶段4、深入jdk其余源码解析......
  • 架构设计:系统间通信(18)——服务治理与Dubbo 下篇(继续分析)
    作者简介:大家好,我是smart哥,前中兴通讯、美团架构师,现某互联网公司CTO联系qq:184480602,加我进群,大家一起学习,一起进步,一起对抗互联网寒冬学习必须往深处挖,挖的越深,基础越扎实!阶段1、深入多线程阶段2、深入多线程设计模式阶段3、深入juc源码解析阶段4、深入jdk其余源码解析......
  • MES精益制造系统解决方案:精益制造管理系统架构、MES系统主要业务功能、MES系统应用价
    MES系统可以解决的问题生产进度失控,交期经常延误,订单或生产计划各工序完成率不能实时了解;人工排产,很难科学、合理、有序生产,设备利用率很低;物料管理失控,存在多领超领、物料配送错误等现象,增加了物料消耗成本;即使上了ERP,生产过程各环节仍然失控,ERP难以发挥应有作用;......
  • 蒙牛工厂智能化改造解决方案:分层联动的信息化+智能化工厂架构、构建智能工厂的物联网
    蒙牛工厂的智能化改造解决方案主要体现在分层联动的信息化+智能化工厂架构以及构建智能工厂的物联网大数据平台两大方面。以下是对这两方面的详细阐述: 一、分层联动的信息化+智能化工厂架构蒙牛工厂的智能化改造采用了分层联动的架构,这一架构主要包括计划层、执行层和控制层......
  • 广告电商平台商品管理系统设计与架构深度剖析
    广告电商系统开发和模式架构中的产品系统模块是核心组成部分之一,它负责处理与产品展示、管理、搜索、分享等相关的功能。以下是对该模块的详细分析和归纳一、产品系统模块的主要功能1. 产品管理功能概述:产品管理功能允许管理员或商家对平台上的产品进行全面的管理,包括产品的上架、......
  • 一位架构师的自述:在尚未踏入的世界成为你自己
    这是我参与创作者计划的第1篇文章 我叫艾佳,工作经验14年,编程经验30年。我来自智能平台部,负责标签平台、标签圈人、标签选品、EasyData、算法数据流的架构工作。致力于批量计算、流式计算、交互式计算的通用化数据应用构建,降低大数据计算的使用门槛。在此,我跟大家分享一下我......
  • 数据中台到数据飞轮:战略升级之道
    在讨论数据中台是否需要升级到数据飞轮之前,我们需要清楚这两者的本质区别与联系。数据中台主要负责数据的收集、存储、管理和服务输出,是企业建立数据基础架构的重要步骤。而所谓的数据飞轮,更关注数据的动态增值和自我强化,通过数据的流动和应用不断积累经验和优化流程,实现数据资产的......
  • 访问WordPress网站提示“建立数据库连接时出错”或者“Error establishing a database
    当访问WordPress网站时出现“建立数据库连接时出错”或“Errorestablishingadatabaseconnection”的提示时,这通常表示WordPress无法成功连接到数据库。以下是几个可能的原因及解决方法:原因数据库连接信息错误:WordPress配置文件中的数据库连接信息(如用户名、密码、主机名)不......