Java Kafka Объект сериализатор и десериализатор

Я занимаюсь производством и потреблением кафки. Есть три способа сделать сериализацию и десериализацию.

1, пользовательский объект -> byte[] -> объект ( пример)

2, пользовательский объект -> String -> объект (я пытался. Работает)

3, пользовательский объект -> JsonNode -> объект ( пример)

Какой из них лучше? Спасибо

1 ответ

Решение

Вы можете попробовать сравнительный анализ, но я думаю, что все они примерно одинаковы.

  1. Object -> byte []: в этом случае происходят три вещи.
    1. Объект преобразуется в дерево объектов Json.
    2. Дерево преобразуется в строку.
    3. Строка преобразуется в байты.
  2. Object -> String: в этом случае происходят три одинаковые вещи.
    1. Я предполагаю, что вы используете объект сопоставления, который строит дерево объектов Json внутри и преобразует дерево в строку.
    2. Я также предполагаю, что вы используете StringSerializer, который позволяет kafka преобразовать строку в байты.
  3. Object -> JsonNode: опять же происходят три вещи.
    1. Объектный картограф в создании дерева объектов Json.
    2. JsonSerializer преобразует дерево в строку, а строку в байты.

Если вы заинтересованы в максимизации производительности, вы можете не использовать json в качестве механизма сериализации и исследовать protobuf. Пример с kafka protobuf находится здесь. Некоторые цифры, сравнивающие производительность protobuf с сериализацией json, приведены здесь.

Другие вопросы по тегам