开题
工作中遇到了一种场景,需要使用多语言版本客户端,而其中java
的版本使用到了flume
的二方包,考虑到其他语言开发的便捷性,准备移除flume
二方包依赖
改造
其实很多场景下使用flume
二方包仅仅是为了连接flume
并且往里面灌点数据,没有太多复杂的用法,那么需要解决的核心问题就是通信了。
要支持多语言,有很多方案可以选择:json
,xml
,protobuf
,thrift
等。考虑到性能及易用,这里使用的是thrift
。
flume
使用thrift
的描述文件是:
|
|
那接下来就简单多了:
通过thrift
工具生成指定语言版本所需的类,稍微包装下通信的client
的,就可以剔除flume
二方包了
最后
关于二方包,真是要吐个大槽。
考虑到你是为很多开发人员使用,所以应该尽可能的考虑灵活性,通用性,而不应该弄一个大而全的杂货铺:
你没必要为了用一个
gcd
方法就把commons-math
包引入进来
你没必要为了用Lists
,Maps
初始化就把guava引入进来
你没必要…
真的,如果你有幸写一个二方包,考虑下开发者的感受