万物都有其本质,也只有了解了事物的本质之后,才不至于出现在事物稍作改变时就难以应对的情况,作为软件工程专业的学生,我们应该对IT架构的本质有一定的了解。“老僧三十年前未参禅时,见山是山,见水是水。及至后来,亲见知识,有个入出,见山不是山,见水不是水。而今得个休歇处,依前见山只是山,见水只是水。”这是参禅的三重境界,但同样适用于IT技术圈,初出茅庐的新手觉得每个产品都是有一定的技术难度的,他们学习着一门又一门的新语言,追逐着最强的IDE;有一定阅历与经验的前辈们深知各语言的优点与劣势,最好的语言也时常会有人对其发出嘲讽;然而当一切都沉淀下来以后,我们会明白,搞IT其实不过就是一份延续思想以及翻译语言的工作,例如技术架构师,这是一份古朴甚至有些无趣的工作。

架构技术像机器人哄小孩一样简单,各角色分工明确方便快速实现业务,但是也给架构优化埋下了大坑,底层的盲目支撑是巨大资源浪费,平级调度协作也没任何弹性,A系统会等B系统等到死锁就是架构悲剧。搞架构设计最重要的就是砍需求,将上层应用的需求优化删减,让同级的业务能容错,抓住核心诉求,不该要的东西通通不要。

作者对架构师的工作做出了五条基于核心道理的总结:1. 需求优化最重要:少查少写少依赖;2.群集设计通用规则:前端复制后端拆,实时改异步,三组件互换;3. 理解硬件天性:角色选型时要看硬件的天然特性;4. 数据的产生和消失:数据不会凭空产生,但会凭空消失;5. 各环节都不可盲信:容灾设计中都尽人事和听天命。

前端是管道是逻辑,而后端是状态是数据,所以前端复制后端拆。在群集性能规划中,网络和硬盘IO+CPU算力+磁盘和内存空间是可以互换的,架构师要完成补不足而损有余的选型。每个新选型都会带来细节上的万千变化,但每种变化都是符合自然规律有章可循的。例如,一个经典微机系统就是中央处理器+主存储器+IO设备,而这几个概念居然是和群集性能规划一一对应的。

架构层软件技术已经足够成熟,所谓技术选型不如说是适应场景;在做具体角色选型时,最深度也最易忽视的原则是顺应硬件天性。作者的精神导师说过,如果一个服务依赖硬盘,那这个服务就不适合扛性能压力。天性不可逆转,所谓理解硬件的天然特性,就是别让硬盘扛性能,别让内存保持久,别让网线扛稳定。

写代码时会遇见很多难以理解的问题,你可能不明白这个错是怎么出现的,也不知道那个错怎么下一秒忽然就没了,但我们需要知道的是,数据不会凭空产生,但有可能会凭空消失。计算机或者自输入设备获取数据,或者自其他数据源导入数据,而且原始数据的转化规则也要人类来定义。我们要便捷轻巧安全可靠的获取数据,就要选好数据源,保障好传输路径,定义好数据变换规则。在一个数据生命周期内,为了防止数据全部或部分凭空消失,数据的容错校验、关联复原、冷热备份和安全删除都要考虑到位。

架构师的核心技能包括画好访问逻辑和数据流量图,因为问题现状描述清楚了,问题就解决了一多半了。一个好的业务访问逻辑图,其信息量大到包罗访问过程的所有元素,同时也要详略得当高亮关键点。在生僻业务的规划实施过程中,没人告诉架构师该有哪些服务,他们只能靠摸透一个又一个访问逻辑图和数据生命周期,来摸索群集内有哪些角色和依赖关系。

要知道整个IT系统中就没有可靠的组件,架构师既不能盲目信任撞大运,又不能无限冗余吓唬自己,而是在尽人事和听天命之间做好权衡,不出故障的人是不存在的,不出错的标准难以达到。如果出了大范围的故障,只要员工没有恶意破坏,那就是群集健壮性设计不到位,是技术总监和架构师的锅,而非操作工。

作者说过庖丁可以解牛也可以杀猪,做架构的,明白了架构之道,以其作为思想支撑,即使面对的是全新业务类型,也能做到面不改色游刃有余。

IT架构的本质--阅读笔记01的更多相关文章

  1. uml大战需求分析阅读笔记01

    <<UML大战需求分析>>阅读笔记(1) 刚读了uml大战需求分析的第一二章,读了这些内容之后,令我深有感触.以前学习uml这门课的时候,并没有好好学,那时我认为这门课并没有什 ...

  2. <精通JavaScript>---阅读笔记01

    下面是阅读精通JavaScript书做的相关笔记. JS中的函数重载 函数重载必须依赖两件事情:判断传入参数数量的能力和判断传入参数类型的能力,在js中每个函数都带有一个仅在这个函数范围内作用的变量, ...

  3. Spring源码阅读笔记01:源码阅读环境准备

    1. 写在前面 对于做Java开发的同学来说,Spring就像是一条绕不过去的路,但是大多数也只是停留在对Spring的简单使用层面上,对于其背后的原理所知不多也不愿深究,关于这个问题,我在平时的生活 ...

  4. UML大战需求分析--阅读笔记01

    本次阅读的书籍是<UML大战需求分析>,看了前两章的内容:1 大话UML,2绞尽脑汁的需求分析.这两章内容关联不大,分开描述. 第一章:大话UML 本章主要概述UML是什么,有什么内容.U ...

  5. 《UML大战需求分析》阅读笔记01

    在刚学习软件开发的课程时,首先学习了UML设计,但只是学习了基本的语法,虽然在学期通过课堂练习进行了实践,但并没有真正理解其中作用.为了进一步的理解UML的用法,我阅读了<UML大战需求分析&g ...

  6. 《java与模式》阅读笔记01

    这次我读了前两章的内容,就如书名所言,这本书主要将的就是java中的模式,在书中的序言就把所有的模式都介绍了一下,主要有, 1.创建模式:简单工厂模式,工厂方法模式,抽象工厂模式,建造模式 2.行为模 ...

  7. 《京东B2B业务架构演变》阅读笔记

    一.京东 B2B 业务的定位 让各类型的企业都可以在京东的 B 平台上进行采购.建立采购关系. 京东 B2B 的用户群体主要分为 2 类: 一类是大 B 用户.另一类是小 B 用户.京东 B 平台需要 ...

  8. 《YouTube 网站的架构演进》阅读笔记

    概述 YouTube 在国内是个404网站,需要翻墙得见,这是有用的废话,先铺垫一下. 从全球网站来看,它仅次于母公司 Google,全球排名位列第2.每天超过5亿以上视频播放量,平均每个用户点击10 ...

  9. 云时代架构阅读笔记六——Java内存模型详解(二)

    承接上文:云时代架构阅读笔记五——Java内存模型详解(一) 原子性.可见性.有序性 Java内存模型围绕着并发过程中如何处理原子性.可见性和有序性这三个特征来建立的,来逐个看一下: 1.原子性(At ...

随机推荐

  1. 第三节MapStruct翻译--Defining a mapper

    第三节MapStruct--Defining a mapper 在这一章节你将学到如何用mapstruct和它的一些必要的操作选项来定义一个bean mapper. 3.1 Basic mapping ...

  2. .net core项目iis10上出现 HTTP 错误 500.19,错误代码:0x8007000d

    文件权限更改,配置文件更改,IIS重装重启,各种办法都不管用,下面是解决办法: 看错误信息里:模块:IIS Web Core 打开IIS: 模块列表中是否缺少红框里的两个组件(我这是已经安装好的截图) ...

  3. HDU 4952 Number Transformation 多校8 机智数学

    哎.这个题想了好久,状态不对啊...一个大家都出的题..当时想到肯定是可以有什么规律来暴力,不用算到10的10次方 对于某个k,x.从1到k循环,每次求一个新的x,这个x要大于等于原x,并且要是i的倍 ...

  4. 简单javascript学习总结

    2019-10-19 //文章汇总于绿叶学习网 console.log()                              //控制台输出 目录 数据类型:.... 2 函数:.... 3 ...

  5. HZNU-ACM寒假集训Day11小结 贪心

    1.刘汝佳紫书区间问题三大情况 1.选择不相交区间 贪心策略:一定要选择第一个区间 2.区间选点问题 贪心策略:取最后一个点 3.区间覆盖问题: n个闭区间,选择尽量少的区间覆盖一条指定线段[s,t] ...

  6. 通过request获得全路径

     <% String test = request.getScheme()+"://"+request.getServerName()+":"+reque ...

  7. 基础语法-循环结构for

    基础语法-循环结构for 作者:尹正杰 版权声明:原创作品,谢绝转载!否则将追究法律责任. 一.for循环格式 for(初始化表达式;循环条件表达式;循环后的操作表达式){ 执行语句(循环体); } ...

  8. 2016蓝桥杯决赛C/C++A组第四题 路径之谜

    题意: 小明冒充X星球的骑士,进入了一个奇怪的城堡.城堡里边什么都没有,只有方形石头铺成的地面. 假设城堡地面是 n x n 个方格.[如图1.png]所示. 按习俗,骑士要从西北角走到东南角.可以横 ...

  9. MVC学生管理系统-阶段V(模糊查询)

    项目源码 :https://download.csdn.net/download/weixin_44718300/11091042 此处省略一段话.去上一篇查看 NO01:修改list.jsp < ...

  10. UVALive 4487 Exclusive-OR 加权并查集神题

    已知有 x[0-(n-1)],但是不知道具体的值,题目给定的信息 只有 I P V,说明 Xp=V,或者 I P Q V,说明 Xp ^ Xq=v,然后要求回答每个询问,询问的是 某任意的序列值 Xp ...