Отказ от ответственности : я являюсь соучредителем и техническим руководителем проекта Cadence, а в настоящее время являюсь соучредителем / генеральным директором Temporal Technologies.
temporal.io является Вилка проекта Cadence от первоначальных основателей и технических руководителей проекта Cadence Максим Фатеев и Самар Аббас . Мы запустили Temporal Technologies и получили финансирование V C, так как считаем, что модель программирования, которую мы внедрили с помощью AWS Simple Workflow , Durable Task Framework , и проект Cadence имеет потенциал, который выходит далеко за рамки одной компании. Наличие коммерческой организации для продвижения проекта имеет важное значение для долговечности проекта.
Временная вилка обладает всеми возможностями Cadence, поскольку она постоянно сливается с ней. В нем также реализовано несколько новых функций.
Вот некоторые технические различия между Cadence и Temporal на момент первоначального выпуска Temporal fork (ожидается достижение рабочего состояния в 05/2020)
Все структуры Thrift заменены на протобуф
Все публичные c API Cadence используют Thrift. Комиссионный объект также хранится в БД в сериализованном виде.
Временно преобразовал все эти структуры в Буферы протокола . Это включает в себя объекты, хранящиеся в БД.
Протокол связи переключен с TChannel на gRP C
Cadence использует TChannel , который был протоколом мультиплексирования на основе TCP, который был разработан в Uber. TChannel имеет множество ограничений, таких как отсутствие поддержки безопасности и очень ограниченное количество языковых привязок. Это даже не рекомендуется даже в Uber.
Временное использование gRP C для всех межпроцессных коммуникаций.
Поддержка TLS
Cadence не поддерживает какую-либо коммуникационную безопасность, так как это ограничение TChannel.
Temporal поддерживает взаимный TLS и собирается поддерживать более продвинутые функции аутентификации и авторизации в будущем.
Упрощенная конфигурация
Временная переработка конфигурации сервиса. Некоторые из самых запутанных частей этого удалены. Например, отпадает необходимость конфигурировать семена членства. Временно каждый хост при запуске регистрируется в базе данных и использует список из базы данных в качестве начального списка.
Выпуск конвейеров
Cadence не проверяет публично выпущенные артефакты, включая изображения docker в качестве внутреннего конвейера выпуска, обеспечивают качество только встроенных артефактов. Он также не выполняет тестирование релизов для зависимостей, которые не используются в Uber. Например, интеграция MySQL не тестируется за пределами довольно неполных модульных тестов. То же самое относится к CLI и другим компонентам.
Temporal делает большие инвестиции в процесс выпуска. Все артефакты, включая полностью поддерживаемую матрицу зависимостей, будут проходить через конвейер полного выпуска, который будет включать многодневные стресс-прогоны.
Другая важная часть процесса выпуска - способность генерировать исправления для производства. вопросы. Возможность гарантировать качество таких исправлений и своевременно создавать все необходимые артефакты важна для всех, кто работает с Temporal на производстве.
Go SDK
Временная реализация следующие улучшения по сравнению с клиентом Cadence Go:
- Protobuf & gRP C
- Нет глобальной регистрации типов операций и рабочих процессов
- Возможность регистрации структуры действий экземпляр с рабочим. Это значительно упрощает передачу внешних зависимостей в действия.
- Рабочий процесс и перехватчики действий, которые позволяют реализовать такие функции, как настройка тайм-аутов через внешние файлы конфигурации.
- Имена типов действий и рабочих процессов не включают имена пакетов. Это значительно упрощает рефакторинг кода без внесения изменений.
- Большинство тайм-аутов, которые требовались Cadence, теперь являются необязательными.
- workflow.Await метод
Java SDK
В Temporal реализованы следующие улучшения по сравнению с клиентом Cadence Java:
- Рабочий процесс и аннотации действий, позволяющие объектам действий и реализаций рабочих процессов реализовывать не рабочие процессы и интерфейсы деятельности. Это важно для хорошей игры с такими AOP-средами, как Spring.
- Polymorphi c рабочие процессы и интерфейсы действий. Это позволяет иметь общий интерфейс для нескольких типов действий и рабочих процессов.
- Dynami c регистрация обработчиков сигналов и запросов.
- Перехватчики рабочего процесса и активности, которые позволяют реализовать такие функции, как настройка тайм-аутов через внешние файлы конфигурации.
- Улучшено создание имен типов операций и рабочих процессов
У нас много другие функции и клиентские SDK для других языков планируется. Вы можете найти нас в Temporal Slack Workspace .