系统设计之——架构师职责和设计原则

简介:

1.架构师职责

分布式存储系统架构师的工作不仅在于整体架构设计,还需要考虑清楚关键实现组节,做到即使只有自己一人也可以把系统做出来,只是需要花费更多的时间而已。

架构师的主要工作包括:

1)权衡架构,从多种设计方案中选择一种与当前团队能力最为匹配的方案。架构设计的难点在于权衡,架构师需要能够在理解业务和业界其他方案的前提下提出通合自已公司的架构。这样的架构既能很好地满足业务需求,复杂度也在开发团队的掌控范围之内。另外,制定系统技术发展略线图,提前做好规划。

2)模块划分、接口设计、代码规范制定。系统如何分层,模块如何划分以及每个模块的职责,模块的接口、客户端接口,这些问题都应该在设计阶段考虑消楚。而不是遗留到编码阶段。另外,确保整个团队的编码风格一致。

3)思考清楚关键实现细节并写入设计文档。架构师需要在设计阶段和团队成员讨论清楚关键数据结构、算法,并将这些内容文档化。如果架构师都不清楚关键实现细节,那么,团队成员往往更不清楚,最终的结果就是实现的系统带有不确定性。如果分布式存储系统存在多处缺陷,那么.系统集成测试或者试运行的时候一定会出现进程Core Dump、数据不正确等问题。这些问题在分布式以及多线程环境下非常难以定位。如果引发这些错误的原因比较低级,团队成员将无法从解决错误的过程中收获成就感,团队士气下降,甚至形成恶性循环。

4)提前预知团队成员的问题并给予指导。划分模块以及安排工作时需要考虑团队成员的能力,给每个成员安排适当超出其当前能力的任务,并给予一的指导,例如,帮助其完善设计方案,建议其参考业界的某个方案等。

总而言之,每个问题总会有多种技术方案,架构师要有能力在整体上从稳定性、性能及工程复杂度明确一种设计方案,面且思考清楚实现细节,切忌模棱两可。分布式存储系统的挑战不在于存储理论,而在于如何做出稳定运行且能够逐步进化的系统。

2.设计原则

大规模分布式存储系统有一些可以参考的设计准则:

1)容错。服务器可能宕机,网络交换机可能发生故障,服务器时钟可能出错,磁位存储介质可能损坏等。设计分布式存储系统需要考虑这些因素,将他们看成系统运行过程中必然发生的“正常情况”。这些错误发生时,要求系统能够自动处理,而不是要求人工干预。

2)自动化。人总是会犯错的,加上互联网公司往往要求运维人员在凌晨执行系统升级等操作,因此,运堆人员操作失误的概率远远高于机器故障的概率。很多设计方案是无法做到自动化的,例如MySQL数据库主备之间异步复制。如果主机出现故障,那么有两种选择:一种选择是强制切换到备机,可能丢失最后一部分更新事务;另外一种选择是停写服务。显然,这两种选择都无法让人接受,因此,只能在主机出现故障时报警。运维人员介人根据实际情况采取不同的措施。另一方面,如果主备之间实现强同步,那么,当主机出现故障时,只需要简单地将服务切换到备机即可,很容易实现自动化。当集群规模较小时,是否自动化没有太大的分别;然而,随着集群规模越来越大,自动化的优势也会变得越来越明显。

3)保持兼容。分布式存储面临的需求比较多样,系统最初设计,尤其是用户接口设计时需要考虑到后续升级问题。如果没有兼容性问题,用户很乐意升级到最新版本。这样,团队可以集中精力开发最新版本,而不是将精力分散到优化老版本性能或者修复老版本的Bug上。

目录
相关文章
|
22天前
|
分布式计算 负载均衡 API
微服务架构设计原则与模式
【8月更文第29天】随着云计算和分布式计算的发展,微服务架构已成为构建大型复杂应用的一种流行方式。这种架构模式将单个应用程序分解成一组小型、独立的服务,每个服务运行在其自己的进程中,并通过轻量级机制(通常是HTTP资源API)进行通信。本文将探讨微服务架构的基本设计原则、常用模式以及如何有效地划分服务边界。
98 3
|
1月前
|
消息中间件 监控 API
深入浅出微服务架构设计原则
在软件开发的宇宙中,微服务如星辰般璀璨,引领着分布式系统的航向。本文将带你穿梭于微服务的星系,探索其背后的设计哲学与实践精髓,从服务边界的划分到数据一致性的保障,再到服务的通信与协作,我们将一同揭开微服务架构高效、可扩展且灵活的秘密。
32 4
|
1月前
|
消息中间件 设计模式 API
后端开发中的微服务架构设计原则
【8月更文挑战第13天】在软件工程的世界中,微服务架构已经成为一种流行的设计模式,它通过将复杂的应用程序分解成一组小的服务来简化开发和部署。本文探讨了微服务背后的设计理念,以及如何在后端开发实践中应用这些原则来构建可扩展、灵活且易于维护的系统。我们将深入讨论服务的划分、通信协议的选择、数据一致性的保障以及容错性策略的实施,旨在为后端开发人员提供一套实用的微服务架构设计指导。
51 1
|
2月前
|
NoSQL Redis UED
业务架构问题之在流程建模中,“定职责”的重要性是什么,流程建模中的交互设计原则是什么
业务架构问题之在流程建模中,“定职责”的重要性是什么,流程建模中的交互设计原则是什么
|
1月前
|
监控 架构师 项目管理
项目管理架构师的角色与职责:构建高效项目交付框架
【8月更文第7天】在当今快速变化的商业环境中,组织需要灵活高效的项目交付机制来应对不断出现的新挑战。项目管理架构师(Project Management Architect, PMA)作为一种新兴的角色,在确保项目成功交付方面扮演着至关重要的角色。本文将探讨PMA的核心职责,以及他们如何通过设计和实施项目管理流程来提高项目的可扩展性和适应性,并通过有效的项目治理来提升团队的整体表现。
79 0
|
4月前
|
数据中心 网络架构 Python
【计算巢】数据中心的网络架构设计原则
【5月更文挑战第31天】探讨数据中心网络架构设计原则:稳定性是基础,需抵御各种挑战;强调扩展性,适应业务发展;追求高效,确保数据传输速度;注重灵活性,灵活应对变化。简单Python代码示例展示网络节点连接。设计时需具备长远眼光,综合考虑技术方案,以构建坚固高效的信息桥梁。同学们,要持续学习和探索,为信息世界贡献力量!
64 2
|
4月前
|
运维 架构师 安全
架构师养成手册:架构师职责
小米是一名热情的技术爱好者和架构师,他探讨了架构师的角色和职责。主要涉及六个方面:顶层设计,需与企业战略目标对齐,制定架构原则;规划可适应未来变化的企业架构,分析需求并关注技术趋势;全局视角制定可落地的架构方案,兼顾全局与局部优化;技术选型与难题解决,选择合适技术并解决实际问题;关注方案与代码的广度与深度,确保宏观设计与微观实现的统一;同时,架构师还需具备管理能力,包括团队协作、资源调配和风险管理。
145 11
|
4月前
|
监控 安全 API
微服务架构下的API网关设计原则
【5月更文挑战第31天】在本文中,我们将深入探讨微服务架构下API网关的设计原则。API网关作为微服务架构的入口点,其设计至关重要。我们将从性能、安全性、可扩展性等方面进行分析,并提出一些实用的设计建议。
|
4月前
|
存储 缓存 运维
云计算架构设计原则
【4月更文挑战第6天】这篇文章介绍了基于云计算的架构设计六大原则:合理部署、业务持续、弹性扩展、性能效率、安全合规和持续运营。
|
设计模式 关系型数据库 数据安全/隐私保护
软件架构设计原则之单一职责原则
单一职责(Simple Responsibility Pinciple,SRP)是指不要存在多于一个导致类变更的原因。假设我们有一个类负责两个职责,一旦发生需求变更,修改其中一个职责的逻辑代码,有可能导致另一个职责的功能发生故障。这样一来,这个类就存在两个导致类变更的原因。如何解决这个问题呢?将两个职责用两个类来实现,进行解耦。后期需求变更维护互不影响。这样的设计,可以降低类的复杂度,提高类的可读性,提高系统的可维护性,降低变更引起的风险。总体来说,就是一个类、接口或方法只负责一项职责。
99 0
软件架构设计原则之单一职责原则

热门文章

最新文章