问:鉴于Trinity的路由交易使用的是最短路径模式,Celer白皮书中提到这种模式会引发网络拥堵、不平衡,那么Trinity的路由交易如何解决可能出现的网络拥堵与不稳定的问题?对此应该如何理解?
答:可以这样来理解:
1. Trinity路由算法是依据图论的基础来实现的。图能够很好表达分布式网络的连接状态及路径的可视化。
2. Trinity最短路径,是在全路径基础上按照收费最少原则来确定最短路径。在单一原则下的确会造成网络的不平衡和拥塞。
后续,Trinity会增加路径平衡算法来确保网路的畅通和平衡。
对于Celer的模式,Trinity属于预选路模式。一旦路径确定,后续节点不需要繁复的寻路过程,极大地提高网络效率。Celer到达下个节点的时候,节点还是需要对该数据报文的寻路计算。(Celer的网络寻路:《网络中任意一个节点只需要感知其相邻节点,并根据数学模型计算最佳下一跳节点。另外,在路由的过程中,不需要额外的协调方法,可以自然而然维护通道的平衡性。》摘自网络)
Trinity寻路只需考虑路径与路径之间的时效,途径节点的压力状态,就可以实现celer的路径计算。
严格来说Celer的寻路模式跟现有的路由器寻路模式相似。而Trinity的寻路模式属于大数据中寻求最优化解决方案。
在Celer方案中,我们设计一个模型:
我们有数据要从a发往g,设定在a刚要发出数据报文的时候p接入c,而且c-p之间的RTT最短。当c接收到数据报文的时候,在该模型中,c并不知道g具体在哪个位置。计算p为下一跳,p接收后,又会把数据报文重新发送给c。
同时在该模型也有很大可能出现个别节点的压力骤增,导致网络拥塞。见下图:
因为数学模型要建立必须需要一定的参数。设定上图各个节点都满足模型所需要的参数(除RTT)的情况下,那么RTT就是唯一能参考的参数。如果c要往g发送100条消息,那么这100条消息就都会沿c->a->b->d到达g。网络的平衡就被打破,如果c发送的数据更多,那么a,b,d,g就会形成处理瓶颈。
在Trinty网络中,按照现在选路原则。设定所有节点的话费都一样,也会得到c->a->b->d->g的路径。但是c能够知道到达g的所有路径,所以只需要更改选路原则(例:增加节点压力预测),就能分流一部分数据通过其他节点发送出去,恢复网络平衡。
3.关于状态通道的可视化描述,trinity团队目前有来自内部的和外部的多项改进提案,后续会在github上公开,会更好的听取社区的建议,但是目前这个阶段状态通道与大家理想中的状态通道还有差距,许多细节还在调整,所以关于状态通道的可视化描述会在后期合适的时机做出来。
领取专属 10元无门槛券
私享最新 技术干货