右边的Conduit,现在Conduit的最大限制是它只支持k8s。而现在蚂蚁金服还没有普及k8s,我们现在还有很多系统是跑在非
k8s上的。第二是它的数据平面是Rust编写的,这个语言更加小众了,在座的同学有没有人了解Rust这门语言?或者听过。
(备注:现场大概十几个人举手)大概10%左右的同学听过。好,Rust语言排名大概在50名左右。这个语言本身还是蛮认可
的,我还很喜欢这个语言,它的一些特性还是非常有道理,如果掌握好还是可以写出非常好的产品,但是它的入门台阶会比较
高一点。这个地方比较讨厌的事情是说,因为这个语言本身比较小众,所以基本上是没办法从社区借力的。这里可以举个例
子,大家可以看一下Conduit的committer的人数,大概是25个左右,还包括像我这种只提交了几行代码的。Conduit从12月份
开源到现在已经有半年时间,半年时间只有这么多的committer,其中真正有贡献大概9到10个人,基本上都是他自己的员
工。也就说这个产品基本上没办法从社区借力,一个产品,如果大家一起来帮忙,其实很多的细节是可以完善的,但是
Conduit就卡在Rust语言上。
然后还是同样有技术栈的问题,因为这个原因,基本上Conduit我们也没法用了。
我们再看一下国内的在Service Mesh领域,其他的一些比较前卫的同学,他们的选择会是什么?
首先是华为,华为自己做了一套Golang版本,名字叫做Mesher。这是由他们之前的一套类库演进而来。它走的路线是,先有
类库和框架,然后加proxy,proxy打通了之后再慢慢的开始添加控制平面。这是一条非常非常标准的路线,我这边给一个词叫
做老成持重,因为这条路是最安全的:每一步都是基于现有的产品,很快就可以到下一个里程碑,然后每个里程碑都可以解决
一些实际问题,可以直接得到一些红利,这个方案是比较比较稳妥的。比如说第一步是把proxy做进去,有了这个切入口之
后,就在第一时间获取跨语言的红利,还有技术栈下沉的好处。然后控制平面的创新,可以在这个基础上慢慢往前做。
在对接Istio这一条上,现在华为的策略,我们现在从公开途径了解到的是:部分对接istio,也就是有一部分的API兼容Istio。但
是细节上还不太清楚,因为它的开源还没出来,目前得到的消息是,会在7月份开源。
第二个是新浪微博的Motan Mesh,他们也是Golang的,但他不太一样,是全新实现。他们用Go语言重新写了一把,主要原
因是因为它没有golang类库,Motan是基于Java的。
刚才看到的这两个产品,他们的思路大体上是相同的,差异在哪里?就是启动的时候是用已有的类库还是重新写?这两个选择
之间最大的麻烦在于编程语言,华为原来有go的类库,所以继续用golang包装一下就好了。但是新浪的类库用的是Java,而
sidecar选择的是go语言,所以只能重新做了。