3 ms·
Versioning was the biggest disappointment for me. I just want a middleware layer that can handle clients of different versions reliably. Surely everyone has the
by rb808 8y ago
Versioning was the biggest disappointment for me. I just want a middleware layer that can handle clients of different versions reliably. Surely everyone has the same problem.
- aaaaaaaaaab 8y ago>Surely everyone has the same problem. Yes, we do. But the appropriate answer in most cases is "it's up to the business logic". Trying to solve it at the transport layer is futile.
- jcelerier 8y ago> Surely everyone has the same problem. it doesn't mean that there is a single solution that will satisfy everyone
- nly 8y agoAvro has a solution to this that I always thought was quite elegant. Schemas are external (serialized data isn't self-describing) but the library exploits this to it easy to read and write old versions. To quote the documentation: The library provides "a resolving decoder, which accepts calls for according to a reader's schema but decodes data corresponding to a different (writer's) schema doing schema resolution according to resolution rules in the Avro specification." Those resolution rules are defined here: https://avro.apache.org/docs/current/spec.html#Schema+Resolution https://avro.apache.org/docs/current/spec.html#Schema+Resolu... The downside, of course, is performance.