Распределенная система, объявлять интерфейс в общем модуле ИЛИ объявлять 2 одинаковых интерфейса как у поставщика, так и у потребителя?

В распределенной системе объявляйте интерфейс в общем модуле ИЛИ объявляйте 2 одинаковых интерфейса в подсистеме провайдера и потребителя, какой путь более рекомендуется?

Я работаю в распределенной системе с Apache Dubbo, и я запутался в проблеме выше. "Подсистема потребителя" (работающая в собственной JVM) может вызывать методы в "подсистеме провайдера", если интерфейс этих методов зарегистрирован в Dubbo. Итак, сервис Dubbo основан на интерфейсе, у меня есть 2 варианта:

  1. Объявите интерфейс, скажем MyDubboServiceв общем модуле, скажем, my-comm, и добавить my-comm как библиотека зависимостей в "подсистеме потребителя" и "подсистеме провайдера". Затем внедрите и зарегистрируйте MyDubboService (Dubbo) в "подсистеме провайдера".
  2. декларировать MyDubboService в "подсистеме потребителя" и "подсистеме провайдера" два раза, затем внедрить и зарегистрировать MyDubboService (Dubbo) в "подсистеме провайдера".

Моя команда приняла вариант № 2 в качестве стратегии, но, на мой взгляд, вариант № 1 лучше, потому что эти преимущества:

  1. Гарантируйте, что интерфейс точно такой же с обеих сторон
  2. Избегайте дублированного кода.
  3. Выглядит более элегантно

Я понимаю, что вариант № 1 также имеет дефект, например, "открыл некоторые бесполезные методы для потребителя, который может не заинтересовать потребителя"

Так что я хочу знать, какой вариант лучше, или сказать, как мы решаем, какой путь выбрать, вариант № 1 или № 2?

Любые комментарии приветствуются, спасибо!

0 ответов

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