有python,java,C++基础,刚要入门分布式系统的学习,如何系统的学习?

谢谢邀请!

分布式开发是程序员进阶的必经之路,分布式也是云计算的基础,所以学习并掌握分布式开发对理解云计算、大数据都有重要的帮助,也能为云计算和大数据开发打下坚实的基础

分布式的概念众多,有分布式系统、分布式编程、分布式数据库等等,当然需要学习的内容也颇多,当你进行到分布式开发这一步的时候,说明你已经有一定的程序设计经验了,理解起来也就没有那么困难了。

首先,要想系统学习分布式开发,必须先知道分布式的概念是什么?关于分布式概念的描述五花八门,看起来也不是那么好理解。其实概念越抽象就表明其涵盖的内容越多,分布式就是这样一个典型的概念。从程序员的角度来描述分布式,可以这样进行一个简单的定义:把不同的功能封装成不同的组件,部署在不同的站点上。逻辑集中、物理分散是其典型的特点,其中的每一个功能也可以使用集群的方式来进行扩展。

由于你有Java、Python和C++的基础,所以下面我就以java程序为例说一下如何使用java语言进行分布式开发。使用java语言进行分布式学习的第一步是了解RMI开发规则,其中还涵盖了JNDI技术,以及命名服务器的概念。对于已经拥有java开发经验的程序员来说,搭建一个RMI应用并不复杂,不用学习复杂的框架以及配置文件规则就可以通过代码构建一个简单的RMI应用。

RMI是java EE企业级开发的一个核心技术,java也一直致力于对其不断的优化,包括最新的jdk1.9版本也把RMI放在重要的位置上,大家可以去java的官网浏览一下最新的指南。这里我简单描述一下RMI的创建规则,希望通过我的描述能让你对RMI开发有一个大致上的了解。RMI代码结构分为三个部分:

  1. 定义接口。RMI开发的第一步就是定义接口,接口中定义了哪些方法可以进行远程调用。这些方法对于用户来说是透明的,至于执行的服务器在哪?用户并不需要关心,这也是分布式的特点之一。当然,这里面还有两个细节需要注意:一个是传递的对象要能够序列化,另一个是要抛出RemoteException异常。

  2. 定义服务模块。RMI开发的第二步就是定义服务端,服务端的任务有两个:一个是实现接口中描述的服务,另一个是把自己绑定到目录服务器上,以便于用户查找并使用远程服务。如果采用基础编码需要扩展一个类:UnicastRemoteObject,当然如果你使用Spring框架会简单一些,框架提供了一部分封装的实现。

  3. 定义客户端。RMI的客户端调用非常简单,客户端的任务就两个:一个是到目录服务器查找服务,另一个就是调用找到的服务。基础编码采用JNDI中的Naming类就能完成查找和调用的过程。

在了解了RMI开发原理之后,你可以在服务端通过DAO方式引入数据库,这样就能完成一个基本的分布式处理系统了。

使用RMI完全能够创建大型的分布式系统软件,但是RMI也有固有的问题,比如RMI只能使用java进行开发,在分布式事务的支持方面做的不够好等等。但是从学习的角度,完全可以从RMI入手。经过了RMI的学习并实践之后,你就可以进一步了解众多的分布式开发框架,学习起来也就比较容易了,毕竟使用框架比使用纯粹的RMI编码要简单很多了。

如果大家对java RMI感兴趣,关注我并私信我,我写了一个小的RMI实验,可以发给感兴趣的读者。另外,我在头条上正在撰写关于java的系列介绍文章,目前刚更新完并发处理部分,感兴趣的读者可以查看并多多交流。

再次感谢邀请!

刚要入门分布式系统的学习?如何系统的学习?看这样子你是想自学?如果是自学,就先不要考虑学习(过程)是否“系统”,这很重要。

至少,你已经使用过许多分布式系统了。你列举了一些已经掌握的知识编程,但是却没有说你做过什么“系统”。在你将编程知识转换为“系统”开发能力之前,不要学什么分布式系统。

如果你已经(独立或领衔)开发过某些应用“系统”,你能从《头条》这样的应用中感受到分布式系统与你的系统有什么不同吗?

你觉得这样的方式开始学习分布式系统如何?

相关代码参考