首页
学习
活动
专区
工具
TVP
发布
精选内容/技术社群/优惠产品,尽在小程序
立即前往

Grab是如何设计弹性系统

在Grab,我们在众多软件系统中广泛使用这两种机制,以确保我们能够应对失败并继续为我们客户提供他们期望服务。但这两种机制是否相同?我们在哪里以及如何选择其中一个?...在后备处理中,使用估计而不是实际而不是唯一选项,其他常见选项包括: 使用不同上游服务重试请求 稍后安排请求 从缓存中加载可能过时数据 当然,有一些情况没有合理后备。...有了这个,我们可以通过定义我们愿意等待上游时间限制我们处理请求所需总时间。 2.最大并发请求 这是堡垒设置(如上所述)。 考虑默认(10)表示同时发出请求而不是“每秒”。...这里要注意第一件事是因为断路名称是一个参数,所以可以向断路器多个调用提供相同。 这有一些有趣副作用。 假设您服务调用上游服务多个端点,称为“列表”,“创建”,“编辑”和“删除”。...可以同时使用每个服务和每个主机(虽然从未尝试过)。在此配置中,每个服务电路应仅在几乎没有机会存在任何有效主机时打开,并且通过这样做可以节省在重试周期中运行请求处理时间。

51510

在Kubernetes中负载均衡和扩展长连接

如果您有两个应用(前端和后端),则可以为每个应用使用部署和服务,并在集群中部署它们。 当前端应用发出请求时,它不需要知道有多少个 Pod 连接到后端服务。...根据您网络实现,请求最终到达 Pod。 默认情况下,Kubernetes 使用 iptables 实现服务。 iptables 是否使用轮询进行负载均衡?...您可以自己修复它,因为 Kubernetes 不知道如何对持久连接进行负载均衡。 服务是称为端点 IP 地址和端口集合。 您应用可以服务中检索端点列表,并决定如何分配请求。...在这种情况下,您可以做什么? 您可以打开几个不同 SQL 连接并在它们之间循环。或者,您可以使用外部负载均衡器,如 pgpool。 在此场景中,您应用连接到一个端点:pgpool。...您可以忽略 kube-proxy,并始终使用无头服务收集端点列表,以便客户端对请求进行负载均衡。 但您能想象将该逻辑添加到群集中部署所有应用中吗?

10510
您找到你想要的搜索结果了吗?
是的
没有找到

安息吧 REST API,GraphQL 长存

使用 GraphQL 客户端程序可以通过其功能查询该模式。这种方法使得客户端与服务端解耦,并允许其两者独立开发和扩展。 GraphQL 请求可以是查询(读取操作)或突变(写入操作)。...然后 GraphQL 层将与两个不同数据服务进行通信。GraphQL 首先将客户端需要与多种语言进行通信中隔离,并将单个请求转换为使用不同语言多个服务多个请求。...例如,READ REST API 端点可能是 GET /ResouceName - 该资源获取所有记录列表; GET /ResourceName/ResourceID - 获取该 ID 标识单条记录...如果我们反转这个模式,它同样有效。如果我们有一个 GraphQL 查询,我们明确知道如何在 UI 中使用响应,因为查询与响应具有相同“结构”。...DataLoader 原理是使用批处理和缓存组合。如果相同客户端请求导致需要向数据库请求多个数据,则可以使用 DataLoader 合并这些请求,并从数据库批量加载其响应。

2.7K30

REST API 最佳实践

3.在端点使用嵌套显示关系 很多时候,不同端点可以相互联系,所以你应该对它们进行嵌套,这样更容易理解它们。...例如,对于一个多用户博客平台,不同帖子可能是由不同作者写,所以在这种情况下,像 https://mysite.com/posts/author 这样端点会成为一个有效嵌套。...使用五种 HTTP 方法 POST,GET,PUT/PATCH,DELETE 可以提供 CRUD 功能(创建,获取,更新,删除)。 除了 POST 其他请求都具备幂等性(多次请求效果相同)。...需要注意是 POST 和 PUT 最大区别就是幂等性,所以 PUT 也可以用于创建操作,只要在创建前就可以确定资源 ID。 获取使用 GET 方法获取资源。GET 请求从不改变资源状态。...注意,点赞文章选择了 PUT 而不是 POST,因为觉得点赞这种行为应该是幂等,多次操作结果应该相同。 4.FAQ 批量删除接口如何设计?

1.6K20

GraphQL是API未来,但它并非银弹

可以将多个调用封装到一个 API 中,让它们在服务器端完成,而不是客户端发出多个请求。此方法也可以解决过取和欠取问题,因为你可以在将数据发回客户端之前对其进行操作。...如果是这种情况,GraphQL 弃用模型对你一点帮助都没有。 使用 REST,你可以创建一个新端点或现有端点另一个版本。问题是一样,只是解决方案看起来有一点不同。...很抱歉,但是又一次得出了一个完全不同结论。如果将规则设置为不允许版本控制,则可以添加新端点或替换现有端点实现。在这种情况下,GraphQL 和 REST 之间没有区别。...赞同,GraphQL 是 API 未来,但是出于不同原因。 较好性能和较小有效负载并不是 GraphQL 特有的特性。...你可以使用其他工具,或者扩展 GraphQL,获得更好结果,例如使用 Relay 持久化查询。要真正地 GraphQL 文档中获得好处,你要做不仅仅是向模式中添加描述。

2K10

REST API有关幂等性等11条最佳实践

职业生涯中,使用了数百个 REST API 并制作了数十个。由于我经常在 API 设计中看到相同错误,因此认为写下一组最佳实践可能会更好。...通过使不同类型 ID 具有自描述性,您可以显着改善 API 的人机工程学。...有很多层软件会对请求返回 404,其中有些可能是你无法控制: 配置错误客户端点击了错误 URL 配置错误代理(客户端和服务器端) 负载平衡器配置错误 服务器应用程序中路由表配置错误 返回...为了获得非幂等操作一次性行为,我们需要在客户端和服务器之间进行额外协调。通常有两种好方法和一种蹩脚方法支持这一点。...糟糕选项:提供一个端点来列出最近交易 如果 API 未提供任何有关幂等性显式帮助,则这是客户端开发人员解决方法: 每次提交之前,服务器获取最近事务列表。

18020

你还在用 REST API 吗?

灵活性 是使用 REST 另一个优势,因为可以将其设计成处理不同类型调用并返回不同数据格式。 REST 劣势 抓取过度——这是指 API 端点提供信息比客户端所需要要多得多。...抓取不足——这是指 API 端点并没有提供所需全部信息。因此,客户端必须发出多个请求才能获取应用程序所需全部内容。 什么是 GraphQL?...这也意味着我们可以定制我们请求,这样我们就可以端点发出任何请求,并且能获得我们所请求任何内容,仅此而已,无需更多操作。我们传递查询并得到响应。...要使用 GraphQL 实现相同效果,我们可以使用类似于这样查询: query { User(id: '123') { name posts { title } followers { name }...}} 通过使用这样查询,我们将能获得具有以下属性 JSON 响应。

1.5K10

IETF (RFC 4787) 定义 NAT 行为要求 - 第 1 部分:映射行为

Address and Port-Dependent Mapping (关心对端地址和端口转换模式):如主机A发出数据包具有以下特征:1) 相同源IP地址,2) 相同源端口,3) 相同目的IP...在下图中,由于两个数据包具有不同目标端口(80 和 8080),因此使用不同外部端口映射(转换端口 = 1000 和 1004)。...任意IP地址分配:这类NAT对于内部端点发出数据包,即使它们源自相同源IP地址,只要其会话(即{源IP、源端口、目标IP、目标端口}组合)不同,就会分配不同外部IP地址。...配对IP地址分配:配对NAT(Paired NATs)对于内部端点发出数据包,即使它们会话(即{源IP、源端口、目标IP、目标端口}组合)不同,只要源自相同源IP地址,也会分配相同外部IP地址...这种方法可以有效避免端口冲突,提高地址资源利用率,但可能需要应用程序不依赖于特定端口号进行通信,或者需要额外机制跟踪和管理这些动态分配端口映射,以确保数据包正确路由和应用层协议正常运行(VPP

8210

一文拿下SSRF攻击利用及绕过保护机制

所以这里就有必要测试任何用户提供URL端点,对SSRF测试通常提供带有内部地址URL输入开始。 根据常用网络配置,可能需要尝试几个不同地址。...首先为易受攻击端点提供已识别的内部计算机不同端口,并确定端口之间服务器响应行为是否存在差异。...其次,使用服务器响应时间扫描网络和端口: 如果服务器没有以状态代码形式返回任何有用信息,那也不用担心,攻击者可能仍然可以通过检查服务器响应攻击者发出请求所需时间确定这些网络结构。...首先,我们整理下之前利用SSRF技能,假设攻击者已经在Web应用程序上找到了获取外部资源功能,并且可以各种外部站点获取内容,还可以请求任意文件类型都没有任何限制。...当新人/攻击者找不到有效旁路时,可以帮助逆向思考,切换视角,想想:如果是自己,会如何实现此功能SSRF保护机制? 然后,继续尝试绕过这种设计保护机制。

4.4K30

异步精髓

监控应用程序通过短信网关向受服务影响客户发送1000条短信。示例可以成倍增加,但原则是相同:当冗长过程完成时通知调用者,并且可以使用信息。...客户端调用服务器操作。(Web服务、RPC、本地方法调用等) 客户机订阅了代理,并开始从不同线程监听主题。 服务器完成所需工作并向主题发布消息。 客户机获取信息并进行处理。...2.3 轮询 性能和可伸缩性角度来看,轮询应该是最不可取方法,因为它会给客户端和服务器端带来额外压力。...如果这是一次性请求/响应对,则可以存储库中当场删除查找行。 3.4 有效载荷策略 在服务器端生成响应可以表示任何信息。它可以是一个十位数字或一个十兆字节文件。...有效负载策略描述了如何将此信息传递到客户端。 负载可以直接在异步通知本身内部传递。如果大小以千字节表示,我们可以将信息传递给回调。如果不是这样,那么应该在通知中传递指向文件指针。

93910

什么是REST API

不同HTTP方法可以在任何端点使用,这些方法映射到应用程序创建、读取、更新和删除(CRUD)操作: HTTP方法CRUD行为GET读取返回请求数据POST创建创建一个新记录PUT 或者 PATCH...API-Request.png REST API响应 响应有效负载可以是任何实用东西:数据、HTML、图像、音频文件等等。...注意,浏览器向REST API发出两个请求: 对同一URLHTTP OPTIONS请求确定Access-Control-Allow-Origin HTTP响应头是否有效。 实际REST调用。...id=123 所有这些都是为用户123获取数据有效选项。当你有更复杂操作时,组合数量会进一步增加。 归根结底,你如何格式化URL并不重要,但整个API一致性很重要。...API身份验证将根据使用上下文而有所不同: 在某些情况下,第三方应用程序被视为像任何其他具有特定权利和权限登录用户。例如,一个地图API可以将两点之间方向返回给调用应用程序。

4.1K20

通过Password VaultXSS漏洞获取用户密码测试

今天,想和大伙分享一些非常有意思内容。为了存储及管理方便,相信大家可能都会选择使用一些密码管理器存储不同网站密码(例如Facebook,Gmail等其他帐户)。...在仔细观察应用程序并完成各个请求之后,发现应用程序会位于应用程序/api/API中检索不同信息。 在对应用程序进行一些爬行和抓取后,发现了一些API端点: ?...API端点观察 当应用程序与API完全交互时,每个端点都返回了一些和信息,其中包括record ID,session token和其他一些内容。让解释下这些API。...抓取记录后,接下来就是获取session token以进行POST请求。这里还将记录响应转换为了JSON,并直接JSON对象调用记录ID。...接下来我们要做就是将具有”record ID”POST请求,发送到/api/v1/passwords/record端点使用XHR发送具有指定记录IDPOST请求。

1.5K30

使用 Cilium 服务网格下一代相互身份验证

事实上,我们每天都使用 TLS 实现机密性、完整性和服务器身份验证,但通常不依赖相互身份验证,即 TLS 会话确保我们与正确服务器通信,但我们随后依赖密码或不同顶部身份验证形式,以使用 Web...分离身份验证握手和有效负载 如果我们将身份验证握手与负载传输分开,我们可以使用 TLS 1.3 作为握手协议,同时依赖 IPsec 或 WireGuard 作为性能更好、更透明负载通道: 我们获得了这两种模型好处并实现了许多出色特性...您可能希望身份验证中受益,但对支付身份验证后,没有必要进行所有有效负载数据加密。 上图并排显示了两个模型。...我们将使用即将到来 SPIFFE 与 Cilium 集成示例。这允许在创建网络策略时使用 SPIFFE 身份选择工作负载。...Cilium 仍然像今天一样识别单个端点,并且网络分段仍然适用于这些单个端点。如果网络策略同时指定 SPIFFE 身份和端点选择器,这能够有效阻断恶意流量负载

95810

对不起,看完这篇HTTP,真的可以吊打面试官

这样做可以实现两个小目标 减轻服务器负载 提升系统性能 下面我们就一起探讨一下 HTTP 缓存都有哪些 不同类型缓存 HTTP 缓存有几种不同类型,这些可以分为两个主要类别:私有缓存 和 共享缓存...某些操作仅限于具有相同来源内容,可以使用 CORS 取消此限制。...现在带你认识了两遍不同源,现在你应该知道如何区分两个 URL 是否属于同一源了吧! 好,你现在知道了什么是跨域问题,现在要问你,哪些请求会产生跨域请求呢?...比较两个资源是否相同版本有些复杂,根据上下文,有两种相等性检查 当期望是字节对字节进行比较时,例如在恢复下载时,使用强 Etag进行验证 当用户代理需要比较两个资源是否具有相同内容时,使用若 Etag...当客户端在本地修改资源打算重新发送之前,第二个客户端可以获取相同资源并对资源进行修改操作,这样就会造成问题。

6.3K21

针对 QUIC协议客户端请求伪造攻击

数据包编号长度位直接取决于数据包编号,但只要一个可以编码为相同数量字节,它们就会保持不变。这些头字段强互连和依赖性明显降低了有效可控性。...除了极少数情况,假冒协议可以有效负载这个位置包含完全相同四个字节,这些字节将不可用于假冒攻击。版本后跟源和目标的 CID。每个都将在相应长度标识符之前。...使用这种屏蔽策略,客户端仍然可以选择服务器反映 DCID,并且如果需要,它可以根据该进行路由和负载平衡。然而由于服务器选择了屏蔽,因此请求伪造攻击有效负载不再由攻击者控制。...New CID 列指示服务器是否为新路径使用New CID。为了使用 CMRF 执行协议假冒,攻击者必须事先知道使用哪个 CID 才能将有效负载注入正确 CID。...由于 QUIC 要求没有 CID 被重复用于一个连接,因此不可能在握手和 NEW_CONNECTION_ID 帧中传输相同有效负载。只有五个支持连接迁移开源实现根据需要使用New CID。

1.3K40

安全圈术语全景图

:spd服务器不对外暴露dns,ip接口,必须通过sdp专用客户端使用专有的协议才能连接SPA特点:单包授权技术可以看作是端口敲门技术演进,两者具有相同目标,但实现方式却有很大不同。...(UDP报头内)和服务密码组合在一起,生成哈希。...服务器将记录它收到最后一个有效授权数据包,以防止攻击者发送旧数据包进行重放攻击如果哈希不匹配或者与此前收到有效哈希相同,则不执行任何操作。...说明弱口令检测是通过读取HASH与弱口令字典计算HASH进行对比来检查是否存在弱口令。如果不想读取HASH,您可以基线检查策略中移除弱口令基线。...访问控制和身份验证系统中获取用户账户及授权等信息。企业自身管理系统中获取员工相关信息。社交平台和社交软件中获取用户相关信息。

12410

0开始构建一个Oauth2Server服务 发起认证请求

事实上,尝试解码访问令牌是危险,因为服务器不保证访问令牌将始终保持相同格式。下次您该服务获取访问令牌时,完全有可能采用不同格式。...例如,Google API 使用 OpenID Connect 提供一个 userinfo 端点,该端点可以返回有关给定访问令牌用户信息,或者您可以改为 ID 令牌获取用户信息。...“expires_in”是访问令牌有效秒数。访问令牌有效期取决于您使用服务,并且可能取决于应用程序或组织自己策略。您可以使用此时间戳抢先刷新您访问令牌,而不是等待带有过期令牌请求失败。...,它可以使用之前收到刷新令牌向令牌端点发出请求,并将取回可用于重试原始请求新访问令牌。...这就是应用程序是否知道刷新令牌预期寿命无关紧要原因,因为无论它过期原因如何,结果总是相同

13830

与我一起学习微服务架构设计模式11—开发面向生产环境微服务应用

安全架构关键部分是会话(存储主体ID和角色)、安全上下文(存储有关发出当前请求用户信息) 缺点:使用内存中会话,必须把特定会话所有请求路由到同一个应用程序实例。这使负载均衡和操作变得复杂。...API Gateway和服务使用透明令牌传递有关主体信息。...命令行参数 SPRING_APPLICATION_JSON JVM系统属性 操作系统环境变量 当前目录中配置文件 来自此列表靠前来源特定属性将覆盖此列表稍后来源中相同属性。...Spring Boot使这些属性可以通过ApplicationContext访问,如通过@Value注解获取属性。...推送模式有效使用广泛,但要重新配置正在运行服务很难,且配置属性存在分散在众多服务定义中风险。 使用基于拉取外部化配置 启动时,服务实例配置服务器检索其配置属性。

1.9K10

ODrive 通讯协议「建议收藏」

大家好,又见面了,是你们朋友全栈君。 ODrive通讯协议 与ODrive进行通讯需要对通讯端点进行一系列操作。理论上,端点数据可以是以任何方式序列化任何类型数据。...可以通过从端点0读取JSON枚举可用端点理论上讲,每个接口都可以不同(实际上并没有这么做)。每个端点可以被用来发送和接收字节数据,有效字节数据含义在JSON中进行了定义。...请求是PC到ODrive消息,响应是ODrive到PC消息。 每个请求-响应事务对应于一个端点操作。...请求 Bytes 0, 1 数据包序列号, MSB = 0 当前,服务器不进行处理,也不过滤重复发送数据包。 Bytes 2, 3 端点ID 可以JSON定义中获取所有端点ID。...如果客户端不需要任何响应数据,则可以将该设置为0。 Bytes 6 to N-3 有效负载 有效负载长度由数据包大小确定。 有效负载格式取决于端点类型。 端点类型可以JSON定义中获取

70810

黑客在 Log4j 攻击中使用 PowerShell 后门

用于多项任务模块化后门 对 CVE-2021-44228 利用会导致运行带有 base64 编码负载 PowerShell 命令,最终参与者控制 Amazon S3 存储桶中获取“CharmPower...该核心模块可以执行以下主要功能: 验证网络连接- 执行后,脚本通过使用参数 hi=hi 向 google.com 发出 HTTP POST 请求等待活动 Internet 连接。...基本系统枚举——该脚本收集 Windows 操作系统版本、计算机名称以及 $APPDATA 路径中文件 Ni.txt 内容;该文件可能由主模块下载不同模块创建和填充。...进程– 使用 tasklist 命令获取正在运行进程。 系统信息——运行“systeminfo”命令收集系统信息。有更多命令,但被注释掉了。...与旧后门相似之处 Check Point 注意到“CharmPower”与 APT35 过去使用 Android 间谍软件之间相似之处,包括实现相同日志记录功能并使用相同格式和语法。

6.9K10
领券