
系统设计
文章平均质量分 75
fajianchen
10年以上IT一线老兵,专注业务、数据、应用、技术、安全架构,金融、财资/司库、医疗、互联网医院相关知识。自研有低代码平台、数据交换平台、快速集成开发框架等产品。
展开
-
Kafka消费者端重平衡流程
重平衡的完整流程需要消费者 端和协调者组件共同参与才能完成。我们先从消费者的视角来审视一下重平衡的流程。在消费者端,重平衡分为两个步骤:分别是加入组和等待领导者消费者(Leader Consumer)分配方案。这两个步骤分别对应两类特定的请求:JoinGroup 请求和 SyncGroup 请求。 当组内成员加入组时,它会向协调者发送 JoinGroup 请求。在该请求中,每个成员都要将 自己订阅的主题上报,这样协调者就能收集到所有成员的订阅信息。一旦收集了全部成员的 JoinGroup 请求后,协调原创 2025-04-18 18:12:01 · 615 阅读 · 0 评论 -
如何制定性能调优策略
性能测试是提前发现性能瓶颈,保障系统性能稳定的必要措施。下面我先给你介绍两种常用 的测试方法,帮助你从点到面地测试系统性能。微基准性能测试可以精准定位到某个模块或者某个方法的性能问题,特别适合做一个功能模 块或者一个方法在不同实现方式下的性能对比。例如,对比一个方法使用同步实现和非同步 实现的性能。宏基准性能测试是一个综合测试,需要考虑到测试环境、测试场景和测试目标。首先看测试环境,我们需要模拟线上的真实环境。然后看测试场景。我们需要确定在测试某个接口时,是否有其他业务接口同时也在平行运 行,造成干扰。原创 2025-04-12 16:31:26 · 700 阅读 · 0 评论 -
业务幂等性技术架构体系-接口幂等
但是,业务失败或超时,在生产环境下,一万个里最多也就十个左右会失败,那为了这十来个请求,让其 他九千九百多个请求都产生额外请求,就有一些得不偿失了。当用户进行表单提交时,会重定向到另外一个提交成功页面,而不是停留在原 先的表单页面。其实也会存在问题,假设具体业务代码执行超时或失败,没有向客户端返回 明确结果,那客户端就很有可能会进行重试,但此时之前的token。则是一个合法请求允许执行,如果是其他值,则代表是非法请求,直接返回。已经被删除了,则会被认为是重复请求,不再进 行业务处理。后退导致表单重复提交。原创 2025-04-11 16:08:32 · 358 阅读 · 0 评论 -
需求管理策略
优先战略、标准、成熟需求,强化流程对需求的管控与牵引,强化各个部门分工与协同,实现需求有序管理、高效交付。统一归口,实现需求端到端的可视化管理。根据需求分类分级,快速响应需求。加强架构对需求的主动引导。原创 2025-04-07 16:01:35 · 376 阅读 · 0 评论 -
内存模型以及分区,需要详细到每个区放什么。
实现通过类的权限定名获取该类的二进制字节流的代码块叫做类加载器。主要有一下四种类加载器:启动类加载器(Bootstrap ClassLoader)用来加载 java 核心类库,无法被 java 程序直接引用。扩展类加载器(extensions class loader):它用来加载 Java 的扩展库。Java 虚拟机的实现会提供一个扩展库目录。该类加载器在此目录里面查找并加载 Java 类。原创 2025-03-19 08:58:39 · 987 阅读 · 0 评论 -
基于企业架构视角建模
业务的变量(比如客户C、产品P、渠道C和合作方P),形成汇总的企业级流程,容客户、产品、渠道及合作方的差异,支持线上线下全渠道整合,体现端到端的完。业务创新,流程模型体现运营模式,数据模型体现业务模式。整业务处理流程,为客户提供跨渠道的、一致的体验和一站式的产品服务。,主要包括产品分类结构、产品组件、产品条件和产品参数,以及可。,是业务模型的主线,描述了客户端到端的业务操作流程;,是将流程模型以及产品模型中产生的所有数据需求进行逻辑化和抽。中由产品确定的相关业务规则形成企业级的产品模型。原创 2025-02-24 08:23:57 · 586 阅读 · 0 评论 -
银行业务建模之三级模型
三级模型的建立意味着流程模型框架的确定,同时流程模型所具有的关键特性也能显现出来,本标准三级模型映射到“活动”。三级模型体现了流程模型价值驱动的特征。每个活动代表一段业务流程,具有明确的业务目的。三级模型体现了流程模型企业级的特征。每个活动代表着为外部客户或利益相关方等创造的价值。三级模型体现了流程模型标准化的特征。标准化的流程是可衡量的、可评价的、可共用的、标准的、灵活的流程。这样的流程能为客户提供标准化、高质量服务,能具备与企业战略目标相匹配的流程能力。原创 2025-02-23 12:46:53 · 744 阅读 · 0 评论 -
基于企业架构视角建模
基于企业级架构视角的模型建设有助于打破组织内IT系统的孤岛式建设,核心任务是对银行内战略的分解、传导,帮助企业将零散的能力“聚沙成塔”,确保战略意图和绩效指标逐层落实到每一个流程步骤、程序模块、操作规范中。业务的变量(比如客户C、产品P、渠道C和合作方P),形成汇总的企业级流程,保证渠道、产品线之间业务流程的一致性以提供卓越的客户体验;流程模型能够包容客户、产品、渠道及合作方的差异,支持线上线下全渠道整合,体现端到端的完整业务处理流程,为客户提供跨渠道的、一致的体验和一站式的产品服务。原创 2025-02-23 11:11:41 · 302 阅读 · 0 评论 -
Netty的线程模型怎么设计的
Netty 的线程模型旨在高效地处理并发连接和请求,以优化网络应用程序的性能。其线程模型包括了多种优化技术,例如。这些机制使 Netty 能够高效处理大规模并发连接和请求,是其在高性能网络编程中广泛应用的基础。等,用于在高负载下保持高效稳定的性能。下面详细介绍 Netty 的线程模型及其提升性能的方法。示例代码:简单的 Netty 服务器线程模型。Netty 线程模型概述。2. Worker 线程。Netty 的线程模型。1. Boss 线程。3. 用户自定义线程。原创 2025-02-22 09:39:41 · 820 阅读 · 0 评论 -
什么是HTTP/2协议?NGINX如何支持HTTP/2并提升网站性能?
HTTP/2是一种用于在Web浏览器和服务器之间进行通信的协议,旨在提高网站性能和加载速度。它是HTTP/1.1的继任者,引入了许多优化和改进,以适应现代Web应用的需求。HTTP/2的主要目标是减少延迟、提高效率,以及更好地支持并发请求。通过启用HTTP/2并进行相应的优化,你可以显著提升网站性能,改善用户体验,以及减少资源消耗。需要注意的是,HTTP/2在大多数现代浏览器中得到支持,但仍建议进行兼容性测试,以确保在不同的浏览器中都能正常工作。原创 2025-02-22 09:32:26 · 564 阅读 · 0 评论 -
180Wtps超高并发、大流量生产案例-通用模式抽象
在经历过春节超大流量活动后的设计与实现后,有一些总结和经验与大家一起分享一下。大流量场景,为了保证活动最终上线效果,容灾是一定要做好的。参考业界通用实现方案,如降级、限流、熔断、资源隔离,根据预估活动参与人数和效果进行使用存储预估等。1)限流方面应用了api层nginx入流量限流,分布式入流量限流,分布式出流量限流。这几个限流器都是字节跳动公司层面公共的中间件,经过大流量的验证。2)首先进行了实际单实例压测,根据单实例扛住的流量与本次春节活动预估流量打到该服务的流量。原创 2025-02-21 16:48:52 · 397 阅读 · 0 评论 -
如何写架构设计⽂档
在软件设计的不同阶段应该设计不同的UML模型,将不同阶段输出的UML模型图放在⼀个⽂档中,对每张模型图配以适当的⽂字说明,就构成⼀篇设计⽂档。对于规模不太⼤的软件系统,我们可以将概要设计⽂档和详细设计⽂档合并成⼀个设计⽂档。这⾥,我会展现⼀个设计⽂档示例模板,你可以参考这个模板编写你的设计⽂档。⽂档开头是设计概述,简单描述业务场景要解决的核⼼问题领域是什么。⾄于业务场景,应该在专⻔的需求⽂档中描述,但是在设计⽂档中,必须要再简单描述⼀下,以保证设计⽂档的完。原创 2025-02-19 21:55:54 · 998 阅读 · 0 评论 -
Kafka副本机制详解
在讨论具体的副本机制之前,我们先花一点时间明确一下副本的含义。我们之前谈到过,Kafka 是有主题概念的,而每个主题又进一步划分成若干个分区。副本的概念实际上是在分区层级下定义的,每个分区配置有若干个副本。原创 2025-02-19 16:51:21 · 759 阅读 · 0 评论 -
基于流程建模业务组件的构建方法
以表格形式描述业务组件定义,包括的信息名称业务组件名称描述描述业务组件的目的、定义、范围任务描述业务组件所包含的任务首责实体描述业务组件所包含的数据模型的首责数据实体以存款为例名称存款描述目的:客户视角:客户(对公客户、个人客户)根据收益需要和结算需要选择存款产品,利用现有渠道,突破时间和空间限制,合理选择各种支付结算工具方便快捷地进行查询、存款、取款、转账等业务。原创 2025-02-18 16:28:59 · 592 阅读 · 0 评论 -
银行IT治理——安全架构定义
安全架构的定义安全架构的定义安全架构是指为应对新的安全威胁,以及IT技术和业务的发展过程中形成的新安全态势,所提出的安全防护理念、安全技术、安全组件、安全服务及管控模式等应对措施的集合。企业应结合自身特点和业务发展开展安全架构的建设工作。安全架构原则安全架构设计遵循以下原则::将适应业务发展作为安全服务、安全基础框架建设的目标和方向。将安全管理由传统的以技术领域划分转变为以业务应用场景和流程划分,从信息系统安全延伸到应用安全、业务安全,从单点控制提升到企业级、全局风险管控的管理高度。原创 2025-02-18 15:57:58 · 734 阅读 · 0 评论 -
如何使用 Ollama 在本地设置和运行 DeepSeek R1
了解如何使用 Ollama 在本地安装、设置和运行 DeepSeek-R1 并构建一个简单的 RAG 应用程序在本教程中,我将逐步介绍如何在本地运行以及如何使用 Ollama 进行设置。我们还将探索使用 R1 模型、LangChain 和 Gradio 构建一个简单的 RAG 应用程序,该应用程序可在您的笔记本电脑上运行为什么要在本地运行 DeepSeek-R1?在本地运行 DeepSeek-R1 可以让您完全控制模型执行,而无需依赖外部服务器。隐私和安全:没有数据离开您的系统。不间断访问。原创 2025-02-17 19:11:20 · 1188 阅读 · 0 评论 -
使用 ArchiMate 和 EA 进行企业架构建模
企业架构设计到战略、业务、数据、应用、技术等多个层次,每个层次都有很多内容,这就需要在概 念上区分清楚,对不同的概念采用不同的符号,以便:描述清晰,理解明确,行动有方向。ActiMate是企业架构建模的标准语言,支持企业架构的所有层次的建模:1.企业战略2.业务架构3.数据架构4.应用架构5.技术架构6.实现迁移如下是使用ArchiMate建立的一个企业架构的多层次简图:ArchiMate建模企业架构的6个层次:1.战略层:指定企业架构的战略目标、成长路线图。原创 2025-02-10 10:51:11 · 607 阅读 · 0 评论 -
ArchiMate 和 TOGAF (the Open Group Architecture Framework) 的关系
我们给一个产品做架构时,一开始肯定不是直接出功能模块、数据关系等,最重要的是要从金字塔上端开始,从到(这些更有可能公司制定),才到目标。目标主要做的就是分析到,这个也是项目组在做业务规划和架构时需要花时间的明确地方,相关涉众必须在。如果使命、愿景和测路是大方向,那么目标就是具体做事情前的指导,如果这个错了,则会对后续工作造成不可想象的后果。目标确定后,我们要做的就是作具体的As-Is分析以及To-Be了。那么我们下面看看做架构时,我们需要关注哪些方面呢?原创 2025-02-10 09:14:22 · 519 阅读 · 0 评论 -
超高并发直播弹幕方案
推送器推送,哪个地方看到的最多,视频网站,我们看到视频节目的时候,大家要对这个节目进行欢乐,吐槽和评论。这个就是我们看到的弹幕服务器推送技术干嘛用?就是让用户在使用网络应用的时候,不需要一遍又一遍的去手动刷新就可以及时获得更新的信息。大家平时在上各种视频网站时,对视频节目进行欢乐的吐槽和评论,会看到各种弹幕,当然,他们是用flash技术实现的,对于我们没有用flash的应用,一样可以实现弹幕。又比如在股票网站,往往可以看到,各种股票信息的实时刷新,上面的这些都是基于服务器推送技术。对于没有flash的应用,原创 2025-02-07 16:44:55 · 951 阅读 · 0 评论 -
互联网分布式ID解决方案
1. 基于UUID2. 基于DB数据库多种模式(自增主键、segment)3. 基于Redis4. 基于ZK、ETCD5. 基于SnowFlake6. 美团Leaf(DB-Segment、zk+SnowFlake)7. 百度uid-generator()原创 2025-02-07 16:10:19 · 608 阅读 · 0 评论 -
Kafka 无消息丢失最佳实战
1. 不要使用 producer.send(msg),而要使用 producer.send(msg, callback)。记住,一定要使用带有回调通知的 send 方法。2. 设置 acks = all。acks 是 Producer 的一个参数,代表了你对“已提交”消息的定义。如果设置成 all,则表明所有副本 Broker 都要接收到消息,该消息才算是“已提交”。这是最高等级的“已提交”定义。3. 设置 retries 为一个较大的值。原创 2025-02-07 09:25:14 · 420 阅读 · 0 评论 -
深入运行时数据区
首先“aaaa”会被认为字面量,先在字符串常量池中查找(.equals()),如果没有找到,在堆中创建“aaaa”字符串对象,并且将“aaaa”的引用维护到字符串常量池中(实际是一个hashTable结构,存放key-value结构数据),再返回该引用;首先“aaaa”会被认为字面量,先在字符串常量池中查找(.equals()),如果没有找到,在堆中创建“aaaa”字符串对象,然后再在堆中创建一个“aaaa”对象,返回后面“aaaa”的引用;:类,接口,方法,字段等相关的描述信息。最多创建一个字符串对象。原创 2025-02-06 16:22:13 · 623 阅读 · 0 评论 -
图文并茂-jvm内存模型
jvm内存模型原创 2025-02-06 16:03:49 · 354 阅读 · 0 评论 -
如何使用缓存优化系统性能?
平时使用拦截器(例如 Fiddler)或浏览器 Debug 时,我们经常会发现一些接口返回 304 状态码 + Not Modified 字符串,如下图中的极客时间 Web 首页。如果我们对前端缓存技术不了解,就很容易对此感到困惑。浏览器常用的一种缓存就是这种基于 304 响应状态实现的本地缓存了,通常这种缓存被称为协商缓存。协商缓存,顾名思义就是与服务端协商之后,通过协商结果来判断是否使用本地缓存。一般协商缓存可以基于请求头部中的 If-Modified-Since 字段与返回头部中的 Last。原创 2025-02-06 15:18:20 · 809 阅读 · 0 评论 -
图解Java类文件到虚拟机
虚拟机把Class文件加载到内存并对数据进行校验,转换解析和初始化形成可以虚拟机直接使用的Java类型,即查找和导入class文件1)通过一个类的全限定名获取定义此类的二进制字节流2)将这个字节流所代表的静态存储结构转化为方法区的运行时数据结构3)在Java堆中生成一个代表这个类的对象,作为对方法区中这些数据的访问入口Class对象封装了类在方法区内的数据结构,并且向Java程序员提供了访问方法区内的数据结构的接口。在 Java堆中生成一个代表这个类的。原创 2025-02-06 14:05:11 · 653 阅读 · 0 评论 -
设计模式与技术组件
技术组件与设计模式原创 2025-02-06 13:47:09 · 384 阅读 · 0 评论 -
在 DDD 中,如何处理跨多个实体的复杂业务?
处理跨多个实体的复杂业务是DDD中的一个关键挑战,需要深入理解业务领域、合理划分聚合、制定适当的领域服务和规则,以及不断进行建模和迭代来满足实际需求。领域驱动设计的方法和模式可以帮助团队更好地理解和应对这种复杂性。在DDD中,跨多个实体的复杂业务通常需要交由领域服务进行协调。原创 2025-02-05 15:58:43 · 300 阅读 · 0 评论 -
定制化企业架构元模型
普华永道与某保险集团基于TOGAFADM企业架 构开发方法论,结合某保险集团实际情况,定制化企业架构模型框架。对企业架构进行分类,分别为业务架构、应用架构、数据架构、技术架构。基于分类,参考 ArchiMate架构元模型(一种图形语言),围绕某保险集团实际情况,定制化构建企业架构元模 型,即元模型元素和元素间的关系,如业务流 程、应用功能、数据实体等。对企业架构进行分类,分别为业务架构、应用架构、数据架构、技术架构。定制化企业架构元模型,即元模型元素和元素间的关系、如业务流程、应用功能、数据实体等。原创 2025-02-05 14:26:27 · 429 阅读 · 0 评论 -
案例-百度工程效率
大厂案例-百度工程效率架构规划之如何划分任务边界?原创 2025-02-05 09:04:31 · 307 阅读 · 0 评论 -
解释建造者模式的作用及其在什么场景下使用。
建造者模式(Builder Pattern)是一种创建型设计模式,其主要作用是将一个复杂对象的构建过程和其表示分离,以便同样的构建过程可以创建不同的表示。建造者模式通过将对象的构建细节隐藏在具体的建造者类中,使得客户端代码可以更简洁地构建对象,同时也提供了更好的可维护性和扩展性。总之,建造者模式适用于构建复杂对象的场景,将构建过程分解为多个可复用的步骤,提供更好的灵活性和可维护性。原创 2025-02-04 21:28:24 · 32 阅读 · 0 评论 -
架构规划之任务边界划分过程中承接分配
任务 a 的备份任务是 b,如果 b 成功,那么 a 成功。任务 a 强依赖于任务 b,如果 b 失败,那么 a 失败。这种关系是传递的,即:a->b&b->c=> a->c。在这张图中,一个架构活动强依赖于任务 a,任务 a 则强依赖于互为备份的任务 b 和任务。所谓任务边界划分,就是判定某个任务在多个承接方中,应该归属到哪个承接方的过程。这种关系是传递的,即:a>b&b>c=>a>c。这种关系也是自反的,它们不是对称的。任务与任务之间的关系分为两种基本类型,一种是强依赖关系,另一种是备份关系。原创 2025-02-04 21:25:24 · 580 阅读 · 0 评论 -
智能家居监控系统数据收集积压优化
亮点:RocketMQ 消息大量积压问题的解决假设我们正在开发一个智能家居监控系统。该系统从数百万个智能设备(如温度传感器、安全摄像头、烟雾探测器等)收集数据,并通过 RocketMQ 将这些数据传输到后端进行处理和分析。在某些情况下,比如突发事件或系统升级时,可能会导致消息处理速度跟不上消息生产速度,从而造成消息积压。通过以上方案,我们能够有效地处理 RocketMQ 消息积压问题,确保智能家居监控系统能够及时处理大量设备数据,特别是在数据突增的情况下。原创 2025-01-30 22:31:59 · 985 阅读 · 0 评论 -
MySQL 索引存储结构
B+Tree 索引和 Hash 索引是我们比较常用的两个索引数据存储结构,B+Tree 索引是通过。创建的主键索引默认使用的是 B+Tree 索引。如果我们使用的是 InnoDB 存储引擎,由于 InnoDB 使用的是聚族索引,聚族索引中的叶。树的 serial_no,找到对应的叶子节点,获取主键值,然后再通过聚族索引中的 B+ 树检索。如果我们使用的是 MyISAM 存储引擎,由于 MyISAM 使用的是辅助索引,索引中每一个。此时创建的索引是一个辅助索引,与 MyISAM 存储引擎的主键索引的。原创 2025-01-30 22:20:57 · 1584 阅读 · 0 评论 -
分库分表后如何进行join操作
在分库分表后的系统中,进行表之间的 JOIN 操作比在单一数据库表中复杂得多,因为涉及的数据可能位于不同的物理节点或分片中。此时,传统的 SQL JOIN 语句不能直接用于不同分片的数据,以下是几种处理这样的跨分片 JOIN 操作的方法:方法 1:应用程序层 JOIN方法 2:数据冗余设计方法 3:使用中间层或中间件方法 4:分布式查询实践建议在实际项目中,如何进行表之间的 JOIN 会高度依赖于具体的业务需求和系统架构设计,但以上这些策略可以作为一个思路指南来处理分库分表后的复杂 SQL 操作。原创 2025-01-27 19:59:59 · 552 阅读 · 0 评论 -
可扩展架构:如何打造一个善变的柔性系统?
每个模块要有明确的定位,模块有了定位,说明我们已经想清楚了它的核心职责是什么,这。功能上,模块要包含业务领域的全部功能,比如订单模块包含所有订单相关的功能,包括订。接下来,我们就从业务扩。模块还是 B 模块,表面上看,各有各的道理,谁也说不服谁,但如果对照模块的定位,回。之间的依赖关系,简单地讲,就是模块之间有调用,我们知道,调用区分发起方和服务方,有体量很大的模块,我们称之为“肿瘤”,它的特点就是定位模糊,职责泛滥,功能无所不。展性出发,讨论什么样的模块是容易修改的,什么样的依赖关系是容易调整的。原创 2025-01-27 19:16:18 · 958 阅读 · 0 评论 -
阿里云-银行核心系统转型之业务建模与技术建模
业务建模包括业务流程建模和业务对象建模业务领域建模包括业务建模和技术建模,整体建模流程图如下:业务建模包括业务流程建模和业务对象建模:通过对业务流程现状分析,结合目标核心系统建设能力要求,参考行业建模成果,形成结构化的业务流程模型;:基于信息模型资产,结合对业务流程提取的业务实体,进一步分析实体间关系,获得业务对象模型和业务行为模型。,把上述业务模型转换为技术模型。通过技术建模,实现三个模型的转换:业务流程模型到服务流程组合的转换;业务对象模型到逻辑/物理数据模型的转化;原创 2025-01-21 16:14:44 · 1158 阅读 · 0 评论 -
主流研发团队的工程效率与质量安全提升实战
为什么要做工程效率?- 环境需求为什么要做工程效率?环境需求为什么要做工程效率?- 环境需求为什么要做工程效率?环境需求为什么要做工程效率?- 安全态势工程效率平台典型架构工程效率平台典型架构(百度)工程效率平台典型架构(链家)SDLC软件研发生命周期中的技术。原创 2025-01-18 20:03:11 · 252 阅读 · 0 评论 -
Mysql Explain执行计划详解
有了慢查询语句后,就要对语句进行分析。一条查询语句在经过MySQL查询优化器的各种基于成本和规则的优化会后生成一个所谓的执行计划,这个执行计划展示了接下来具体执行查询的方式,比如多表连接的顺序是什么,对于每个表采用什么访问方法来具体执行查询等等。EXPLAIN语句来帮助我们查看某个查询语句的具体执行计划,我们需要搞懂EPLATNEXPLAIN的各个输出项都是干嘛使的,从而可以有针对性的提升我们查询语句的性能。原创 2025-01-16 13:40:53 · 742 阅读 · 0 评论 -
如何实现Netty的心跳机制
Netty 中的心跳机制通常用于保持客户端和服务器之间的长连接,以便在连接空闲一段时间后发送“心跳”消息来检测连接状态,避免连接意外断开。Netty 提供了一些工具和类来便捷地实现心跳机制。以下是如何在 Netty 中实现心跳机制的详细步骤和示例代码:步骤示例代码以下示例展示了如何实现一个简单的 Netty 心跳机制:服务端客户端代码解释通过以上代码示例和详细注释,您可以更好地理解 Netty 中心跳机制的实现方式。原创 2025-01-16 09:23:04 · 1183 阅读 · 0 评论 -
微服务主流框架和基础设施介绍
概述概述微服务架构的落地需要解决服务治理问题,而服务治理依赖良好的底层方案。当前,微服务的底层方案总的来说可以分为两 种:微服务SDK(微服务框架)和服务网格。微服务框架运行原理:应用程序通过接入SDK来实现服务治理,SDK运行在应用程序的上下文(相同进程),构建后成为应用程序的一部分。服务网格运行原理:通过Sidecar模式,用单独的代理进程接管应用程序的网络流量,从而实现服务治理,借助代理进程,可以实现服务的流量控制。原创 2025-01-14 13:43:40 · 1064 阅读 · 0 评论