持续学习杂谈:总结与反思

119 阅读2分钟
原文链接: www.jianshu.com

在当前这个时代,作为开发者,我们的核心竞争力来自于两个方面:(1)对于业务架构(体系)的掌控和开拓能力;(2)技术方面的落地能力,本文主要是针对后者的一些思考。

一、总结与反思

去年在一篇文章中看到:工作后的学习,可以从两个方面着力——大的理论和底层的基础,对于中间的知识点可以放宽一点。可能是我对此理解得不对,按照这个思路,我调整了自己的学习方向:

  1. 对于基础知识,我开始重新学习Java基础、JVM知识、Java并发编程等进阶知识点;
  2. 对于大的概念理论,我开始阅读DDD、软件架构、OOAD等理论知识。

经过三个多月的学习,我收获不小:夯实了不少知识点,同时也在软件设计理论上初窥门径。不过我也发现这种学习思路的问题——眼高手低。现在我也理解了我一大哥之前指导我的一句话:要在和自己工作相关的技术点深挖下去。通过工作中遇到的知识点探索,可以反过来促进我对基础知识和软件架构的理解和掌握,这点很重要。

二、微服务技术栈

Java后端的开发人员,在技术方面不能仅仅满足于实现业务需求,而要对分布式系统(微服务)技术栈的各个组件捻熟于心,了解各个组件的使用场景、最佳实践、关键特性、跟同类竞品的比较、最好是阅读过一两个经典项目的源码。下面是我列的一些业界比较流行的分布式中间件,用于走查。

远程调用(RPC)

  • Dubbo
  • gRPC

注册中心

  • ETCD
  • ZK

消息队列(MQ)

  • NSQ
  • RocketMQ
  • RabbitMQ
  • Kafka

NoSQL

  • Redis & Codis
  • Hbase
  • ES

分库分表

  • TDDL
  • cobar
  • Mycat
  • Sharding-JDBC

分布式服务跟踪

  • CAT
  • Skywalking
  • Zipkin

配置中心

  • Apollo(阿波罗)
  • Diamond

分布式作业

  • Elastic-Job

Spring Cloud生态

  • Hystrix:处理延时、防雪崩的利器