1 异常重试的意义发起一次RPC调用,调用远程的一个服务,如用户的登录操作,先对用户的用户名以及密码进行验证,验证成功后,获取用户基本信息。通过远程的用户服务获取用户基本信息时,恰好网络故障,如突然抖了一下,导致请求失败,而这请求我们希望它能够尽可能执行成功,咋办?需重新发起一次RPC调用,代码中如何处理?catch一下,失败就再发起一次调用?这显然不优雅。考虑RPC框架的重试机制。2 RPC框架
1 需求流量高峰,突现线上服务可用率降低,排查发现,因为其中有几台机器较旧。当时最早申请的一批容器配置较低,缩容时留下了几台,当流量达到高峰时,这几台容器由于负载太高,扛不住压力。业务部门问题:当时给出方案:在治理平台调低这几台机器权重,访问流量就减少了。但业务说:当他们发现服务可用率降低时,业务请求已受影响,再如此解决,需要时间,那这段时间里业务可能已有损失。紧接提出需求:RPC框架有智能负载机
0 前言开始Java编程性能优化。从String优化讲起。String 对象是我们使用最频繁的一个对象类型,但它的性能问题却是最容易被忽略的。String 对象作为 Java 语言中重要的数据类型,是内存中占据空间最大的一个对象。高效地使用字符串,可以提升系统的整体性能。两个对象是否相等?代码如下:String str1= "abc"; String str2= new String("abc"
0 前言AdaBoost不仅可用于分类问题,还可以用于回归分析。啥是分类,啥是回归?分类和回归本质一样,对未知事物预测。不同在于输出结果类型:分类输出的是一个离散值,因为物体的分类数有限的回归输出的是连续值,也就是在一个区间范围内任何取值都有可能目标:用AdaBoost预测房价,这是回归问题。掌握:AdaBoost工具的使用,包括使用AdaBoost进行分类,以及回归分析使用其他的回归工具,比如决
1 Redis的执行模型执行模型,即Redis运行时使用的进程、子进程和线程的个数,以及它们各自负责的工作任务。你肯定听过“Redis是单线程”、“Redis的主I/O线程”、“Redis包含多线程”,众说纷纭。于是你开始好奇了,Redis到底是不是一个单线程程序?若Redis就是单线程程序,则需避免所有容易引起线程阻塞的操作若Redis不只是单线程,还有其他线程在工作,则需要了解多线程各自负责什
0 前文上一文针对 ShardingSphere 支持强一致性事务的 XAShardingTransactionManager 部分内容展开,本文继续:讲解该类介绍支持柔性事务的 SeataATShardingTransactionManagersharding-transaction-xa-core中关于 XAShardingTransactionManager,本文研究 XATransacti
0 前言官网描述六类工作队列模式:简单队列模式:最简单的工作队列,一个消息生产者,一个消息消费者,一个队列。另称点对点模式工作模式:一个消息生产者,一个交换器,一个消息队列,多个消费者。也称点对点模式发布/订阅模式:无选择接收消息,一个消息生产者,一个交换器,多个消息队列,多个消费者路由模式:基于发布/订阅模式,有选择的接收消息,即通过 routing 路由进行匹配条件是否满足接收消息主题模式:同
1 架构师能力思维模型全局思维抽象思维2 新需求的思考路径需求是否合理,是否能解决问题?能划分多少个子系统?每个子系统能划分多少个模块?这个系统需要可靠性吗,需要扩展能力吗?成本需要控制吗?表如何设计?API如何设计?模块之间如何通信?3 风控引擎设计的核心点架构会围绕核心点进行设计:3.1 高效率的规则(策略)选代风险规则可动态,自由组合的调整风险规则设计思路风险规则可由多个基础规则(因子)组成
0 前言时间分片的目的和原理时间分片旨在通过将数据根据时间戳分散到不同的表或数据库中,来提高查询效率和数据管理的可维护性。这种方法特别适用于大数据量的场景,可以有效减少单个查询对数据库的压力,提高查询速度。消息ID查询的需求在时间分片的基础上,根据消息ID进行查询是一个常见需求。消息ID通常作为唯一标识,可以快速定位到具体的消息数据。结合时间分片,可以进一步优化查询效率,尤其是在处理大量历史数据时
Distributed Caching:如果每次我在软件系统的缓存实现中遇到一个错误都能赚到一美元的话……我大概可以支付Redis Enterprise一年的企业订阅费用了。缓存,似乎是这样一种东西,你几乎能把它做对,但永远不会完全对。这是有充分理由的。毕竟——缓存(或者更确切地说是缓存失效)是计算机科学中被认为最难解决的两个基础性问题之一。当然,另一个是命名变量。无论是开玩笑还是认真——缓存确实
系统集成即ShardingSphere 和 Spring 框架的集成。ShardingSphere 实现两种系统集成机制:命名空间(namespace)机制,通过扩展 Spring Schema 来实现与 Spring 框架的集成编写自定义 starter 组件完成与 Spring Boot 的集成1 基于命名空间集成 Spring扩展性角度,基于 XML Schema 的扩展机制常见而实用。Sp
流量高峰时,系统在性能、可用性方面存在不足导致的。那当时你们咋办?1 啥是性能优化应用系统上线那一刻开始,随着用户量的增加、业务功能的持续迭代,系统会面临各种不同程度的挑战,如果不及时采取优化措施,我们会发现诸多问题:系统怎么越来越慢了,流量一高系统就卡顿、甚至宕机等等。性能优化贯穿整个软件生命周期。1.1 性能衡量指标1.1.1 响应时间(RT)所谓响应时间,是指完成某一功能所需要的时间,一般可
0 SharkSpark 的一个组件,用于大规模数据分析的 SQL 查询引擎。Shark 提供了一种基于 SQL 的交互式查询方式,可以让用户轻松地对大规模数据集进行查询和分析。Shark 基于 Hive 项目,使用 Hive 的元数据存储和查询语法,并基于Hive进行了性能优化和扩展。0.1 设计灵感来自 Google 的 Dremel 系统:将数据存储在列式存储引擎使用分布式计算引擎进行查询S
1 Spark 的 local 模式Spark 运行模式之一,用于在本地机器上单机模拟分布式计算的环境。在 local 模式下,Spark 会使用单个 JVM 进程来模拟分布式集群行为,所有 Spark 组件(如 SparkContext、Executor 等)都运行在同一个 JVM 进程中,不涉及集群间通信,适用本地开发、测试和调试。1.1 重要特点和使用场景本地开发和测试:在开发 Spark
关注我,紧跟本系列专栏文章,咱们下篇再续!作者简介:魔都技术专家兼架构,多家大厂后端一线研发经验,各大技术社区头部专家博主,编程严选网创始人。具有丰富的引领团队经验,深厚业务架构和解决方案的积累。负责:中央/分销预订系统性能优化活动&优惠券等营销中台建设交易平台及数据中台等架构和开发设计目前主攻降低软件复杂性设计、构建高可用系统方向。参考:编程严选网智能中台是啥集结了中台产品技术、AI能力
1 问题描述系统从圣诞节晚开始,每晚固定十点多到十一点多时段,大概瘫痪1h,过这时段系统自动恢复。系统瘫痪现象就是,网页和App都打不开,请求超时。系统架构:整个系统托管在公有云,Nginx前置网关承接前端所有请求,后端按业务划微服务。数据保存在MySQL,部分数据Memcached前置缓存。数据并没按微服务最佳实践要求,做严格划分和隔离,而是为方便,存一起。这对一个业务变化极快的创业公司合理。因
2 支付能力的快速接入支付快速接入:设计流程主要目标:屏蔽接入第三方支付平台的复杂度,为业务提供便捷接入的支付的能力。整体交互逻辑:用户下单后,业务线生成生订单的同时请求支付系统,返回携带加密后的收银台链接,业务前端渲染收银台H5链接,之后用户操作都直接与支付系统直接交互,不再经过业务线。支付渠道-接入微信支付左上是收银台(支付页),包括订单基本信息、随机减活动和微信引流活动等。右上是支付平台和微
1 背景用户第一次点击下单操作时,会弹出支付页面待支付。但可能存在用户在支付时发现账户金额不够,后续选择:其他渠道支付(如微信支付转为支付宝支付)或采用不同终端来支付(如由电脑端支付转为app端支付)这时就面临二次支付场景。2 方案1由于用户支付的时候的支付页面是html文件或是一个支付二维码,可将支付页面先存储一份在数据库中,用户二次支付时通过查询数据库来重新返回用户原来的支付页面。2.1 缺点
为什么学习 ShardingSphere 的 SPI?你可能已经熟悉 Java 和 Dubbo 的 SPI(Service Provider Interface)机制,所以你可能会想:“为什么要学习 ShardingSphere 的 SPI 机制呢?”原因非常简单:ShardingSphere 的源代码更简单、更容易适应。ShardingSphere 的 SPI 机制执行非常顺畅,日常操作所需的代
1 故障背景 10:09:34.948 ifpo.apache .kafka.clients .Networkclient 748[Producer clientId=producer-1] Connection to node 0(10.x.x.x:9093) could not be established. Broker may not be available. 故障细节 生产kafka
随着分布式系统和微服务架构的持续发展,对系统中存在的各种服务和资源进行统一治理已经成为系统架构设计过程中的一个基础要点。ShardingSphere 作为一款分布式数据库中间件,同样集成了编制治理方面的功能。 如何使用 ShardingSphere 所提供的编排治理功能进行展开, 先讨论 ShardingSphere 对编排治理的抽象过程 然后给出在开发过程中,基于配置中心介绍集成编排治理功能的
0 环境 集群信息 4个broker topic:100+(每个topic30个partition) 集群加密方式:plaintext 存储:ceph Producer 单线程,每秒50条左右 Consumer 不间断poll消息 测试客户端 原生的KafkaConsumer/KafkaProducer; 测试场景 Producer和Consumer运行过程中,通过登录 kakfa 运行主机,直接
你是否厌倦了浏览漫长的文章来解决有关云架构的安全、可靠性和运维卓越的问题?那么让我们直接进入蓝图。这里简要介绍了每个企业应用程序的基础应该如何规划。 AWS架构蓝图: 定义蓝图的方式是将服务划分为以下几个层次: Public Tier 公共层 → 这些服务可以从AWS外部访问,并充当保护底层服务的前线服务。即使开发人员也必须首先通过VPN登录到Jumphost VM,然后才能访问其他服务。 P
5 收集联系信息流程 为发送通知,我们需收集各种信息如移动设备令牌、电子邮件地址、电话号码和第三方通道信息。 这是一个用于存储联系信息的简化的数据库表模式。它是一个带有电子邮件、电话、设备令牌和外部通道的单个NoSQL DynamoDB表。 联系人表模式 device_tokens 应以 JSON 格式存储。示例: [ { "deviceToken": "
1 什么是 MQTT 控制报文? MQTT 数据传输的最小单元。[MQTT 客户端]和服务端通过交换控制报文来实现: 订阅主题 发布消息 MQTT控制报文类型按功能分为连接、发布、订阅三类: CONNECT 报文用于客户端向服务端发起连接,CONNACK 报文则作为响应返回连接的结果。如果想要结束通信,或者遇到了一个必须终止连接的错误,客户端和服务端可以发送一个 DISCONNECT 报文然
消息消费失败,很多框架最直接解决方案就是自动重新发送,而重试就会产生重复消息。MQTT协议给出三种传递消息时能够提供的服务质量,服务质量其实就表示报文要分送几次。由低到高: 1 QoS 0:At most once(最多分发一次) 消息最多传递一次,即可为0或1次,若当时客户端不可用,则会丢失该消息。即消息在传递时,最多被送达1次。无消息可靠性保证,允许丢消息。 一种 "fire and
1 安装BifroMQ docker run -d --name bifromq -p 1883:1883 bifromq/bifromq:latest 来看如何连接到BifroMQ呢? 2 MQTT Client安装 使用已有的第三方 MQTT 客户端工具,快速验证是否可与 BifroMQ 提供的 MQTT 服务交流发送或接收消息。 免费第三方 MQTT 客户端工具较多:MQTT.fx、MQT
1 深入研究日志 第一次工作遇到代码报错尝试解决并没有做好,而且我不清楚是哪里做错了。一位同事建议我打开日志看看是哪里出错了。而要这样做,他说我应该“cat 日志文件”。 当时我真以为同事们在和我开玩笑,或者在说一个关于猫的笑话,只不过我没听懂。我在大学里使用 Linux 只是为了编译、使用源代码控制和使用文本编辑器。所以,我不知道“cat”其实是一个命令,用来将文件内容输出到终端,之后,这些内容
你是否曾想过为什么在 Spring Boot 应用中缓存是如此重要?答案在于它通过减少数据检索时间来提高性能。在本文中,我们将深入探讨缓存对微服务模式的影响,并探讨根据操作易用性、速度、可用性和可观测性等因素选择正确缓存的重要性。我们还将探讨如何最大程度地提高缓存性能和可用性。 1 缓存实现 1.1 缓存对微服务模式的影响 考虑这样的情景,其中一个 Edge API 开放给互联网,触发对服务 A
1 背景 兼容技术团队自研的RPC框架,技术团队不需要修改代码,RPC注解方法可以托管在任务调度系统中,直接当做一个任务来执行。 研读XXL-JOB,同时从阿里云分布式任务调度 SchedulerX 吸取。 SchedulerX 1.0 架构图 Schedulerx-console 是任务调度的控制台,用于创建、管理定时任务。负责数据的创建、修改和查询。在产品内部与 schedulerx se
Copyright © 2005-2025 51CTO.COM 版权所有 京ICP证060544号