A lot of the intent behind Urbit is to solve this (which is why I find it pretty interesting) and push things back towards decentralization.
Basically have a small cost to creating an identity in the network to prevent spam. The system is peer-to-peer where each user has their own 'server' on their local machine which interacts directly with the server's of other users.
It's a pretty neat idea, they recently released their first version.