架构学习初探

  1. 架构的设计影响系统的生产, 比如开发过程和效率, 代码和组建复用性等。同时也影响着系统的可用性,可伸缩性,性能,容量可预测性等。

  2. 从代码逻辑到物理网络, 从单机到分布式, 无数的技术可供架构师选择。
    如分层, 组件化, 服务化, 标准化, 缓存, 分离, 队列,复制, 冗余, 代理。不过他们仍然只是术的范畴,比如顿悟变化的道理,在博弈中找平衡, 以系统化的角度来解析问题, 寻找相对与绝对的平衡, 开放的心态。

  3. 在软件设计中, 设计师需要考虑多方面的关注点, 票连的架构设计让这些关注点尽可能分离, 然后以最简单的机制结合在一起,从而得到高内聚低耦合的系统。

  4. 架构之美着重表达的是:间接性。 Dont,t repeat yourself。 好的架构致力于消除各种类型的信息重复。从结构化程序设计中的子函数和函数, 到面向对象程序设计中的集成, 无不体现了对表达简洁性的特殊偏爱。
    在敏捷方法学中, 消除重复则是重构的主要目标之一。

  5. 架构之美需要解决时机问题, 它既是艺术,也是生活,软件像建筑一样,他的每不能脱离它的是哟个价值。
    美是创造矛盾并解决矛盾。

架构要具有的基本特征如下:
1、具备客户要的功能
2、工期里面把软件交付,房子质量要没问题
3、性能足够好
4、可靠的
5、可用的,使用的时候不会对环境造成上海,系统不会崩掉,不会导致业务中断
6、成本可以接受。不能押研发个软件花十年,肯定无法接受
7、符合法规标准
8、超越别人和竞争者

  1. 架构到底是社么: 一堆文档, 带各种标注? 表明各种需求和文档?
    不仅仅是一摞纸, 几张表。 它涉及的东西很多, 包括需要了解有哪些需求, 哪些功能。
    这些共呢个应该用什么杨的技术栈来实现, 需要做抉择!然后还经过设计,讨论,复审,修改,批准。

官方定义: 一个程序或计算机系统的软件架构: 是系统的一种结构, 或 一组结构;
它包含软件元素, 也就是功能, 以及功能外放的表现属性。 功能或者实例或者是类之间的关系。

什么是外部可见? 你能看到接口或者是它提供的而服务, 执行的特征, 错误的处理, 共享资源的使用。
架构关注的是: 组件之间的关系 和 系统组件外部可见的属性,
那么架构还需要关注内部结构吗?我觉得不需要,架构之需要提出组件内部的要求, 例如高内聚,低耦合等等。

成功架构师的两项关键实践:

  1. 让利益参与人, 包括开发,测试,PO, 项目经理, 关注功能和品质
  2. 我们想从系统获取什么, 让系统实现什么共呢个? 有怎么样的优先级?

因为不同的系统有不同的特点, 有些系统的行呢个很好, 那么关注点的: 性能, 安全, 可伸缩性。
另外一些的关注可变性, 可维护性, 可用性。

关注品质: 包括是否允许迁移到分布式部署, 是否支持从单线程向多线程迁移。
业务模块的可变性, 可维护性, 可伸缩性。

概念完整性是架构最重要的特征。 说白了就是: 整个架构之体现一两个架构师的思想,而不是一个大而全的大杂烩。

架构师需要考虑一下:

  1. 功能性。 是要干啥的
  2. 可变性。 可塑性,后面做的这个东西再提供其他服务, 成本高不高。 例如买个轿车,以后能不能当货车用,偶尔拉拉货。
  3. 性能
  4. 容量。 支持给多少人提供服务。
  5. 生态系统 这个程序要和哪些系统打交道
  6. 模块化 如何将编写的任务分解 为工作指派。
  7. 可构建行
  8. 产品化
  9. 安全性, 如何保证你的用户数据的安全。

一些具体的架构方法, 就涉及到设计模式了。 例如整体部分原则, 例如信息隐藏原则。
例如高内聚, 低耦合原则。这些都是一些静态的结构

动态的结构: 说的就是服务有哪些进程承载, 这些进程之间的关系, 如何处理并发, 处理锁等等。

看到1.5章
什么是好的架构: 指导开发和测试完成系统。满足系统的利益相关人的功能和质量关注点。

  1. 有巨大的商业价值
  2. 要能影响并且输出到其他产品线,能够被"借用,复制,窃取"的架构
  3. 在使用架构前,我们必须先构建, 我们要寻找那些具有良好的使用结构的架构,他们支持增量式的构建。这样,每次构建迭代就能得到一个有用的,可测试的系统。我们也会寻找那些具有定义良好的模块接口,本来就很好测试的架构。这样,构建的过程就是透明的,可见的。

架构要考虑能够经过时间考验, 我们生活的技术环境一直在快速变化, 美丽的架构应该预期到变更的需要。我们想寻找那些避免了衰老的地平线的架构。超越了这条衰老的地平线, 维护将变得代价极大。同时,架构应该具有方便使用和构建的特点。

架构作为测试的一部分, 要能有模拟用户的行为的能力。

一致的架构学习起来更容易,更快。当知道了这一点以后, 你就可以预测其他的部分。 不需要记住并处理特殊的情况,代码更干净,测试集更小。一致的架构不会为做同一件事,提供两种甚至更多的办法,不会让用户浪费时间做出选择。

美丽架构的三个模型:

  1. A7E舰载飞行处理器
  2. 朗讯5ESS电话交换机的软件架构
  3. 万维网
  4. UNIX系统
  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值