说一说我的经验吧
最近一直在研究使用netty开发分布式程序,想通过自研来实现一个集数据接入、集群部署、在线开发、元数据管理于一体的大数据平台软件。
使用java开发的开源的大数据平台软件datasophon,是一个不错的样例。只不过底层使用的akka作为RPC通信框架。我想做一个纯国产的大数据平台,底层通信使用java NIO或者netty,最小化依赖。做自研嘛,就要有自研的样子。
分布式开发遇到不少问题,我是先在datasophon之上开发的,增加了数据接入模块,但是比如像kafka数据接入,如果有认证需要上传认证文件。这个时候,只能考虑把数据接入模块独立成一个新的进程,不能再放到worker里,作为一个单独的线程,因为要对认证文件做隔离,并且还不能修改上传过来的文件名称,避免kafka客户端配置参数不好配置。
这是个痛苦的事情,到底使用文件目录来隔离,还是在worker端强行修改文件名称,需要做一个选择。
文件目录隔离就跟小海豚一样了,每个任务有一个独立的work home。大多数分布式软件都是这么做的,比如spark、flink的工作端都是维护了一个独立的work home。
痛苦的是需要把底层重新设计,之前都是用多线程,现在得改成多进程。而且进程之间的通信怎么设计,如何才能最大程度对进程管理和监控,感觉都比较麻烦,可能是我比较懒?你们有这种情况吗?就是不想敲代码。
在网上很少看到有人专门做分布式底层开发的人,所以我想着,要不组个群?感兴趣的可以私信我,入群,一起探讨分布式软件研发过程中遇到的设计问题,也许我该把设计看作一种艺术,来认真对待,可能就不会那么手懒了。
最近一段时间确实有点浮躁,有点飘了。代码敲的越来越少,无法做到心无旁骛。也许我们需要一些志同道合的朋友一起搞,会更有趣?
欢迎有大数据相关开发的问题咨询我。我有一个900人的群,一直在做免费帮助解决问题这件事。不过群里虽然有不少大数据的人,但是基本没几个提问题的,可能他们还不是真的在做大数据开发。
我希望有更多的大数据开发,专注于这一行业,共同推进大数据的行业发展和软件使用,而不是一堆所谓的假专家,在高谈阔论。