HiSEN

读后感:《凤凰架构》

一、简短感受

简单介绍,《凤凰架构》作者,周志明。
他最出名的书籍非《深入理解Java虚拟机》莫属了
书中了解到他对技术的态度,以及持续奋战一线值得学习,《程序员之路》值得一看(底部有链接)。

阅读时间:0531~0612
构建凤凰磐涅般的系统
介绍了一整套技术体系
穿插着技术的来龙去脉
着实是一部不错的书籍
架构的前提是足够了解
综合实际情况做出权衡
给人感觉不太像架构书
总的来说还是值得一看

用输出倒逼输入
这就是写博客等其它输出手段的作用

目前的软件没有烟囱式的,都是金字塔类型,所以底层基础要牢固!

二、部分摘抄

四层负载均衡的优势是性能高
主要工作在
数据链路层(2层),改写Mac地址
网络层(3层),改写 IP 地址

七层负载均衡的优势是功能强

将简单的校验交给 bean validation,
而把复杂校验留给自己,简直就是买株还珠。
可以使用自定义注解,优雅地解决校验问题。
检查校验项预置好默认提示信息。
基础校验直接放在 bean 属性上,业务的单开类。

能够使用确定的操作,促使状态间产生确定的转移结果的计算模型,在计算机科学中被称为状态机。

状态机特性:任何初始状态一样的状态机,如果执行的命令序列一样,则最终达到的状态也一样。(可用于分布式协商…)

广播指令、状态机复制。

让各个系统节点不受局部网络分区、机器崩溃、执行性能、其它因素影响,都能最终表现出整体一致的过程,被称为各个节点的协商共识。

一致性是指数据不同副本之间的差异,
共识是指达成一致性的方法与过程。

足可见技术圈里即使再有本事,也需要好好包装一下。paxos 论文发表三次后,被谷歌实现之后,凭着谷歌大拿的高度评价,获得了极大的关注。

操作转移模型
状态转移模型

达成共识的三步

  1. 如何选主
  2. 如何把数据复制到各个节点
  3. 如何保证过程是安全的

网关 = 路由器(基础职能) + 过滤器(可选职能)

打饭解释各种 I/O 模型
异步 I/O :下完外卖订单后干别的去,骑手送上门
同步 I/O
阻塞:打饭发现饭还没好,就一直干等着
非阻塞:打饭发现饭还没好,per 3min 看好了没
多路复用:同上,只是一个人可以处理多个请求
信号驱动:发现饭没好,让厨师好了通知你

BFF网关:backends for frontends,针对网关这种边缘节点,对同样的后端集群,裁剪、适配、聚合出不一样的前端服务,有助于后端的稳定,也有助于前端的赋能。

由于服务随时都有可能崩溃,因此快速的失败检测和自动恢复就显得至关重要。

lstio(mesh) 在 1.5 之前是使用微服务架构开发
模块如下

  1. mixer:鉴权策略与遥测
  2. pilot:对接 envoy 的数据平面,xds 策略分发
  3. galley:配置管理,提供外部配置感知能离
  4. citadel:安全加密,RABC 权限控制

微服务的目的是有效拆分应用,实现敏捷开发和部署。

凡事总该现有目的,有预期收益再谈行动才显得合理。

《没有银弹》:硬件的成本能够持续稳定地下降,而软件开发的成本则不可能。

系统的架构趋同于系统设计团队的沟通解构。
康威定律核心观点:沟通决定设计

大厂研发收到追捧,出除了企业本身的光环外(来自于哪里?),有大型系统浸染的经验,更有可能属于技术专家,也是其中的原因。

微服务对普通业务研发友好,但是对架构要求极高。

微服务的前提

  1. 决策者与执行者都能意识到康威定律在软件设计中的关键作用
  2. 组织中具备对微服务有充分理解、有一定实战经验的技术专家
  3. 追求以自治为目标的监控、度量能力
  4. 复杂性已经成为制约生产力的主要矛盾

需要想清楚做一件事的目的是什么?考虑 ROI

长期来看,多数服务端结局都是报废而非演进–Martin Fowler。
随说:良好设计的系统,应该是能够报废的,而非一味追求一步到位。

微服务拆分粒度
下界:独立(发布 / 部署 / 运行 / 测试),内聚(本地事务)
上界:2 披萨团队 (6~12)在一个研发周期完成全部需求。

治理,系统复杂性下的产物。

软件研发的认知负荷,本质上是来自技术的认知复杂度。

分布式系统早已放弃 Unix 所追求的简单性设计哲学。

治理架构腐化唯一有效的办法就是演进式设计。
开发过程中少妥协,否则会形成破窗效应。

Architect 架构师一词从建筑行业借鉴而来,让人容易误解架构师类似于给建筑设计骨架、绘制图纸的建筑架构师。演进式设计更像是“换房子”而不是“造房子”。

先进的生产力都伴随着更高的复杂性,需要有与生产力符合的生产关系来匹配,敏锐地捕捉到生产力的变化,随时调整生产关系,这才是架构师治理复杂性的终极方法。

1992 Java write once,run anywhere。
2018 graal vm,run programs faster anywhere。

目前 graal vm
优势:启动时间快,打包小,内存消耗少
劣势:无法无缝支持动态代理技术,延迟、吞吐量、可监控方面略差,性能劣于 hotspot jit 优化。毕竟是运行时优化,各种分支预测~

将思考具象化。
如果不把自己思考的内容输出给他人,
我们很容易就被自己所欺骗,
误以为自己已经理解得足够完备了。
随说:用输出倒逼输入。

三、图书资源

纸书作者应该还在初版中,目前看的是 PDF.
这本书属于开源书籍,开源地址:《凤凰架构》
凤凰架构附录的一篇文章不错:《程序员之路》