In generally, when I want two objects or masses to maintain a specific distance from each other, I use springs. If I want an object to be attracted or repelled by another object (something that happens a lot in flocking behaviors for example), I use attractions. If you want the nodes in your cluster to maintain a fixed distance from the central point, then springs are good. Sometimes it makes sense to combine them. For example, I might use attraction to to prevent any two objects from getting too close, as well as keeping the objects onscreen (by repelling from each other, and attracting to the center of the screen), while at the same time, using springs to maintain a network of branch relationships.