最近希望做分布式计算方面的支持,当然,省先要了解一下相关的内容。
以前就看到过taobao的fourinone框架的说明,感觉非常好,值得研究,于是就下载了fourinone-3.04.25的开源版本,地址https://code.google.com/p/fourinone/。
不看不知道,一看,吓了一跳,难不成这个是拿出来之前处理过,专门让人看不懂的?
不解一、所有的类都在一个包名下,不同层次的代码都混在一起。很明显的,底层是分布式计算的基础部分,这个与具体实现的功能无关。
实现集群配置、集群文件系统、MQ、分布式缓冲之类的功能是基于核心功能进行扩展出来的新功能,最好的办法当然是分成多个工程;不能分成多个工程,好呆分成不同的包名,全部混在一个包之中,只有两种可能,一种是层次分解不清晰,另外一种是人为处理,不想让人看明白。
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 32 33 34 35 36 37 38 39 40 41 42 43 44 45 46 47 48 49 50 51 52 53 54 55 56 57 58 59 60 61 62 63 64 65 66 67 68 69 70 71 72 73 74 75 76 77 78 79 80 81 82 83 84 |
|
不解二、鲜见注释
从头到尾看不到多少注释,对于set、get实现,不写啥注释都可以理解的。但是连接口与重要的类也没有注释,对于阅读者来说就非常困难了。
不解三、命名给人带来的困扰
下面是一个接口
1 2 3 4 5 6 7 |
|
下面是另外一个接口
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 |
|
开始我根据命名理解,以为FttpWorker是继承 Worker的,显然我错了,这两个根本就没有关系,它们都继承自ParkActive。偶的理解,如果两个是两个东东,要么就给Worker前面加上一个另外的形容词可能更好。
好吧,接下来看看ParkActive长什么样:
1 2 3 4 |
|
再看ParkStatg ,实际上是继承了序列化接口
1 2 3 4 5 |
|
至次才明白,所谓的工人,就是带有远程访问接口和序列号接口的任意的类。它上面没有自己的任何接口方法。
但是这一圈转下来,嗯嗯,头有点晕。
不解四,散落的main
在程序中许多类中都有一个main方法在那里,虽然不一定能造成多坏、多大的影响,但是明显,这不是一个好的做法。
问题,哪位能给解释一下这些变量代表啥意思??
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 |
|
小结
到目前为止,还没有对fourinone有深入的了解,但是很明显的,令我有点失望。一开始,我觉得总共80多个类,去掉扩展的功能,核心的部分应该很少,大概也就30个左右差不多了,但是实际上看下来,还是感觉到比较困难。当然,这也与自己的水平与能力不足有相当的关系。