首页
学习
活动
专区
圈层
工具
发布

构建实时风控:多头借贷小时级 API 的 Java 实战、数据结构解析与系统集成

是否突然增长的借贷需求、是否被短时间内多家机构查询、是否在夜间时段出现异常流量,这些都是企业判断风险的关键。...本文会从加密请求、接口调用、解密响应,到数据结构与实际风控场景逐步展开,让整个接入过程保持自然、清晰、完整。...二、API调用示例(Java)接口使用POST调用,认证通过Access-Id传递,而敏感字段则经由AES-128-CBC加密后发送。...开发者在使用时会以周期变化、夜间行为、逾期情况三者之间的组合作为主要判断依据。四、应用场景分析在企业内部,多头借贷小时级API往往被安置在自动化审批流程的前半段。...短期查询次数的突然增多,常常代表着用户短时间内多次申请信贷;如果这种行为同时伴随在夜间发生,就更容易引起系统侧的风险提醒。系统会默认先让模型对这些数据做一次初筛,再把明显异常的情况推入人工审核。

19510

与我一起学习微服务架构设计模式3—微服务架构中的进程间通信

你可以在实现REST API或消息机制的服务时,包含版本号 进行次要且向后兼容的改变 理性情况下应该只进行向后兼容的更改: 添加可选属性 向响应添加属性 添加新操作 服务应该为缺少的请求属性提供默认值...,客户端应忽略任何额外的响应属性,这样老版本的客户端能直接只用更新的服务 进行主要且不向后兼容的改变 此时必须在一段时间内同时支持新旧版本的API 假如使用REST,可以在URL中嵌入主要版本号,或者使用...解决方案: 1、开发可靠的远程过程调用代理,包括: 网络超时机制 限制客户端向服务器发出的请求数量 断路器模式:在连续失败次数超过指定阀值后一段时间内,这个代理会立即拒绝其他调用,稍后重试,若成功则解除断路器...实现发布/异步响应 它把发布/订阅和请求/响应两种方式的元素组合在一起 客户端发布一条消息,在头部指定回复通道,该通道也是发布-订阅通道。...但故障可能导致消息被多次传递。 两种方法处理重复消息: 编写幂等消息处理器: 幂等指这个应用被相同输入参数多次重复调用时,也不会产生额外的效果,但要保证消息代理在重新传递消息时保持相同顺序。

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

    从互联网大厂,看互联网行业的高可用网络架构

    最短响应时间策略:将请求分配给平均响应时间最短的服务器。 限流 限流就是避免服务过载,随着流量的提高,无论负载策略如何高效,系统的某个环节总会过载。...在设计超时重试时,一定要考虑幂等设计 超时重试机制:由于服务器宕机、网络延时、服务器线程死锁等原因,导致应用程序无法先限定时间内对服务调用方进行响应。...被调用的服务没有及时响应,可能会存在两种情况,一是服务内部发生异常,导致执行失败,没有返回任何消息;一是执行的服务耗时太长,没有及时响应,但实际已经执行成功。所以针对第二种情况要做幂等设计。...降级是对系统的某个功能进行降级,可以只提供部分功能也可以完全停止该功能。降级一般由开关来进行控制,在不重启服务的情况下,对功能进行降级。...它的主要作用是,当下游的服务因为某种原因变得不可用或服务不及时,为了保证整体服务的可用性,不再调用目标服务,直接返回默认处理或容错处理,从而使得整体服务可以快速响应。

    73810

    python 如果同一秒内调用接口会出现重复操作

    缓存技术可以将数据存储在快速且易于访问的内存中,在需要时能够快速检索数据,从而减少系统进行重复计算来检索相同数据的次数。...该类应包含一个用于存储API请求和响应对象键值对的映射。在我们的示例中,键是API请求,值是API响应。该类应定义一个函数,该函数接受一个API请求对象作为参数,并返回响应对象。...如果请求已经存在,则函数应立即从映射中返回响应对象。否则,函数应向API发送请求,然后将API响应保存到映射中,并将其返回。...如果缓存已经存在,则函数将返回缓存中存在的响应对象。否则,函数将调用 API 并将响应保存到缓存中,然后返回响应对象。...在这种方法中,从接口获取的数据将被存储在缓存中,在限定时间内可以从缓存中快速检索数据。在过期之后,数据将从缓存中删除以确保后续请求从接口检索到的是最新数据。

    90220

    双 11 的狂欢,干了这碗「流量防控」汤

    比如 A 服务调用 B 服务,由于网络问题或 B 服务宕机了或 B 服务的处理时间长,导致请求的时间超长,如果在一定时间内多次出现这种情况,就可以直接将 B 断路了(A 不再请求B)。...网站处于流量高峰期,服务器压力剧增,根据当前业务情况及流量,对一些服务和页面进行有策略的降级(停止服务,所有的调用直接返回降级数据)。...以此缓解服务器资源的压力,保证核心业务的正常运行,保持了客户和大部分客户得到正确的响应。降级数据可以简单理解为快速返回了一个 false,前端页面告诉用户“服务器当前正忙,请稍后再试。”...都支持基于异常比率来进行熔断,但 Sentinel 更强大,可以基于响应时间、异常比率和异常数来进行熔断降级。...4.3、实时统计的对比 Sentinel 和 Hystrix 都是基于滑动窗口进行实时统计,但 Hystrix 是基于 RxJava 的事件驱动模型,在服务调用成功/失败/超时的时候发布响应的事件,通过一系列的变换和聚合最终得到实时的指标统计数据流

    86010

    流量防控该如何选型?

    比如 A 服务调用 B 服务,由于网络问题或 B 服务宕机了或 B 服务的处理时间长,导致请求的时间超长,如果在一定时间内多次出现这种情况,就可以直接将 B 断路了(A 不再请求B)。...网站处于流量高峰期,服务器压力剧增,根据当前业务情况及流量,对一些服务和页面进行有策略的降级(停止服务,所有的调用直接返回降级数据)。...都支持基于异常比率来进行熔断,但 Sentinel 更强大,可以基于响应时间、异常比率和异常数来进行熔断降级。...4.3、实时统计的对比 Sentinel 和 Hystrix 都是基于滑动窗口进行实时统计,但 Hystrix 是基于 RxJava 的事件驱动模型,在服务调用成功/失败/超时的时候发布响应的事件,通过一系列的变换和聚合最终得到实时的指标统计数据流...通过"冷启动",让通过的流量缓慢增加,在一定时间内逐渐增加到阈值上限,给冷系统一个预热的时间,避免冷系统被压垮。 匀速排队: 请求以均匀的速度通过,对应的是漏桶算法。

    1.4K32

    性能测试,你知道什么是99线吗?

    名词解释 - 场景:(性能测试)场景是若干个基于 HTTP/HTTPS 的 URL/API 的组合。URL/API 可能关联了数据文件表示不同用户。...不同的 URL/API 表示不同的业务含义(比如登录、加入购物车),最终组合成一个接近用户各种真实行为同时具备一定用户量级的压测模型。 - QPS:系统每秒完成的请求数,是衡量系统吞吐量的关键指标。...一个用户在压测过程中可能是一个线程或者一个协程。 - 响应时间(RT):指从客户端发送一个请求开始,到客户端接收到服务端返回的响应所经历的时间。...- TP90(90 Top Percentile)响应时间:指在整个测试周期内(测试启动到停止的时间内),某个场景或者被测 API 的所有采样到的响应时间中 90% 在这个值以内。...基本原则 - 响应时间指标应该与吞吐量挂钩 - 响应时间指标应该与成功率挂钩 - 在正式加压前应该进行基准测试,作为衡量参考值 - 应该包含混合多个业务场景的性能测试 3.

    4.8K10

    没有 “流量防控”,还玩什么双11

    比如 A 服务调用 B 服务,由于网络问题或 B 服务宕机了或 B 服务的处理时间长,导致请求的时间超长,如果在一定时间内多次出现这种情况,就可以直接将 B 断路了(A 不再请求B)。...网站处于流量高峰期,服务器压力剧增,根据当前业务情况及流量,对一些服务和页面进行有策略的降级(停止服务,所有的调用直接返回降级数据)。...以此缓解服务器资源的压力,保证核心业务的正常运行,保持了客户和大部分客户得到正确的响应。降级数据可以简单理解为快速返回了一个 false,前端页面告诉用户“服务器当前正忙,请稍后再试。”...都支持基于异常比率来进行熔断,但 Sentinel 更强大,可以基于响应时间、异常比率和异常数来进行熔断降级。...4.3、实时统计的对比 Sentinel 和 Hystrix 都是基于滑动窗口进行实时统计,但 Hystrix 是基于 RxJava 的事件驱动模型,在服务调用成功/失败/超时的时候发布响应的事件,通过一系列的变换和聚合最终得到实时的指标统计数据流

    4.7K20

    小程序静默登录方案设计

    但很多开发者为了拿到UnionId,会在小程序启动时直接调用这个接口,导致用户在使用小程序的时候产生困扰,归结起来有几点: 开发者在小程序首页直接调用 wx.getUserInfo 进行授权,弹框获取用户信息...wx.login 调用时,用户的 session_key 可能会被更新而致使旧 session_key 失效(刷新机制存在最短周期,如果同一个用户短时间内多次调用 wx.login,并非每次调用都导致...用于登录态过期时发起静默登录 ensureSessionKey 验证 sessionKey 是否过期,过期则刷新登录态 绑定微信授权手机号时验证是否过期,过期则得重新弹窗授权 装饰器: fuse-line:熔断机制,如果短时间内多次调用...等待队列:请求被锁定之后,同样的请求都会被推入队列,等待进行中的请求返回后,消费同一个结果。 熔断机制:如果短时间内多次调用,则停止响应一段时间,类似于 TCP 慢启动。 ? ?...); } catch (error) { throw error; } } 复制代码 到此,很多读者可能对熔断机制还不甚理解,熔断的目的是为一个函数提供保险丝保障,短时间内多次调用

    3.2K50

    聊一聊接口测试用例需要注意哪些?

    三、请求方法验证 确认接口支持的请求方法(如GET、POST),并测试不支持的请求方法(如用GET调用只支持POST的接口)是否返回405错误。...四、状态码与响应数据 状态码:验证接口在不同场景下返回的状态码是否符合预期(如200成功、401未授权、404资源不存在)。...幂等性:验证重复请求(如多次提交订单)是否产生副作用。 六、安全测试 鉴权机制:验证未授权请求(如缺少Token)是否被拦截。...七、性能测试 响应时间:单接口的响应时间是否在可接受范围内(如≤500ms)。 吞吐量:测试接口在单位时间内能处理的请求数(如1000次/秒)。...九、 版本兼容性 如果接口有多个版本(如/api/v1/user和/api/v2/user),需确保新旧版本兼容性,避免升级导致旧版本用户异常。

    53720

    Go 实现 AI 多模型负载均衡的实践

    调用大模型 API 时,你有没有遇到过这些问题:某个模型突然限流、响应变慢、甚至直接挂掉?或者 不同模型价格差异大,想根据任务复杂度选择合适的模型?如果你的服务只依赖单一模型,这些问题就是单点故障。...更现实的问题是: 单点风险:一个模型挂了,整个服务不可用 成本优化:简单任务用 GPT-4 太贵,用 GPT-3.5 又怕效果不够 限流问题:单个 API 有速率限制,高峰期容易触发 响应速度:不同模型响应时间不同...OpenAI API,返回结果 } type ClaudeModel struct { apiKey string } func (m *ClaudeModel) Generate(ctx context.Context..., prompt string) (string, error) { // 调用 Claude API,返回结果 } 这样,上层调用者不用关心具体是哪个模型,只管调用 Generate 方法。...func (b *ResponseTimeBalancer) Next() AIModel { b.mu.RLock() defer b.mu.RUnlock() // 遍历找到响应时间最短的模型

    13210

    双 11 的狂欢,干了这碗「流量防控」汤

    比如 A 服务调用 B 服务,由于网络问题或 B 服务宕机了或 B 服务的处理时间长,导致请求的时间超长,如果在一定时间内多次出现这种情况,就可以直接将 B 断路了(A 不再请求B)。...网站处于流量高峰期,服务器压力剧增,根据当前业务情况及流量,对一些服务和页面进行有策略的降级(停止服务,所有的调用直接返回降级数据)。...以此缓解服务器资源的压力,保证核心业务的正常运行,保持了客户和大部分客户得到正确的响应。降级数据可以简单理解为快速返回了一个 false,前端页面告诉用户“服务器当前正忙,请稍后再试。”...都支持基于异常比率来进行熔断,但 Sentinel 更强大,可以基于响应时间、异常比率和异常数来进行熔断降级。...4.3、实时统计的对比 Sentinel 和 Hystrix 都是基于滑动窗口进行实时统计,但 Hystrix 是基于 RxJava 的事件驱动模型,在服务调用成功/失败/超时的时候发布响应的事件,通过一系列的变换和聚合最终得到实时的指标统计数据流

    72910

    这样的接口幂等实现我认为最为优雅(防重复提交)

    幂等性确保多次相同的请求只会对系统状态产生一次性影响,避免因重复操作导致数据不一致。 系统对外暴露的接口: 公共API:如果你的接口是对外公开的API,可能会有多种不同的客户端调用它们。...什么是重复提交 重复提交是指用户在短时间内多次发送相同的请求或提交相同的数据,导致服务器多次处理该请求,可能会引发一系列问题。...在这个事件处理过程中,按钮会被禁用或隐藏,直到服务器返回响应或操作完成。这种方法可以有效避免用户在等待响应时因为误操作而多次点击按钮,导致重复提交。...恢复按钮状态(可选):当服务器返回响应或者操作完成后,可以根据需要恢复按钮的状态,使其再次可点击。这通常用于防止用户在提交失败后无法再次提交。...拦截器实现 在 Vue 项目中实现前端拦截器,可以在每次调用后端接口时拦截请求,确保如果前一个请求未返回状态(如请求仍在处理中或失败),则不会再次调用相同的接口。

    77910

    微信小程序登录功能的前端设计与实现

    并发调用的问题: 在业务场景中,难免会出现多处代码需要触发登录,如果遇到极端情况,这多处代码同时间发起调用。那就会造成短时间多次发起登录过程,尽管之前的请求还没有完成。...在「第一个需要登录态接口」被调用的时候去发起登录 更进一步,我们会发现,需要登录态的更深层次的节点是在发起的「需要登录态的后端 API 」的时候。...那么我们可以在调用「需要登录态的后端 API」的时候再去发起「静默登录」,对于并发的场景,让其他请求等待一下就好了。...等待队列:请求被锁定之后,调用该方法的所有调用,都推入一个队列中,等待网络请求完成之后共用返回结果。 熔断机制:如果短时间内多次调用,则停止响应一段时间,类似于 TCP 慢启动。...wx.login 调用时,用户的 session_key 可能会被更新而致使旧 session_key 失效(刷新机制存在最短周期,如果同一个用户短时间内多次调用 wx.login,并非每次调用都导致

    3.4K62

    普林斯顿算法讲义(三)

    在典型应用中,有三种顶点排序是感兴趣的: 前序:在递归调用之前将顶点放入队列。 后序:在递归调用后将顶点放入队列。 逆后序:在递归调用后将顶点放入栈。...如果我们修改 DijkstraSP.java 以使一个顶点不能多次入队(例如,使用marked[]数组标记那些已经被松弛的顶点),那么算法保证在E log V时间内运行,但当存在负权边时可能产生错误结果...线上的所有对最短路径。 给定一个加权线图(无向连通图,所有顶点的度为 2,除了两个端点的度为 1),设计一个算法,在线性时间内预处理图,并能在常数时间内返回任意两个顶点之间最短路径的距离。...字符串方法调用s.substring(i, j)返回 s 从索引 i 开始到 j-1 结束的子字符串(而不是在 j 结束,正如你可能会怀疑的那样)。 Q. 如何更改字符串的值? A....它应该支持在常数时间内进行连接,并在与字符数成比例的时间内打印出字符串。 **反转字符串。**编写一个递归函数来反转一个字符串。不要使用任何循环。

    1.4K10

    深入理解Java虚拟机:Jvm性能调优

    下面是 Jvm 常提到的性能指标 吞吐量:用户代码时间 /(用户代码执行时间 + 垃圾回收时间)优先场景:科学计算、数据挖掘; 响应时间:STW 越短,响应时间越好 网站页面、API 提供 内存占用:...所以,在设计(或使用)GC 算法时,我们必须确定我们的目标:一个GC算法只可能针对两个目标之一(即只专注于最大吞吐量和最小合理暂停时间),或尝试找到一个二者的折衷 2、调优的步骤 如何进行调优,下面是调优常用的步骤...: 熟悉业务场景,选择合适的垃圾回收器 垃圾回收器:ParallelGC(PS+PO):单位时间内,STW 的时间最短 (发生 2 次 STW,0.2+0.2=0.4),垃圾回收时间占比最低,这样就称吞吐量高...垃圾回收器:CMS,G1:单位时间内,可能发生5次 STW,但是单次的 STW 时间最短(0.1+0.1+0.1+0.1+0.1=0.5) 计算内存需求,给 Jvm 设置合适的内存大小 Eden...jstack [option] PID [option] -F : 当正常输出请求不被响应时,强制输出线程堆栈 -l : 除堆栈外,显示关于锁的附加信息 -m : 如果调用到本地方法的话,可以显示

    1.5K30

    再看最著名的 NP 问题之 TSP 旅行商问题

    P 等于 NP 吗 P 问题 是指可以在多项式时间内解决的问题,也就是说,存在一种有效的算法,可以在 多项式时间内 找到问题的解。这些问题被认为 是相对容易解决的。...NP 问题 是指可以在多项式时间内验证解答的问题,也就是说,如果你提供了一个解答,可以用一个有效的算法在多项式时间内验证它是否正确。...也就是说,尚未证明是否所有可以在多项式时间内验证的问题都可以在多项式时间内解决,或者是否存在一种方法可以将 NP 问题有效地转化为 P 问题。 P与NP问题仍然是一个悬而未决的问题。...旅行推销员问题是一个经典的组合优化问题,通常描述为以下情景: 假设有一个推销员,他需要访问一组不同的城市,然后返回出发城市,使得他在旅途中经过每个城市恰好一次,同时总路程最短。...回溯法 回溯法是一种解决组合优化问题的方法,它通过穷举所有可能的路径,然后选择最短的路径。

    2.2K30

    博文精译-高容量分布式系统的容错

    根据以上架构上的考虑,我们选择了组合多种容错方法的解决方案: 网络超时和重试 根据每个依赖分离单独的线程池 信号量(通过tryAcquire,而不是阻塞调用) 断路器 这些容错方法各有优缺点,但是当它们结合在一起时...我们认为将依赖调用隔离到单独的线程中所带来的好处要超过缺点(在大多数情况下)。此外,由于API正逐步向增加并发性迈进,因此通过使用相同的并发解决方案实现容错和性能提高是双赢的。...信号量代替线程,用于不进行网络调用时的依赖项执行(例如那些只执行内存缓存查找的线程),因为独立线程的开销对于这些类型的操作来说太高了。 我们还使用信号量来防止不可信的回退。...示例用例 下面是关于线程、网络超时和重试如何结合的例子: 上面的图显示了一个示例配置,其中依赖项一般不会达到99.5%处(99.5%用户都会在那段时间内返回),因此缩短网络超时,并立即重试,大多数情况下...,重试请求会在平均延迟时间内完成,这样这一切都会在300ms的线程超时时间内完成。

    80620
    领券