人们使用Neo4j来管理企业架构。如果你还没有看到该演讲由托马斯·劳伦斯来自Amadeus的,那么你应该为自己观看。但是低层网络呢?我们可以使用Neo4j来建模物理网络中的路由吗?当然我们可以,今天我会告诉你如何。
我们将保持简单,只需要路由器,交换机,接口和服务器。路由器之间将具有“ROUTE_TO”关系。该关系将路由表包含为String Array。例如:[“10.175.112.0/20”,“10.175.108.0/22”,“10.175.112.0/20”,“10.182.14.64 / 26”...]。路由器与Interfaces之间也有“TRANSLATES_TO”关系(例如VLAN)具有ip和mac地址属性。接口与具有mac和port属性的交换机之间将具有“CONNECTS_TO”关系。最后,交换机还将具有与具有mac和port属性的服务器的“CONNECTS_TO”关系。服务器,如路由器,将具有IP地址属性。也许这张图片将有助于理解这一点:
在本练习中,让我们从一个ip为“10.175.64.2”的路由器开始,看看如何通过ip为“10.175.122.10”来访问服务器。这是我们网络的一部分图片:
我们将创建一个存储过程,通过查找我们的路由器和服务器开始。然后,我们将使用Traversal API创建TraversalDescription,它将深度探索图形,使用NetworkExpander扩展,我们将在下面讨论,并评估它遍历的路径,直到找到服务器节点。假设我们找到一些路径,我们将返回它们作为结果:
@Procedure(名称 = “com.maxdemarzi.router” ,模式 = 模式。READ)
@Description(“CALL com.maxdemarzi.router(from,to) - 遍历路径”)
public Stream < PathResult > router(@Name(“from”)String from,@ Name(“to”)String to){
节点 路由器 = db。findNode(标签。路由器,“ip”,来自);
节点 服务器 = db。findNode(标签。服务器,“ip”,to);
if(router != null && server != null){ </