Service plugin development


Where should I start from if I want to develop a new service plugin for InfluxDB. Even if the only answer is “read the code of the existing service plugins”, what would be the things to keep an eye on? What are the general principles for developing a new plugin?

Using JSON encoded data is too much overhead for the project I’m working on, but we like the rest of the InfluxDB, so we would want to keep using it if we could get some more performance out of it by getting rid of JSON (and even the Line Protocol) and create our own binary communication interface over TCP. By looking at the code of the existing plugins, I see that everything is being done using Protobuf in the bacground anyway. So if we could be able to create a plugin to cut out the middle man and use the thinnest interface possible between that raw data over TCP and the existing Protobuf implementation, it would be perfect for our needs.

But what’s the best way of approaching this problem? Any suggestions/hints/tips/tricks?