热门标签 | HotTags
当前位置:  开发笔记 > 后端 > 正文

从零开始_从零开始学架构day04

篇首语:本文由编程笔记#小编为大家整理,主要介绍了从零开始学架构-day04相关的知识,希望对你有一定的参考价值。

篇首语:本文由编程笔记#小编为大家整理,主要介绍了从零开始学架构-day04相关的知识,希望对你有一定的参考价值。






不得不说我是三天打渔两天晒网,烂泥巴糊不上墙。
烂泥巴开始打渔。

上节跟着大佬学习了,架构的复杂度来源,现在回顾下,确实想不起来了。重新开一遍。


回顾

影响架构复杂度的几大因素,追求高性能,高可用,高拓展既然已经知道了复杂度的来源于这些方面,那我们有什么原则可以直接将这些复杂度化难为简呢? 那这这节课,我们就看下架构的三大原则:合适原则,简单原则,演化原则。


架构的三大原则


合适原则


  1. 合适原则,合适的意思就是合适呗,选择一个中间件,或者一些框架,或者物理机等,都得合适我们所要设计的系统。
  2. 还有就是合适原则的宣言是:“合适优于业界领先。”,就针对这个宣言,我在工作中也有遇到过,有些架构师为了追求新的技术而耗费大量的资源去达到只是起了替换作用的工作。我说一个我自己遇到的真是例子:公司一直用的0是关系性数据库mysql,现在公司上了一个新的项目,然后有个新来的团队leader他说选用mongDB来做存储,当时由于公司之前没有使用过,运维团队的维护能力也算是跟不上。最终结果是折腾了一会然后最后还是使用了mysql解决了。这里的没有选择mongDB也就是合适原则了,虽然mongDB有很多优势,且相对来说能符合一些项目需求。但是运维能力跟不上这也是问题的。
  3. 还有的就是大佬所讲的盲目跟风,我现在就是有这样的情节,一方面为了证明自己走在技术最前沿(装逼呗),一方面是自己学了,赶紧用公司的项目实践一下(真TM的自私,说的就是我)。这都是自己之前不成熟的想法,如果我的领导看到我的文章,如果我下次要新的技术栈我会给你充分的理由的,毕竟我们都是专业的开发人员。
  4. 之前的微服务就很火吗?但是有多少公司真正的微服务落地成功,这里的成功不是拆成功,而是真正的达到最终的目的,降低成本,提高服务的稳定性和复杂度等等了吗? 现在阿里又要拆中台,不搞了。难道大家又要学阿里合并起来吗?
  5. 合适是重中之重。不合适的人最终都会分手的。

简单原则

简单原则宣言:“简单优于复杂”。


  1. 我靠,我的第一反应这不就废话吗?简单优于复杂。是的我的思维方式有点问题,这里的复杂的意思是为了使架构变得精美,无懈可击让架构变得很复杂的意思,其实我个人理解他就是我们所说的:“过度设计”。
  2. “复杂”在制造领域代表先进,在建筑领域代表领先,但在软件领域,却恰恰相反,代表的是“问题”。
  3. 软件领域的复杂性体现在两个方面:
    1. 结构复杂:


      • 组成复杂系统的组件数量更多;
      • 同时这些组件之间的关系也更加复杂。
    2. 看看下面的物理架构图够复杂吧,其实再我们很多系统都没有必要这么全,下面的物理架构图也算是现在的主流设计了吧。相当全。但是我们的系统需要这么全吗???
      在这里插入图片描述

    3. 我们再来看看如果这么复杂了会出哪些问题呢?


      • 组件越多,就越有可能其中某个组件出现故障 必然事件
      • 某个组件改动,会影响关联的所有组件,不需要缓存,你加了缓存,改了缓存那肯定影响系统的一致性问题
      • 定位一个复杂系统中的问题总是比简单系统更加困难。有了缓存,到底是数据库没有没出海㷣事缓存没有刷新呢?
  4. 简单这件事情 不管是在架构设计,还是在我们写代码的时候都有用到,比如设计模式中的kiss原则,不是打kiss的kiss,是keep Simple yourself 或者 Keep It Simple, Stupid!的意思保证简单单一。生活中我们也应该这样。不然会让我们很累

演化原则

演化原则宣言:“演化优于一步到位”。


  1. 之前一个老师傅讲的一句话: “我们先简单开发(不过度设计),后面结构什么慢慢迭代重构优化”,这是我在上家公司最后一个项目的架构师说的。这也许就本着演化原则来的,希望我没有充分解读。哈哈哈
  2. 不高深的讲世间万物都是一步一步演化而来的,没有什么是一生下来就是完美的。生物的进化等等等,所以软件架构设计其实更加类似于大自然“设计”一个生物,通过演化让生物适应环境,逐步变得更加强大:
  3. 软件架构设计同样是类似的过程:
    • 首先,设计出来的架构要满足当时的业务需要。这是必然不然会被产品经理“砍死”!
    • 其次,架构要不断地在实际应用过程中迭代,保留优秀的设计,修复有缺陷的设计,改正错误的设计,去掉无用的设计,使得架构逐渐完善。这也是重构的作用之一,重构也是迭代开发中很重要的一步。
    • 第三,当业务发生变化时,架构要扩展、重构,甚至重写;代码也许会重写,但有价值的经验、教训、逻辑、设计等(类似生物体内的基因)却可以在新架构中延续。

总结


  1. 主要聊了架构的三大原则:

  • 合适原则
  • 简单原则
  • 演化原则

  1. 这也是我们生活的原则,选择合适的,做事简单点,不要着急,一步一步的脚踏实地前进。





推荐阅读
  • 云原生应用最佳开发实践之十二原则(12factor)
    目录简介一、基准代码二、依赖三、配置四、后端配置五、构建、发布、运行六、进程七、端口绑定八、并发九、易处理十、开发与线上环境等价十一、日志十二、进程管理当 ... [详细]
  • TiDB | TiDB在5A级物流企业核心系统的应用与实践
    TiDB在5A级物流企业核心系统的应用与实践前言一、业务背景科捷物流概况神州金库简介二、现状与挑战神州金库现有技术体系业务挑战应对方案三、TiDB解决方案测试迁移收益问题四、说在最 ... [详细]
  • 朱晔的互联网架构实践心得S1E7:三十种架构设计模式(上)【下载本文PDF进行阅读】设计模式是前人通过大量的实践总结出来的一些经验总结和最佳实践。在经过多年的软件开发实践之后,回过头 ... [详细]
  • 数据库异常智能分析与诊断
    数据库,异常, ... [详细]
  • flowable工作流 流程变量_信也科技工作流平台的技术实践
    1背景随着公司业务发展及内部业务流程诉求的增长,目前信息化系统不能够很好满足期望,主要体现如下:目前OA流程引擎无法满足企业特定业务流程需求,且移动端体 ... [详细]
  • BPM是什么软件?1、BPM是BusinessProcessManagement的简称,译为业务流程管理,它是一种以规范化的构造端到端的卓越业务流程为中心以持续的提高组织业务绩效为 ... [详细]
  • 提供:ZStack云计算原创2016-12-26张鑫讲师介绍张鑫ZStack总架构师、联合创始人《系统虚拟化》主要作者,曾任职Intel开源软件技术中心 ... [详细]
  • 软件测试工程师,需要达到什么水平才能顺利拿到 20k+ 无压力?
    前言最近看到很多应届生晒offer,稍有名气点的公司给出的价格都是一年30多W或者月薪20几k,相比之下工作几年的自己薪资确实很寒酸.根据我自己找工作经历,二线城市一般小公司招聘 ... [详细]
  • 物联网应用介绍
    •物联网的研究背景(概念|本质|特征|发展现状)       物联网是新一代信息技术的高度集成和综合运用,已成为全球新一轮科技革命与产业变革的核心驱动和经济社会绿色、智能、可持续发 ... [详细]
  • 企业数据应用挑战及元数据管理的重要性
    本文主要介绍了企业在日常经营管理过程中面临的数据应用挑战,包括数据找不到、数据读不懂、数据不可信等问题。针对这些挑战,通过元数据管理可以实现数据的可见、可懂、可用,帮助业务快速获取所需数据。文章提出了“灵魂”三问——元数据是什么、有什么用、又该怎么管,强调了元数据管理在企业数据治理中的基础和前提作用。 ... [详细]
  • k8s+springboot+Eureka如何平滑上下线服务
    k8s+springboot+Eureka如何平滑上下线服务目录服务平滑上下线-k8s版本目录“上篇介绍了springboot+Euraka服务平滑上下线的方式,有部分小伙伴反馈k ... [详细]
  • 智慧博物馆信息系统建设方案
    3.信息化系统建设3.1博物馆RFID藏品管理系统3.1.1系统概述博物馆藏品保管是一项十分复杂又繁琐的工作。从事保管工作除了经常、及时地进行藏品的登记、分类、编目、保养和修 ... [详细]
  • 微信公众号:内核小王子关注可了解更多关于数据库,JVM内核相关的知识;如果你有任何疑问也可以加我pigpdong[^1]jvm一行代码是怎么运行的首先,java代码会被编译成字 ... [详细]
  • 都说Python处理速度慢,为何月活7亿的 Instagram依然在使用Python?
    点击“Python编程与实战”,选择“置顶公众号”第一时间获取Python技术干货!来自|简书作者|我爱学python链接|https:www.jian ... [详细]
  • 博客_2018年博客总结
    本文由编程笔记#小编为大家整理,主要介绍了2018年博客总结相关的知识,希望对你有一定的参考价值。前言     ... [详细]
author-avatar
丁木China
这个家伙很懒,什么也没留下!
PHP1.CN | 中国最专业的PHP中文社区 | DevBox开发工具箱 | json解析格式化 |PHP资讯 | PHP教程 | 数据库技术 | 服务器技术 | 前端开发技术 | PHP框架 | 开发工具 | 在线工具
Copyright © 1998 - 2020 PHP1.CN. All Rights Reserved | 京公网安备 11010802041100号 | 京ICP备19059560号-4 | PHP1.CN 第一PHP社区 版权所有