In my opinion, the client SDK has more purposes than just to facilitate HA. For example, it should implement interfaces for handling Flume's avro format. The custom clients need to create flume events and customer terminal repositories want to extract data from Flume event. Currently the Avro RPC is hardwired into the Flume 'application' and avro source/sink. Ideally it should be part of this client SDK library so that custome client and repositories can be developed on top of it.
Further the SDK can also include interfaces that introspects event headers for customer decorators, once that functionality is implemented.
FLUME-988 : Client SDK should be an umbrella Jira, with failover and others as sub-task ...