持续学习杂谈:总结与反思
2018-03-21 本文已影响309人
程序熊大
在当前这个时代,作为开发者,我们的核心竞争力来自于两个方面:(1)对于业务架构(体系)的掌控和开拓能力;(2)技术方面的落地能力,本文主要是针对后者的一些思考。
一、总结与反思
去年在一篇文章中看到:工作后的学习,可以从两个方面着力——大的理论和底层的基础,对于中间的知识点可以放宽一点。可能是我对此理解得不对,按照这个思路,我调整了自己的学习方向:
- 对于基础知识,我开始重新学习Java基础、JVM知识、Java并发编程等进阶知识点;
- 对于大的概念理论,我开始阅读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:处理延时、防雪崩的利器