
系统架构
文章平均质量分 83
系统架构
薛定谔的猫1982
技术博客
展开
专栏收录文章
- 默认排序
- 最新发布
- 最早发布
- 最多阅读
- 最少阅读
-
Restful
在互联网早期,尚未完全普及且移动设备并不广泛使用的时候,对API的需求相对较低。那时,由于页面请求量和并发用户较少,因此采用了复杂的协议来进行数据操作和传输。随着移动设备的增多,网页应用从这些设备访问变得日益重要。这一变化反映出用户行为和期望的巨大转变,需要更有效的客户端和服务器之间的沟通方式。此时,API的重要性愈发突出,它们成为了移动设备与网页应用之间无缝交互的桥梁。REST:英文representational state transfer直译为表现层状态转移,或者表述性状态转移;原创 2025-05-05 09:51:31 · 1026 阅读 · 0 评论 -
微服务设计约束
相较于单体应用,微服务架构在提升开发、部署等环节灵活性的同时,也提升了在运维、监控环节的复杂性。原创 2025-05-03 13:34:40 · 992 阅读 · 0 评论 -
架构师-金丝雀与蓝绿发布
验证新版本符合预期后,逐步调整流量权重比例,使得流量慢慢从老版本迁移至新版本,期间可以根据设置的流量比例,对新版本服务进行扩容,同时对老版本服务进行缩容,使得底层资源得到最大化利用。在保留老版本的同时部署新版本,将两个版本同时在线,新版本和老版本相互热备,通过切换路由权重的方式(非0即100)实现应用的不同版本上线或者下线,如果有问题可以快速地回滚到老版本。金丝雀发布,又称灰度发布,是指通过让小部份用户流量引入的新版本进行测试,如果一切顺利,则可以增加(可能逐渐增加)百分比,逐步替换旧版本。原创 2025-05-03 11:51:49 · 706 阅读 · 0 评论 -
RUP的四个阶段
RUP(Rational Unified Process)即统一软件开发过程,是一个面向对象且基于网络的程序开发方法论,它包括四个连续的阶段,每个阶段都有明确的目标和里程碑。原创 2025-03-05 09:46:02 · 525 阅读 · 0 评论 -
分布式事务三阶段协议
分布式事务的三阶段分别是准备阶段、预提交阶段和提交 / 回滚阶段,以下是详细介绍:三阶段提交协议可以理解为两阶段提交协议的改良版,是在协调者和参与者中都引入超时机制,并且把两阶段提交协议的第一个阶段分成了两步: 询问,然后再锁资源,最后真正提交。两阶段提交协议最早是分布式事务的专家Jim Gray在1978年的一篇文章Notes on Database Operating Systems中提及。两阶段提交协议可以保证数据的强一致性,即保证了分布式事务的原子性:所有结点要么全做要么全不做。原创 2025-02-22 20:13:41 · 779 阅读 · 0 评论 -
分布式事务-两阶段提交
分布式两阶段提交(Two-Phase Commit,2PC)是分布式系统中常用的一种原子提交协议,用于保证在分布式事务中所有参与者要么全部提交事务,要么全部回滚事务,以维护数据的一致性。原创 2025-02-19 16:51:39 · 1125 阅读 · 0 评论 -
分布式事务-XA
XA 模式是一种分布式事务处理的解决方案,它基于 X/Open 组织定义的 XA 规范,用于在分布式系统中协调多个资源管理器(如数据库)以保证事务的原子性、一致性、隔离性和持久性(ACID)。原创 2025-02-15 16:22:55 · 714 阅读 · 0 评论 -
oltp olap的区别
联机分析处理 OLAP 能使分析人员迅速、一致、交互地从各个方面观察信息,具有共享多维信息快速分析的特征,其中的多维性可满足从时间、地区和商品种类三个维度分析数据的需求。ETL 是将数据从来源端经过抽取、交互转换、加载至目的端的过程,主要用于数据仓库的构建,均不符合题意。而 ETL 是构建数据仓库的一个环节,数据展现是商业智能的一个部分,但不是关键技术,OLTP 主要用于日常事务处理,不属于商业智能的关键技术,所以答案为 A。B.OLTP 系统的数据更新频率高,OLAP 系统的数据更新频率低。原创 2025-02-13 09:49:21 · 1094 阅读 · 0 评论 -
分布式事务-AT模式
AT 模式的一阶段、二阶段提交和回滚均由 Seata 框架自动生成,用户只需编写“业务 SQL”,便能轻松接入分布式事务,AT 模式是一种对业务无任何侵入的分布式事务解决方案。但AT模式存在的不足就是 当操作的数据 是共享型数据,会存在脏写的问题,所以如果是 用户独有数据可以使用AT模式。AT 模式是一种无侵入的分布式事务解决方案。在 AT 模式下,用户只需关注自己的“业务 SQL”,用户的 “业务 SQL” 作为一阶段,Seata 框架会自动生成事务的二阶段提交和回滚操作。一阶段。原创 2025-02-13 09:47:40 · 962 阅读 · 0 评论 -
分布式事务-at模式
AT 模式是在分布式事务处理中,基于支持本地 ACID 事务的关系型数据库,通过对数据的解析和日志记录等技术,来实现分布式事务的最终一致性。此外,在网络通信方面,如果网络不稳定或出现延迟,AT 模式可能会因为等待其他节点的响应而导致事务处理时间延长。但总体来说,在大多数基于关系型数据库的分布式系统中,AT 模式是一种高效、便捷的分布式事务解决方案。不过,AT 模式也有一定的局限性,它依赖于数据库的支持,对一些非关系型数据库或特殊的存储系统可能不太适用。TCC 模式需要在业务代码中显式地实现。原创 2025-02-11 21:44:38 · 668 阅读 · 0 评论 -
saga模式的选择基于命令还是基于事件的Saga实现方式?
这两种实现方式各有特点,在实际应用中,需要根据具体的业务场景、系统架构和性能需求等来选择合适的实现方式,有时也会将两种方式结合使用,以充分发挥它们的优势。原创 2025-02-11 21:43:52 · 565 阅读 · 0 评论 -
Saga基于命令和基于事件这实现方式
这两种实现方式各有特点,在实际应用中,需要根据具体的业务场景、系统架构和性能需求等来选择合适的实现方式,有时也会将两种方式结合使用,以充分发挥它们的优势。原创 2025-02-10 10:22:38 · 1023 阅读 · 0 评论 -
架构师-saga模式
Saga 模式是一种将长事务分解为一系列本地事务的设计模式,每个本地事务都可以独立提交或回滚,通过协调这些本地事务的执行顺序和结果,来保证整个分布式事务的最终一致性。原创 2025-02-10 10:03:31 · 1096 阅读 · 0 评论 -
分布式事务-tcc异常中的空回滚
因为是全局事务,A服务调用服务C的try时服务出现异常服务B因为网络或其他原因还没执行try方法,TCC因为C的try出现异常让所有的服务执行cancel方法,比如B的try是扣减积分 cancel是增加积分,还没扣减就增加显然是有问题的。空回滚是 TCC 分布式事务处理中需要重点关注和妥善处理的问题,它关系到分布式系统中数据的一致性和业务的正常运行。通过合理的设计和处理机制,可以有效应对空回滚带来的挑战,提高系统的稳定性和可靠性。原创 2025-02-08 11:18:51 · 551 阅读 · 0 评论 -
分布式事务-TCC异常之悬挂
在 TCC(Try - Confirm - Cancel)分布式事务模式中,悬挂是一种需要特别关注的异常情况,以下为你详细介绍 TCC 悬挂的相关内容。在 TCC 事务模式下,我们通过一个事务协调器来管理多个事务,每个事务先执行 try 方法。当所有事务参与者的 try 方法执行成功,就执行 confirm 方法完成真正逻辑的执行,一旦任意一个事务参与者出现异常,就通过 cancel 接口触发事务回滚,释放 Try 阶段占用的资源。原创 2025-02-08 11:18:36 · 823 阅读 · 0 评论 -
TCC模式原理
TCC模式与AT模式非常相似,每阶段都是独立事务,不同的是TCC通过人工编码来实现数据恢复。阶段一(Try): 检查余额是否充足,如果充足则冻结金额增加30元,可用余额扣除30。原创 2025-02-07 18:00:35 · 423 阅读 · 0 评论 -
架构师-幂等性的含义和作用
在分布式环境下,一个操作或方法如果被多次执行所产生的结果与执行一次的结果相同,那么就称这个操作或方法具有幂等性。也就是说,无论该操作被重复执行多少次,对系统状态的影响都只有一次操作的效果,不会因为多次执行而产生额外的副作用或导致数据不一致等问题。定义:接口的幂等性是指在接口调用时,无论对同一接口发起一次还是多次相同的请求,其产生的结果都应该是一致的,不会因为多次调用而产生不同的效果或副作用。这里的 “相同请求” 通常指请求的参数、请求方式以及请求所针对的资源等都完全相同。意义。原创 2025-02-07 09:39:22 · 873 阅读 · 0 评论 -
分布式tcc
TCC 即 Try-Confirm/CancelTCC 事务的处理流程与 2PC 两阶段提交类似,不过 2PC 通常都是在跨库的 DB 层面,而 TCC 本质上就是一个应用层面的 2PC,需要通过业务逻辑来实现。这种分布式事务的实现方式的优势在于,可以让应用自己定义数据库操作的粒度,使得降低锁冲突、提高吞吐量成为可能。,业务逻辑的每个分支都需要实现 try、confirm、cancel 三个操作。此外,其实现难度也比较大,需要按照网络状态、系统故障等不同的失败原因实现不同的回滚策略。原创 2025-02-06 18:34:20 · 1650 阅读 · 0 评论 -
数据库中分库分表的知识
水平分表是将一个表中的数据按照一定的规则(如哈希、范围等)分散存储到多个表中,而将表按照字段进行拆分是垂直分表的概念,所以选项 B 描述错误。选项 A,垂直分库就是按业务功能拆分数据库,比如电商系统中把用户、商品、订单库分开;选项 C,分库分表能分散数据和压力,从而提高并发处理能力;:某互联网电商企业业务发展迅速,其订单数据库单表数据量已经达到了 5 亿条记录,且每天新增订单记录约 10 万条,在业务高峰期数据库的并发查询和写入请求非常大,导致系统响应缓慢。:以下关于数据库分库分表的描述,错误的是( )原创 2025-02-05 09:37:27 · 1039 阅读 · 0 评论 -
架构师-设计模式-策略模式
策略模式,举几个贴近生活的例子:当我们出行的时候,不同的出行方式就是不同的策略,例如走路、开车、骑自行车、坐飞机、坐邮轮等等,每一种出行方式都代表着不同的费用和时间;增加使用者使用负担:因为大量运用策略模式会在实际项目中堆砌很多策略类或者策略对象,这样项目的新人如果不熟悉这些策略类和策略对象,会增加他们的使用成本和学习成本,前期来说会比看if else更加难懂。传统的实现方式,通过传统if代码判断。先来看下策略模式的定义:定义一系列的算法,把它们一个个封装起来,并且使它们可以相互替换。原创 2025-01-04 13:47:22 · 852 阅读 · 0 评论 -
分布式锁原理 Redisson+ ZooKeeper
但是如果在Tomcat的内部,又有两个线程,但是他们的锁对象虽然写的和服务器A一样,但是锁对象却不是同一个,所以线程3和线程4可以实现互斥,但是却无法和线程1和线程2互斥。控制时序所有试图获取锁的客户端,都是被顺序执行,只是会有一个序号(zxid),我们会有一个节点,例如:/testLock,所有临时节点都在这个下面去创建,ZK的父节点(/testLock) 维持了一个序号,这个是ZK自带的属性,他保证了子节点创建的时序性,从而也形成了每个客户端的一个全局时序。获取到锁的线程:会执行业务逻辑。原创 2025-01-26 09:54:32 · 315 阅读 · 0 评论 -
Gemfire Geode redis区别
GemFire、Apache Geode 和 Redis 是三种不同的数据管理工具,它们之间的区别具体如下:原创 2025-01-25 09:18:39 · 1496 阅读 · 0 评论 -
架构师-读写扩散
图片上传到该CDN后,小王的微信客户端会通知微信的朋友圈CDN:这里有一个新的发布(比如叫K2),这个发布的图片URL是什么,谁能看到这些图片,等等此类的元数据,来把这个发布写到发布的表里。但是相对应的,读取就很简单了,每一个用户只需要读取自己的时间线表,就这一个动作就行,而不需要去遍历所有好友的相册表。至于为什么不采用读扩散,一是因为一个群聊的人数相对较少,利用写扩散更加合适,二是如果采用读扩散,微信群聊每秒钟都可能有消息产生,那么用户会执行大量的读操作,这个过程并不是完全可靠的,很可能发生数据丢失。原创 2025-01-24 09:53:07 · 1689 阅读 · 0 评论 -
架构师-嵌入式系统架构层次和递归两种模型
将嵌入式系统划分为多个层次,每个层次专注于特定的功能,提高系统的模块化和可维护性。原创 2025-01-22 08:05:46 · 962 阅读 · 0 评论 -
架构师-两层胖客户端+瘦服务器
综上所述,“两层胖客户端+瘦服务器”架构模式具有功能分离、负载均衡、灵活部署和数据安全等特点,适用于企业级应用、分布式系统和移动应用等场景。在设计和实现该架构时,需要充分考虑网络依赖、硬件要求和安全性考虑等因素。原创 2025-01-22 08:05:23 · 276 阅读 · 0 评论 -
架构师-代码异味
代码异味是代码中潜在的设计或实现问题,虽然它们不一定是错误,但通常表明代码可能存在可维护性、可读性或可扩展性方面的问题。在XXX项目中,我们使用SonarQube等工具来检测和修复代码异味,通过持续改进,逐步提高了代码的质量和可维护性。在未来的项目中,我们将继续关注代码异味,探索更多的代码质量管理方法,以进一步提升软件质量。原创 2025-01-21 15:35:57 · 627 阅读 · 0 评论 -
架构师-静态架构评估
静态架构评估是指在不运行系统的情况下,通过审查和分析系统的设计文档、架构图、代码等静态信息,来评估系统的架构是否合理、是否满足需求的一种方法。静态架构评估的结果通常以报告的形式呈现,包括评估的详细过程、发现的问题、建议的改进措施等。总之,静态架构评估是软件开发过程中不可或缺的一环,它有助于确保系统的架构质量、稳定性和可维护性,并为后续的开发和维护工作提供有力的支持。静态架构评估可以帮助识别潜在的设计问题,提前发现可能的风险点,并在系统开发之前进行优化,从而提高系统的整体质量和性能。原创 2025-01-19 08:09:00 · 675 阅读 · 0 评论 -
架构师-NPU
在以下关于 NPU 的描述中,错误的是( )A. NPU 是专门用于处理神经网络算法和深度学习任务的芯片B. NPU 在处理特定的神经网络计算任务时,能效比高于 GPUC. NPU 可以完全替代 CPU 在计算机系统中的作用D. NPU 在智能手机、智能安防、自动驾驶等领域有广泛应用答案是:C。因为 NPU 是专门用于处理神经网络算法和深度学习任务的芯片,不能完全替代 CPU 在计算机系统中的通用处理作用。原创 2025-01-17 13:20:15 · 627 阅读 · 0 评论 -
架构师-云上自动化运维
云上自动化运维指的是利用自动化工具和脚本替代人工操作,实现对云环境中各类资源和服务的高效管理和维护。其核心特点是自动化、智能化和实时性。首先,自动化体现在运维过程的各个方面,如自动部署、自动扩展、自动监控等,减少了人工干预。其次,智能化则意味着通过机器学习和数据分析,运维系统能够主动发现和解决问题,提升运维智能水平。最后,实时性确保系统在运行过程中能及时响应各种变化和突发事件,保障系统的高可用性。云计算是一种通过互联网提供计算资源(如服务器、存储、数据库、网络等)的服务模式。原创 2025-01-17 13:19:57 · 595 阅读 · 0 评论 -
架构师-模型驱动架构设计方法及其应用
研发的软件项目及其主要工作,随后阐述了采用模型驱动架构思想进行软件开发的全过程和特点,最后详细说明了该软件项目如何基于模型驱动架构完成分析、设计和开发。通过实践,证明了模型驱动架构在提高开发效率、增强系统可维护性和可扩展性方面的显著优势。原创 2025-01-16 10:43:50 · 617 阅读 · 0 评论 -
架构师-批处理架构和管道架构
批处理和管道各有其独特的优势和适用场景。批处理适用于处理大量数据和重复性任务,而管道则适用于实时数据处理和复杂任务组合。在实际应用中,可以根据具体需求选择合适的方法,或者将两者结合使用,以达到最佳的数据处理效果。原创 2025-01-16 09:11:09 · 761 阅读 · 0 评论 -
架构师-论软件系统可靠性分析与评价方法
通过马尔可夫分析,我们得出了系统的平均无故障时间(MTBF)和平均修复时间(MTTR),为系统的可靠性评估和性能优化提供了重要依据。例如,我们发现系统在长时间运行后容易出现性能下降的问题,于是我们及时对系统进行了优化和改进,提高了系统的稳定性和响应速度。通过对比不同模型的预测结果和实际测试数据,我们选择了最适合该系统的可靠性模型,并基于该模型对系统的可靠性进行了量化评估。通过采用多种可靠性分析与评价方法,我们对系统的可靠性进行了全面评估和优化,提高了系统的稳定性和可靠性水平。(四)可靠性模型评估法的应用。原创 2025-01-16 09:10:50 · 1301 阅读 · 0 评论 -
架构师-论面向对象分析的应用与实现
然后,我利用面向对象分析的方法,对需求进行了抽象和封装,形成了系统的类图和用例图。接着,我根据类图和用例图,设计了系统的顺序图和活动图,明确了对象之间的交互流程和任务执行顺序。通过面向对象分析的应用与实现,我们成功地将现实世界中的问题抽象为对象模型,并明确了对象之间的关系和交互流程。例如,用户类的属性和行为被封装在一个类中,外部只能通过用户类提供的接口(如登录、注册方法)来访问用户的属性和行为。通过面向对象分析的方法论,我们成功地将现实世界中的问题抽象为对象模型,并明确了对象之间的关系和交互流程。原创 2025-01-15 18:46:44 · 672 阅读 · 0 评论 -
架构师-论边云协同的设计与实现
通过资源协同、数据协同、智能协同和应用管理协同等方面的创新应用,我们成功实现了对大规模数据的实时处理和分析,降低了系统延迟和能耗,提升了系统智能化水平,并增强了系统的可扩展性和灵活性。本文首先介绍了边云协同的基本概念和技术背景,然后结合一个具体的软件项目,详细阐述了边云协同的设计与实现过程,包括资源协同、数据协同、智能协同和应用管理协同等方面。通过边云协同技术,我们实现了对大规模数据的实时处理和分析。在智慧城市项目中,我们利用边云协同技术实现了对城市基础设施的实时监控和管理,提高了系统的响应速度和准确性。原创 2025-01-15 17:57:28 · 1159 阅读 · 0 评论 -
架构师-论银行数字标签系统多数据源集成的应用与实现
在现代银行业,数据驱动的精细化运营已成为核心竞争力之一。我参与管理和开发的软件项目旨在构建一套先进的银行数字标签系统,该系统能够整合并分析来自多渠道、多系统的客户数据,通过标签化管理和精准营销,提升客户体验,优化运营效率。作为项目的核心成员,我主要负责系统的架构设计、数据集成策略的制定与实施,以及后续的数据治理和质量管理工作。项目背景源于银行业务模式的深刻变革,特别是智能银行时代的来临,对业务数据服务提出了更高要求。原创 2025-01-15 17:47:50 · 694 阅读 · 0 评论 -
架构师-分布式数据库-逻辑透明,分片透明等
这四种透明性使得分布式数据库在使用上更加方便和灵活,用户可以像使用集中式数据库一样使用分布式数据库,而无需关心底层的分布式架构和数据分布等复杂细节,提高了系统的易用性和可管理性。同时,也有助于提高系统的可靠性、可用性和性能,因为系统可以根据实际情况进行数据的分片、复制和分布等优化操作,而这些操作对用户是透明的。原创 2025-01-15 08:17:59 · 445 阅读 · 0 评论 -
架构师-总线的分类
总线可以根据数据传输的方式分为半双工和全双工两种类型。原创 2025-01-15 08:17:43 · 166 阅读 · 0 评论 -
架构师-McCabe度量法-题目
以下关于McCabe度量法的说法,错误的是( )。A. 圈复杂度计算公式是V(G)=m-n+1B. McCabe度量法主要用于衡量程序模块的复杂程度C. 圈复杂度的最大范围应该严格小于10,超过这个范围代码就无法维护D. 圈复杂度的值可以为测试用例设计提供参考,测试用例数量至少应等于圈复杂度的值:A。原创 2025-01-14 16:52:35 · 750 阅读 · 0 评论 -
架构师-遗留系统演化策略
这种系统在各自的局部领域里工作良好,但从企业全局来看,多个这样的系统,他们各自基于不同的平台,不同的数据模型,无法互联互通,数据还不一致,这就是很严重的问题了。数据模型的改造是指将遗留系统的旧的数据模型向新的数据模型转化的过程。对遗留系统的完全淘汰是企业资源的根本浪费,应该善于 “ 变废为宝 ” ,通过对遗留系统功能的理解和借鉴,可以帮助新系统的设计,降低新系统开发的风险。对遗留系统评价的目的是为了获得对遗留系统更好的理解,这是遗留系统演化的基础,是任何遗留系统演化项目的起点,评价方法由一系列活动组成。原创 2025-01-14 09:10:42 · 795 阅读 · 0 评论 -
架构师-操作系统-多道程序设计技术
多道程序设计技术是现代操作系统的核心特性之一,通过并发执行多个程序,显著提高了系统资源的利用率和整体性能。它是实现多任务操作的基础。原创 2025-01-14 09:10:11 · 381 阅读 · 0 评论