当前位置:首页 > 科技  > 软件

聊聊架构设计流程:设计备选方案

来源: 责编: 时间:2024-04-19 09:29:10 270观看
导读作为架构师,工作内容并非迷雾重重。一个经验丰富的架构师必须对现有技术有深刻的了解,并且对已被实践证明的架构模式胸有成竹。基于对业务需求的深入理解,他们会选择并组合恰当的架构模式,进而对这些方案进行必要的修改和

作为架构师,工作内容并非迷雾重重。一个经验丰富的架构师必须对现有技术有深刻的了解,并且对已被实践证明的架构模式胸有成竹。基于对业务需求的深入理解,他们会选择并组合恰当的架构模式,进而对这些方案进行必要的修改和优化。iWZ28资讯网——每日最新资讯28at.com

尽管软件技术经历了几十年的发展,并且持续涌现新技术,成熟的技术仍占主导,因为这些技术已被众多应用场景所验证。例如,涉及高可用性的主备方案、集群技术,高性能的负载均衡、多路复用技术,以及可扩展的分层和插件化技术等,这些都是在明确目标后可以迅速找到的解决方案。iWZ28资讯网——每日最新资讯28at.com

通常情况下,只有当现有方案无法满足特定需求时,我们才考虑创新。然而,这些创新大多仍然建立在成熟的技术之上。iWZ28资讯网——每日最新资讯28at.com

例如,NoSQL 中的 Key-Value 存储与数据库索引本质上相似,而 Memcache 实际上是将数据库索引转变成独立的缓存系统。iWZ28资讯网——每日最新资讯28at.com

Hadoop 的大文件存储解决方案,基于的是集群和数据复制的技术。iWZ28资讯网——每日最新资讯28at.com

Docker 的虚拟化技术是建立在 Linux 容器(LXC)之上的。iWZ28资讯网——每日最新资讯28at.com

同样,LevelDB 使用的文件存储结构是跳表(Skip List)。iWZ28资讯网——每日最新资讯28at.com

iWZ28资讯网——每日最新资讯28at.com

在《技术的本质》一书中,对技术的组合有清晰的阐述:新技术都是在现有技术的基础上发展起来的,现有技术又来源于先前的技术。将技术进行功能性分组,可以大大简化设计过程,这是技术“模块化”的首要原因。技术的“组合”和“递归”特征,将彻底改变我们对技术本质的认识。iWZ28资讯网——每日最新资讯28at.com

尽管在很多情况下,通过组合和调整现有的技术或架构模式,我们可以得到所需的解决方案,但这并不意味着架构设计是一项简单的工作。由于可供选择的模式众多,可能的组合方案更是数不胜数,常常导致同一个问题可能有多种解决方案。如果在这些组合方案中加入创新元素,可选的解决方案则会增加更多。因此,设计最终的方案并不是一件容易的事,这一阶段也常是许多架构师易于出错的环节。iWZ28资讯网——每日最新资讯28at.com

首先,一个常见的错误是追求设计出最完美的架构。许多架构师在设计时常常怀有一种技术情结,认为只有设计出一流的架构才能展示他们的技术水平。例如,在设计高可用性方案时,他们可能会偏好使用集群方案而不是主备方案,因为前者更加优越和强大;在高性能方案中,可能会倾向于使用业界领先的技术如淘宝的某种方案。iWZ28资讯网——每日最新资讯28at.com

然而,根据“适用原则”和“简单原则”,选择适合自己业务、团队和技术能力的方案才是更为理智的选择。否则,可能会造成资源的浪费,如开发了远超实际需要的系统,或者设计出的系统根本无法由现有团队实现。iWZ28资讯网——每日最新资讯28at.com

第二个常见错误是只制定一个方案。许多架构师可能会在心中简单比较几个方案,然后选择一个看似最佳的方案进行深入设计。这种做法存在多个缺点:评估可能过于肤浅,没有全面考虑,或是由于某个方案的一个缺点就草率地否决了它,而忽略了这可能是综合最优的选择。架构师的经验和知识是有限的,有时候他们的评估标准可能已过时或不适用于新情况,或者某些评估标准本身就是错误的。iWZ28资讯网——每日最新资讯28at.com

因此,架构师应该设计多个备选方案,理想的方案数量是三到五个。少于三个可能由于思考不够全面,多于五个则可能花费过多时间和精力,且方案间的差异可能不明显。备选方案应具有较大的差异性,如主备和集群方案的区别,或者不同技术实现主备的差异明显,如使用ZooKeeper与使用Keepalived。iWZ28资讯网——每日最新资讯28at.com

最后,第三个错误是备选方案过于详细。一些架构师可能会将备选方案写得非常详细,这不仅消耗大量时间和精力,还可能使人过于关注细节而忽视整体设计,从而导致备选方案数量不足或差异不大。正确的方法是在备选阶段关注技术选型的显著差异,而不是深入到技术细节。例如,使用ZooKeeper与Keepalived来实现主备就是一个较大的技术差异,而在使用相同技术的方案中进行细节上的区分,如节点设计的微小变化,这样的区分在备选阶段并不必要,具体的节点设计可以在最终方案中决定。iWZ28资讯网——每日最新资讯28at.com

方案:iWZ28资讯网——每日最新资讯28at.com

图片图片iWZ28资讯网——每日最新资讯28at.com

方案概述如下:iWZ28资讯网——每日最新资讯28at.com

  • 实施一个分散数据的集群架构,集群内的服务器按组划分,每组负责存储特定部分的消息数据。
  • 每个服务器组配置一台主用 MySQL 和一台备用 MySQL,组内实现主备数据复制,而组间数据保持独立不进行同步。
  • 在正常运行时,每组的主服务器负责处理外部的消息写入和读取请求,备服务器则不提供服务。若主服务器发生故障,备服务器将接管并提供消息读取服务。
  • 客户端使用轮询策略进行消息的写入和读取操作。

iWZ28资讯网——每日最新资讯28at.com

备选方案 3:自主研发存储系统的集群方案iWZ28资讯网——每日最新资讯28at.com

在备选方案 2 的基础上,我们考虑替换 MySQL 存储,因为关系型数据库的特性并不完全符合消息队列的数据处理需求。借鉴 Kafka 的设计思路,可以自行开发一套专门的文件存储和复制系统(具体方案细节将在实际设计阶段详细阐述)。iWZ28资讯网——每日最新资讯28at.com

从高性能消息读取的单机系统设计来看,由于团队主要使用 Java,备选方案 2 和 3 均采用了基于 Netty 的高性能网络库。这反映了团队的技术背景对选择范围的影响。一般而言,成熟的团队不易频繁更换技术栈,而新成立的团队则更可能尝试新技术。iWZ28资讯网——每日最新资讯28at.com

以上简要介绍了三种备选方案以示范设计流程,实际应用中方案会更为复杂。架构师的技术储备和经验越丰富,能够提供的备选方案就越多,这有助于更有效地制定设计方案。例如,在开源方案中不仅可以选择 Kafka,还可以考虑 ActiveMQ、RabbitMQ 等;在考虑集群的存储方案时,除了 MySQL,还可以考虑使用 HBase 或将 Redis 与 MySQL 结合使用;自研的文件系统也可以参考 Kafka、LevelDB 或 HBase 等多种模型。这里由于篇幅限制,不再详细展开。iWZ28资讯网——每日最新资讯28at.com

本文链接:http://www.28at.com/showinfo-26-84026-0.html聊聊架构设计流程:设计备选方案

声明:本网页内容旨在传播知识,若有侵权等问题请及时与本网联系,我们将在第一时间删除处理。邮件:2376512515@qq.com

上一篇: C# 并发设计的七条原则,你知道哪条?

下一篇: 快手二面:你有没有调用过第三方接口?碰到过哪些坑?

标签:
  • 热门焦点
  • K60 Pro官方停产 第三方瞬间涨价

    虽然没有官方宣布,但Redmi的一些高管也已经透露了,Redmi K60 Pro已经停产且不会补货,这一切都是为了即将到来的K60 Ultra铺路,属于厂家的正常操作。但有意思的是该机在停产之后
  • 一加Ace2 Pro官宣:普及16G内存 引领24G

    一加官方今天继续为本月发布的新机一加Ace2 Pro带来预热,公布了内存方面的信息。“淘汰 8GB ,12GB 起步,16GB 普及,24GB 引领,还有呢?#一加Ace2Pro#,2023 年 8 月,敬请期待。”同时
  • 对标苹果的灵动岛 华为带来实况窗功能

    继苹果的灵动岛之后,华为也在今天正式推出了“实况窗”功能。据今天鸿蒙OS 4.0的现场演示显示,华为的实况窗可以更高效的展现出实时通知,比如锁屏上就能看到外卖、打车、银行
  • SpringBoot中使用Cache提升接口性能详解

    环境:springboot2.3.12.RELEASE + JSR107 + Ehcache + JPASpring 框架从 3.1 开始,对 Spring 应用程序提供了透明式添加缓存的支持。和事务支持一样,抽象缓存允许一致地使用各
  • 一年经验在二线城市面试后端的经验分享

    忠告这篇文章只适合2年内工作经验、甚至没有工作经验的朋友阅读。如果你是2年以上工作经验,请果断划走,对你没啥帮助~主人公这篇文章内容来自 「升职加薪」星球星友 的投稿,坐
  • 一文搞定Java NIO,以及各种奇葩流

    大家好,我是哪吒。很多朋友问我,如何才能学好IO流,对各种流的概念,云里雾里的,不求甚解。用到的时候,现百度,功能虽然实现了,但是为什么用这个?不知道。更别说效率问题了~下次再遇到,
  • JVM优化:实战OutOfMemoryError异常

    一、Java堆溢出堆内存中主要存放对象、数组等,只要不断地创建这些对象,并且保证 GC Roots 到对象之间有可达路径来避免垃 圾收集回收机制清除这些对象,当这些对象所占空间超过
  • 共享单车的故事讲到哪了?

    来源丨海克财经与共享充电宝相差不多,共享单车已很久没有被国内热点新闻关照到了。除了一再涨价和用户直呼用不起了。近日多家媒体再发报道称,成都、天津、郑州等地多个共享单
  • 华为HarmonyOS 4.0将于8月4日发布 或搭载AI大模型技术

    华为宣布HarmonyOS4.0将于8月4日正式发布。此前,华为已经针对开发者公布了HarmonyOS4.0,以便于开发者提前进行适配,也因此被曝光出了一些新系统的特性
Top