写在前面 如题,这是一个真实存在的业务场景。在微服务体系的迭代过程中,会存在注册中心的切换,典型如从zookeeper迁移到nacos。 最近面试中,经常会用该场景来考察候选人(涉及RPC、分布式、场景也足够开放),结果能完整描述出来的人寥寥无几,于是整理一篇文章分享下。 遇到这类场景应该如何思考 ...
通常在Java Web开发初期,技术选型搭框架时,往往都针对选定好的一个库类型进行开发,比如oracle、sqlserver、mysql等,传统的mybatis都有固化的sql,如果要换个库,不同库类型的语法不同,就要重新适配修改sql,因此,持久层框架可以选用Hibernate,结合spring-... ...
本文介绍了UML中执行规范(Execution Specification)的概念、用法及其与激活状态的区别。文中通过多个示意图说明执行规范在同步消息、回调及复杂交互中的表现形式,并指出常见误解。最后,提供了实际建模建议,帮助读者准确表达系统行为语义,提升建模质量。 ...
本文阐述了UML序列图中消息的类型与特性。同步消息采用实心箭头实线表示,发送方需等待接收方返回虚线箭头标记的响应,但允许非阻塞等待;异步消息以V形箭头实线呈现,发送方无需等待且接收方须为活动类,适用于中断或Web交互场景;自消息既可同步也可异步,用于对象内部通信。消息可携带参数且需类型匹配,返回消息... ...
RabbitMQ 1、记一次线上RabbitMQ的堵塞问题 当时解决问题参考的文档:https://www.codenong.com/cs109484329/ 1、背景 RabbitMQ同步外省市运单到本系统中 2、问题 某天早上上班,发现运维群里有很多企业反馈,在系统中查不到自己最新的运单了,当时 ...
锚定效应的应用-独立站优化价格打折显示-《认知偏差手册》 先看结果:价格展示 https://atemplate.com/pricing 旧的打折价格展示 新的打折价格展示 锚定效应是什么? 人类在进行决策时,会过度偏重先前取得的资讯(这称为锚点),即使这个资讯与这项决定无关。在进行决策时,人类倾向 ...
“假设你负责的系统,某个业务线的QPS突然暴增100倍,你会怎么应对?” ——这是上周朋友去面试,被问到一道题,他答了“加机器扩容”,结果面试官眉头一皱:“如果机器不够呢?如果数据库崩了呢?”朋友当场卡壳。其实这道题就像“高压水枪”,专冲知识漏洞。 作为开发者,如果只回答“加机器”“扩容”,可能直接 ...
参与者是交互中的可连接元素,它不是类或对象,而是类型化的角色。生命线代表一个参与者按时间顺序排列的事件序列,从顶部到底部代表时间顺序。生命线可在交互过程中创建或终结。 ...
故事的开始是这样的:无聊的时候在阿里云买了一个99/年的服务,上面部署了一个Git服务,用于托管自己无聊时写的一些代码,顺便也拿它做开发服务器。为了方便应用管理,起初用docker来管理和部署应用,后来升级了一把,用上了docker-compose,毕竟跟手撕命令相比声明式部署更显科学,docker ...
UML扩展用例用于在基本用例中附加可选功能或后续新增逻辑。它通过«extend»关系将扩展用例与基本用例关联,方向由扩展用例指向基本用例。基本用例中可定义“扩展点”标识触发扩展的位置,扩展条件通过约束明确执行时机。扩展支持多层级结构,允许扩展用例自身被进一步扩展,形成用例扩展迭代链。该机制适用于灵活... ...
5 性能分析方法 当您正在进行高级优化时,例如将更好的算法集成到应用程序中,通常很容易看出性能是否提高,因为基准测试结果通常很明显。从性能分析的角度来看,2 倍、3 倍等大幅提速相对明显。当你从程序中删除大量计算时,你会期望看到运行时间的明显差异。 但同样,在某些情况下,当你看到执行时间的微小变化, ...
4 性能分析中的术语和指标 与许多工程学科一样,性能分析也大量使用特殊的术语和指标。对于初学者来说,查看 Linux perf 或 Intel VTune Profiler 等分析工具生成的配置文件可能会非常困难。这些工具使用了许多复杂的术语和指标,但是,如果你打算从事任何严肃的性能工程工作,这些指 ...
Go语言 MVC 与 DDD 分层架构详细对比 MVC和DDD是后台开发两种流行的分层架构思想,MVC(Model-View-Controller)是一种设计模式,主要用于分离用户界面、业务逻辑和数据模型,便于分层解耦,而DDD(领域驱动设计)则是一种架构方法论,旨在通过构建业务领域模型来解决复杂系 ...
用例图是UML中最简单,使用最高频的图之一,它通常用于诠释“这个软件做了什么”。用例图的的表达非常简单并且通俗易懂,不论研发、产品、测试,还是完全不懂软件的外行,用例图基本都能被看懂。 ...
模型-视图-控制器(Model-View-Controller,简称 MVC)是一种经典软件架构设计,通过分层解耦,使得系统结构清晰和易于维护,具有良好的可扩展性。MVC 适用于需要清晰分离用户界面、业务逻辑和数据管理的应用场景。随着MVC的发展,还衍生出了MVP、MVVM以及领域驱动设计(DDD)... ...
《当Kafka化身抽水马桶:论组件并发提升与系统可用性的量子纠缠关系》 引言:一场OOM引发的血案 某个月黑风高的夜晚,监控系统突然发出刺耳的警报——我们的数据发现流水线集体扑街。事后复盘发现:Kafka集群、Gateway、Discovery服务默契地同时表演了OOM自杀式艺术行为。这场事故完美演 ...
UML提供«include»机制避免用例重复,实现共享。本文介绍创建被包含用例的步骤,并通过实例展示其在基础用例共享、复杂用例分解及继承用例复用等场景下的应用。 ...
依赖注入(DI)与控制反转(IoC)可能是一些开发小伙伴耳熟但又不能详的两个词,经常看到它们的名字,但又不理解。这两个词来源于英文直译,看似高深莫测,其实非常简单,并且在一些开发场景中扮演着不可或缺的角色,比如单元测试离不开依赖注入,IoC容器是插件框架的最佳拍档等,本文尝试以最简单的方式阐述这两种... ...
UML用例可以泛化,泛化可简化模型、避免重复、易于扩展。通过抽象用例实现复用和模块化。讨论参与者及用例之间的泛化关系,指出不使用泛化可能导致模型复杂和重复工作的问题。 ...
Ron Lach 摄影 我还记得当年参与一个复杂分布式系统的大规模重构时的情景。 当时,我们团队的最终目标是优化各个模块的组织、跟踪和部署方式,但很快发现,我们现有的组件管理方式存在诸多问题。 有些团队使用不一致的命名规范,有些仍依赖过时的脚本来处理部署,而没有人有一个统一的系统来跟踪生产环境中运行 ...