分析问题和学习知识的方法论区别

无论是分析问题还是学习知识,都是有规律可循的,遵循这个规律会事半功倍。这个规律,我们就可以称之为方法论。总结起来就是三个关键词:What、How、Why。但是二者不同之处在于三个关键点的组织顺序不一样。

分析问题

方法论:Why -> What -> How

举例来说,现在我们要解决这样一个问题(需求):设计一个消息中间件的主备方案。

问题很明确,但是我们要怎么快速、清晰的分析,并最终解决这个问题呢?让我们根据方法论来一步一步分析。

  1. Why

    我们为什么要做主备方案呢?因为想避免在A主机宕机的场景下,客户端程序依然可以正常的发布和拉取消息。其实Why很简单,但是其却很重要。不分析清楚Why,就失去了驱动力;没有驱动力,你的上级会提供资源支持你解决这个问题吗?下级能够更合理的设计和开发吗?显然不能!

  2. What

    主备方案是为了提升应用的高可用。可是这是比较笼统的一个目标,并不是很清晰,比如究竟要达到什么程度的高可用呢?是要所有功能都要高可用?还是某些功能高可用?确定了这些细节,那么我们就搞清楚了What,也就是我们最终会把这个问题解决到什么程度?是全部解决?还是部分解决?总结起来What的关键如下:

    1. 我们在什么场景下,保证(或提供)什么;
    
    2. 我们在什么场景下,不保证(或不提供)什么。
    

    假设最终我们分析后,确定我们是要保证在任何一台主机宕机的情况下,依然能够正常提供消息的发布和拉取。继续分析,假设本身是集群部署,那么对于发布消息来说,本身就是高可用的,因为A主机不能发布消息,我发布到B、C…主机就可以了。但是对于拉取消息来说,如果底层不是共用存储,一旦A主机宕机,那么其消息就无法拉取,很明显不具备高可用。

    经过上边的分析,那么其实我们就明白了,我们的核心目标是要实现消息拉取功能的高可用性。

  3. How

    搞清楚了What,就要开始动手了。动手之前,需要考虑清楚怎么做。通常来讲,主备方案需要解决两个核心问题:

    1. 故障检测

    2. 状态和决策

    具体到每一个核心问题究竟要怎么解决?采用什么技术解决?这些都是How要解决的问题。关于主备方案的详细设计过程,参见博文:

学习知识

方法论:What -> How -> Why

人类学习一个技能或者一个知识,总是遵循由浅入深的规律,What -> How -> Why。下边拿我们学习Spring框架的来说。

  1. What

    Spring是什么?它的主要特点是什么?它能帮助我们干什么?知道了这些,你就可以在可以说:我了解Spring。如果你先工作中暂时用不到,认为没必要深入学习,那知道What就够了。将来在做方案决策的时候,就可以进行简单的方案对比。

  2. How

    Spring怎么用于开发?功能怎么搭建?依赖怎么管理?知道了这些,你就可以说:我熟悉Spring,能够独立的应用Spring进行应用开发。

  3. Why

    Spring为什么要采用依赖注入?为什么要采用插件式设计?为什么要配置优先?更深一点,为什么某段代码是这么设计?知道了这些,那么你就可以说:我精通Spring,甚至可以编写类似的MVC框架。

  • 0
    点赞
  • 1
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

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

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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值