`

架构设计之初体验,送给准备进阶架构的朋友(个人总结)

阅读更多

这篇文章呢是我在阿里学习了架构设计之后总结的一篇文章,本人是高级开发,目前想进阶架构师

1 基本概念和目的

架构设计的基本概念和目的

 

架构设计的目的是为了解决系统复杂度带来的问题,并不是要面面俱到,不需要每个架构都具备高性能、高可用、高扩展等特点,而是要识别出实际业务实际情况的复杂点,然后有有针对性地解决问题,即:有的放矢,而不是贪大求全。 在实际情况中,不一定每个系统都要做架构设计,需要结合实际情况。有时候最简单的设计开发效率反而是最高的,架构设计毕竟要投入时间和人力,这部分投入如果用来尽早编码,项目也许会更快。

2 架构设计复杂度来源

高性能

高性能

 

高可用

高可用

 

可扩展性

可扩展性

 

低成本、安全、规模

低成本、安全、规模

 

3 架构设计三原则

架构设计三原则

 

合适原则

GFS为何在Google诞生,而不是在Microsoft诞生,其中Google有那么庞大的数据是一个主要因素,而不是因为Google的工程师比Microsoft的工程师更加聪明。

真正优秀的架构都是企业在当前人力、条件、业务等各方面约束条件下设计出来的,能够合理地将资源整合一起并发挥出最大功效,并且能迅速落地。这也是很多BAT出来的架构师到了小公司或者创业团队反而做不出成绩的原因,因为没有大公司的平台、资源、积累,只是生搬硬套大公司的做法,失败的效率非常高。

简单原则

软件领域的复杂性

 

无论是结构的复杂性还是逻辑的复杂性,都会存在各种问题,所以架构设计时如果简单方案和复杂的方案都可以满足需求,最好选择简单的方案。《UNIX编程艺术》总结的KISS(Keep It Simple,Stupid!)原则一样适用于架构设计。

演化原则

对于软件系统来说,变化才是主题。软件架构需要根据业务的发展而不断变化。 如果没有把握“软件架构需要根据业务发展不断变化”这个本质,在做架构设计的时候就很容易陷入一个误区:试图一步到位设计一个软件架构,期望不管业务如何变化,架构都稳如磐石。

为了实现这样的目标,要么照搬业界大公司公开发表的方案;要么投入庞大的资源和时间来做各种各样的预测、分析、设计。无论哪种做法,后果都很明显:投入巨大,落地遥遥无期。更让人沮丧的是,就算跌跌撞撞拼死拼活终于落地,却发现很多预测和分析都是不靠谱的。

实践中,架构师要提醒自己不要贪大求全,遵循演化优于一步到位的原则,因为业务的发展和变化总是很快的,**无论多牛的团队,都不可能完美预测所有的业务发展和变化路径。**实践中可以参考如下建议:

  • 首先,设计出来的架构要满足当时的业务需要。

  • 其次,架构要不断地在实际应用过程中迭代,保留优秀的设计,修复有缺陷的设计,改正错误的设计,去掉无用的设计,使得架构逐渐完善。

  • 第三,当业务发生变化时,架构要扩展、重构,甚至重写;代码也许会重写,但有价值的经验、教训、逻辑、设计等却可以在新架构中延续。

  • 在这里推荐一个学习架构的群:433540541,进群可以免费获取到架构学习资料,希望能够帮到现在想要进阶架构,遇到职业瓶颈的朋友。

4 架构设计的流程

 

架构设计的流程

相信很多朋友看完之后也想现在就学习一下程序员进阶架构方面的知识,还有很多朋友在3-5年之间,但是呢,遇到了职业瓶颈,想进阶一个台阶,在网上找了大量的视频,看了很多书籍都没有太大的效果,公司项目上面遇到的项目问题也没有地方问,所以呢,这里有老师们录制的一些关于Java进阶的一些视频,并不是一两个方面。肯定能够帮到行业的一些朋友,少发些时间在博客和百度上面找资料,把时间利用好。可以加群:433540541,免费获取。

分享到:
评论

相关推荐

    zigbee基础实验(7)—基于basicRF的进阶实验

    Zigbee 基础实验(7)—基于 basicRF 的进阶实验 本实验基于 basicRF 修改,旨在学习 Zigbee 协议的基本应用。实验中有两个节点:Transmit 节点和 Calculater 节点。Transmit 节点通过串口接收 PC 机发送的数据,...

    推荐Java程序员到j2ee架构师的阅读书籍.pdf

    " Java程序员到j2ee架构师的阅读书籍" Java程序员在技术发展道路上的成长离不开阅读优秀的技术书籍,以下是推荐的Java程序员到j2ee架构师的阅读书籍。 一、 Java编程入门类 在Java编程入门阶段,需要快速掌握...

    3.Hadoop入门进阶课程_第13周_Chukwa介绍与安装部署.pdf

    ### Hadoop入门进阶课程_第13周_Chukwa介绍与安装部署 #### 一、环境准备 根据文档中的信息,在开始Chukwa的学习之前,首先需要搭建一个合适的基础环境。文中提到的操作系统为CentOS 6.6 64位版本,这是一款广泛...

    Java实例之即时通信系统

    "Java实例之即时通信系统"是针对Java初学者和进阶者的一个实践项目,通过这个项目,你可以学习到如何利用Java进行网络通信、多线程编程以及数据传输等关键技能。 即时通信系统,通常被称为IM(Instant Messaging)...

    基于PHP的WMCMS小说系统源码 php版.zip

    - 应用AJAX(Asynchronous JavaScript and XML)技术实现页面的异步加载,提升用户体验。 - 使用Bootstrap或自定义CSS实现响应式布局,以适应不同设备。 - 熟悉PHP的错误处理和日志记录,以调试和优化代码。 【搭建...

    基于jsp+servlet+javabean实现的学校教务管理系统.zip

    4. **设计模式**:在开发过程中,可能会运用到MVC(Model-View-Controller)设计模式,将系统分为模型、视图和控制器三个部分,使得代码结构清晰,易于维护。模型负责业务逻辑,视图负责展示,控制器负责协调两者...

    js资源学习,asp资源

    ASP.NET MVC允许开发者按照模型-视图-控制器的架构设计应用程序,提高了代码的可维护性和可测试性。WebAPI则用于构建RESTful服务,便于前后端分离的开发模式。 在"aspsource"这个压缩包里,你可能会找到ASP或ASP...

    JSP从入门到精通 (适合初学者)

    1. **MVC架构**:学习如何使用Model-View-Controller模式构建应用程序。 2. **框架集成**:整合Spring、Hibernate等流行框架提高开发效率。 3. **安全性考虑**:实现认证、授权功能保护应用安全。 4. **性能优化**:...

    ZABBIX3.4中文手册

    以上是对Zabbix 3.4中文手册的部分内容进行了详细的解析,涵盖了从入门到进阶的各个方面。通过对这些知识点的学习,用户可以全面掌握Zabbix的功能和使用方法,从而更好地应用于实际的监控场景中。

    python爬虫爬虫框架Scrapy简介.md

    Scrapy架构设计得非常精巧,拥有清晰的组件层次结构,使得开发者可以轻松地扩展其功能,同时保持了代码的清晰和易于维护。在Scrapy框架中,各个组件各司其职,协同工作,以完成整个爬虫的数据处理流程。 #### ...

Global site tag (gtag.js) - Google Analytics