首页 > 其他分享 >设计模式与分布式架构实战 总结

设计模式与分布式架构实战 总结

时间:2024-07-12 17:25:38浏览次数:15  
标签:架构设计 架构 系统 业务 架构图 设计模式 分布式

在当今快速发展的软件工程领域,掌握设计模式和分布式架构对于构建高效、稳定、可扩展的系统至关重要。以下是对相关内容的进一步分析和梳理,供大家参考。

架构设计的哲学:NP问题的现实映射

什么是NP问题?

NP问题是计算机科学中的一个重要概念,它代表了一类可以在多项式时间内验证解,但难以在多项式时间内求解的问题。
举例来说:

  • 旅行商问题(TSP):一个经典的NP完全问题,它要求在给定的一组城市和每对城市之间的距离时,找到一条最短路径,使得每个城市只访问一次并最终回到起始城市。
  • 背包问题(Knapsack problem):一个典型的NP问题,它要求在给定的物品和背包容量下,如何选择物品装入背包,使得背包中的物品总价值最大。

对于架构设计来说,你给我方案,我可以说:好不好?至于最合适的方案:真不知道。那ChatGPT未来可以替代架构设计工作吗?
在这里插入图片描述
架构设计中人的因素更重要,受到的软性约束条件也更多。对于人来说,要考虑的有以下几个方面:
机会考虑:
最近的技术热点框架、突然而至的政策红利
欲望考虑:
是否有利于晋升或加薪、是否有利于申请优秀项目
取舍考虑:
取与舍的灰色地带的处理、舍的代价是否可以承受、系统的熵增来自于胆怯和懒惰
在这里插入图片描述

架构设计被形象地比作NP问题,它反映了在多种可行解决方案中寻找最优解的复杂性。架构设计不仅仅是技术选择,更涉及到决策者的心理、期望和人性考量。架构设计中的“欲望动机”、“取舍分析”和“设计能力”构成了决策的三个维度,它们共同影响着架构的最终形态。

企业战略与架构的深度融合

明确架构的目的是什么?

在这里插入图片描述
战略与架构有什么关联?
在这里插入图片描述

架构设计的流程

确定边界
确定系统边界,在技术层面上做与不做
确定关系
确定系统里各模块之间的依赖关系、模块与环境之间的关系
可扩展性
后续的子系统或模块设计,在一个既定的框架内和技术方向上继续演化
非功能性要求
明确非功能性需求是指高可用、高并发、安全性等

战略从问题出发,抽象问题模型和核心元素,制定业务策略。问题域是系统存在的缘起,透过现象看本质问题、抓大放小、任何问题都反映着用户痛点。业务域的产物业务功能树和业务架构图,有哪些功能的存在和组合能够解决问题域提出的用户痛点;业务架构图反映企业战略和定位,中观上反映核心要素和系统的行为

问题域和业务域是重中之重,是道,而技术域是术

订票系统为例

业务战略:从0到1的系统,使得火车票的发售和检票更加方便、更加安全,提升旅客的乘车体验;通过票务数据和实际载客量,优化铁路运行线路和时刻表;在旅途中,通过餐饮、住宿、打车、商城等延伸消费场景,提升平台的边际贡献。

业务需求

  1. 旅客通过平台注册和登录,实名认证后,然后购票,推荐酒店和约车;
  2. 检票系统的闸机能够通过接口获取到购票信息和身份证信息;
  3. 在乘车过程中可以通过座位前方的二维码点餐,预定酒店和车辆,景点门票等,提供注册铁路会员即可免费接入WIFI服务;
  4. 发放优惠劵吸引用户到铁路商城购物,填写邮寄地址,免费送到家;
  5. 通过会员等级和积分权益打造旅客的忠诚度和APP打开率:
  6. 优惠购票通过身份类型来界定,退票按照时间规定实行阶梯价退票。后台系统有能力修改车站、车次、票价设定,并且管理铁路商城类目和上下架。

其他要求:只要符合业务战略,可以补充和延伸业务需求,做到架构逻辑自治。

同理也要考虑K3订票系统的问题域
在这里插入图片描述
业务架构图
在这里插入图片描述
企业战略与架构设计是相辅相成的。通过“从问题域到技术域的演进路线”,展示了如何将业务需求转化为技术实现,以及如何通过架构设计来支持和推动企业战略的实施。业务架构图、数据架构图和产品架构图等工具,帮助我们从宏观角度把握系统的整体结构和发展方向。

结构型设计模式

设计模式的本质

在这里插入图片描述

怎么做隔离

公共模块先拆出去,比如日志、监控、告、第三方登录等
数据处理相关的再拆出去,比如,数据分析、数据事件等
流量特别大的再拆出去,比如,票务查询、订单支付等
闭环业务逻辑的再拆出去,比如,高铁商城、会员体系等

分布式架构的演进就是“拆”的过程

设计的问题域

在这里插入图片描述
结构型解决的问题域是什么?
在这里插入图片描述
由此拓展为业务架构图
在这里插入图片描述

结构型设计模式是软件设计中的重要组成部分,它们关注于如何组织对象之间的关系,以达到高内聚、低耦合的目标。书中详细介绍了代理模式、适配器模式、门面模式等,并结合K3售票系统,展示了模式的应用场景和实现方法。结构型设计模式不仅提升了代码的复用性,也增强了系统的可维护性和扩展性。

售票系统的架构设计详解

产品架构图
在这里插入图片描述

逻辑架构图
在这里插入图片描述
数据架构图
在这里插入图片描述
部署架构图
在这里插入图片描述

售票系统作为核心案例,全面展示了从业务需求分析到系统架构设计的全过程。系统需求的梳理、问题域的界定、业务架构图的绘制,以及技术实现的详细规划,每一步都体现了架构设计的深度思考和精心策划。系统的架构设计不仅关注当前需求,更考虑了系统的未来发展和可能的扩展。


总结

架构设计是一场永无止境的探索,需要我们不断学习、实践和创新。本文是对《设计模式与分布式架构实战》的深度解析。希望本文能够帮助读者更全面地理解架构设计的理念和方法,以及如何在实际工作中运用这些知识。如果你对架构设计有更深的见解或疑问,欢迎在评论区交流讨论,让我们一起探索架构设计的无限可能。

标签:架构设计,架构,系统,业务,架构图,设计模式,分布式
From: https://blog.csdn.net/kunpengtingting/article/details/140340531

相关文章

  • 基于PCIe总线架构的2路1GSPS AD、4路1GSPS DA信号处理平台(100%国产化)
     板卡概述       PCIE723-165是基于PCIE总线架构的2通道1GSPS采样率14位分辨率、4通道1GSPS采样率16位分辨率信号处理平台,该板卡采用国产16nmFPGA作为实时处理器,支持2路高速采集以及4路高速数据回放,板载2组DDR4SDRAM大容量数据缓存,板卡支持PCIEGEN3x8主机接口,通过D......
  • 探讨打造「高可用架构」秘籍
    背景高可用性的文章多如牛毛,看得人眼花缭乱。今天,咱们换个花样,以终为始,来聊聊如何实现系统业务的高可用性这个宏伟目标。本文覆盖高可用架构设计、常见架构模式、高可用开发运维、大促高可用保障、业务高可用、COE复盘等方面的理念和思考。高可用性是个宏大的主题,覆盖的领域广泛......
  • 探讨篇(四):分布式数据访问解决方案
    背景如果数据在同一个服务的同一个数据库,通过SQL即可查询相对比较简单,但当数据被分布到不同服务不同的数据库中时,访问组合数据的操作就变的比较困难。针对这个问题,本文描述了服务读取不同服务的数据库的几种方法:服务间通信模式、数据缓存模式、数据复制模式、数据共享模式本文......
  • java设计模式(十七)状态模式(State Pattern)
    1、模式介绍:状态模式(StatePattern)是一种行为型设计模式,用于实现对象状态的变化管理。它允许一个对象在其内部状态发生变化时改变其行为,使得对象看起来似乎修改了其类。2、应用场景:当一个对象的行为取决于其状态,并且需要在运行时根据状态改变其行为时。当状态转换过程中需......
  • java设计模式(十四)策略模式(Strategy Pattern)
    1、模式介绍:策略模式是一种行为设计模式,它定义了算法族,分别封装起来,让它们之间可以互相替换,此模式让算法的变化独立于使用算法的客户。2、应用场景:当一个对象有多种行为,而需要动态选择一种行为时。不同的策略可以实现不同的行为,客户端根据需要在运行时选择合适的策略。当......
  • 一份大数据湖仓一体架构落地指南
    原文:https://mp.weixin.qq.com/s/_oKbXLUOImym59XwITeS9Q随着业界对数据时效性的要求越来越高,大数据平台的发展方向逐渐向湖仓一体发展。湖仓一体主要解决了以下几个问题:OLAP数据库由于需要内存和高效磁盘来提供向量化毫秒级的查询,所以用来存储原始流量数据,集群成本高。......
  • c/c++设计模式---访问者模式
    访问者(Visitor)模式:访问器模式,行为型模式。  //(1)一个具体范例的逐渐演化  //阿司匹林肠溶片:改善血液流通,预防血栓形成,血栓形成就产生阻塞,人就会直接面临危险;  //氟伐他汀钠缓释片:降血脂。因为血脂高意味着血流慢,营养无法运输到身体各部位,还很可能引发心脑血管疾病;......
  • FILE+POS 方式 GreatSQL 主从复制架构给主节点磁盘扩容
    FILE+POS方式GreatSQL主从复制架构给主节点磁盘扩容一、前提在一套非常老的系统上,有一套GreatSQL主从集群(1主1从),主从复制采用的是FILE+POS方式复制,磁盘使用紧张需要扩容,只能在该台机器上添加更大的磁盘,将原数据盘替换,也没有其他的机器资源替换。这套系统没有VIP,没有高可用切......
  • 算力共享,分布式大模型是什么,模型并行,流水线并行
    目录算力共享,分布式大模型是什么一、算力共享二、分布式大模型AllReduce是什么原理概述具体原理简单例子模型并行,流水线并行是什么模型并行流水线并行环形通信(如RingAllReduce)、树形通信(如TreeAllReduce环形通信(RingAllReduce)树形通信(TreeAllReduce)总结......
  • GRE详解:概念、架构、原理、搭建过程、常用命令与实战案例
       我们将深入探讨如何在Linux上设置GRE(GenericRoutingEncapsulation,通用路由封装)。本文将涵盖GRE的定义、架构、原理、应用场景、常见命令体系,并通过详细的实战模拟展示如何在Linux系统上实际操作。希望通过这篇文章,您能深入理解GRE技术,并能在实际中应用。......