My understanding is that any server in an Zookeeper Ensemble (3 or more Zookeeper instances used to form a SolrCloud) can be elected a leader or a follower at any time if the current leader disconnects from the Ensemble.
As far as I’m aware all nodes are kept up to date and updates to the leader are asynchronously made to the followers. Therefore this shouldn’t pose too much of an issue.
With regard to the performance issue, there are a number of things that can affect this. Solr needs a fair bit of RAM allocated to it so check this but also look at your index update strategy, how often rebuilds are being triggered (check the Sitecore logs) and also how many items you have in you index. You could look to shard your index if it’s very large or to have index updates only run on the leader but queries run on the followers. It depends on a number of things though.
This is a really great blog series on setting up solr cloud and part 4 includes tuning things like the JVM memory: http://www.chrissulham.com/sitecore-on-solr-cloud-part-4/