【调查】你们是怎么学习分布式/微服务和相关中间件的?
集思广益。
个人一家之言。如果赞同,可以点赞让我知道大家的想法,更加欢迎提出建议和补充(希望你的comment有条理、顺序和逻辑,好的回答必将得到同样高质量的反馈):
1、分布式是将任务拆分成子任务,然后运行在多台服务器上,子任务之间互相通信、调用。那么关于服务通信这一块势必非常重要。
2、服务通信自底向上、从微到宏涉及的是:
2.1、计算机网络:推荐《计算机网络自顶向下方法》,《TCP/IP协议详解Ⅰ》
2.2、Java通信基础:BIO/NIO,序列化。可以看Java圣经《Thinking in Java》对应中的章节
2.3、网络编程:推荐学习Netty源码(大部分Java RPC中间件基于Netty开发)
2.4、开源中间件:从Java的JMI入手了解RPC所需基础,学习常用WebService,然后Dubbo等开源中间件使用和源码(如有余力)
3、相关中间件建议选择一项代表的学习,不必贪得无厌。或者公司用什么,就深入学什么。最主要还是着眼于不变的地方,比如网络编程和通信协议之类。
4、分布式系统是一个庞大的话题,建议先了解底层较好,如Google相关论文和算法,那么通过这些算法和约定设计出来的形形sese的框架就会更加容易理解透彻。
5、个人想法:要做就做不容易、耗时长的事情,因为容易的事情谁都可以做。