Twitter приняла решение архивировать этот проект, так как он был построен на устаревшей технологической стеке, что делает его непрактичным для поддержки в текущем виде. Кроме того, мы заново разрабатываем этот проект внутренне, чтобы адаптировать его к новым сценариям использования для проверки наших услуг. По мере того, как мы будем развивать эти новые подходы, мы будем переоцёживать, как и когда следует перерелизировать эти новые решения как открытые исходные коды. Спасибо за ваше понимание. Мы больше не будем принимать pull requests или отвечать на issues для этого проекта.
Обратите внимание, что @puneetkhanduri, оригинальный автор этого проекта и бывший сотрудник Twitter, поддерживает собственную версию этого проекта, названную Opendiffy.
Для более подробного анализа Diffy ознакомьтесь с этой статьей.## Как работает Diffy?
Diffy действует как прокси, который принимает запросы, взятые из любого источника, который вы предоставите, и многоканально передает каждый из этих запросов в три различных экземпляра службы:
Когда Diffy получает запрос, он мультикастится и отправляется на ваш кандидат, основной и вторичный экземпляры. Когда эти службы отправляют ответы обратно, Diffy сравнивает эти ответы и ищет две вещи:
Diffy измеряет, насколько часто основной и вторичный экземпляры не согласуются друг с другом по сравнению с тем, насколько часто основной и кандидат не согласуются друг с другом. Если эти измерения примерно одинаковы, то Diffy определяет, что нет ничего не так и что ошибку можно игнорировать.## Как начать?
Скрипт example.sh, включённый здесь, собирает и запускает примерные серверы, а также экземпляр Diffy. Убедитесь, что следующие порты доступны (9000, 9100, 9200, 8880, 8881, & 8888) и запустите ./example/run.sh start
.
Как только ваш локальный экземпляр Diffy будет развернут, вы отправите ему несколько запросов, таких как curl --header "Canonical-Resource: Json" localhost:8880/json?Twitter
. Затем вы можете перейти в ваш браузер по адресу
http://localhost:8888, чтобы увидеть, какие различия наблюдаются между нашими примерными экземплярами.
Это было круто, но теперь вы хотите сравнить старую и новую версии своей собственной службы. Вот как вы можете начать использовать Diffy для сравнения трёх экземпляров вашей службы:
Разверните ваш старый код на localhost:9990
. Это ваш основной экземпляр.
Разверните ваш старый код на localhost:9991
. Это ваш второй экземпляр.
Разверните ваш новый код на localhost:9992
. Это ваш кандидат.
Скачайте последнюю версию бинарного файла Diffy с Maven Central или соберите свой собственный из исходного кода с помощью ./sbt assembly
.
Запустите бинарник Diffy с помощью следующих параметров командной строки:
java -jar diffy-server.jar \
-candidate=localhost:9992 \
-master.primary=localhost:9990 \
-master.secondary=localhost:9991 \
-service.protocol=http \
-serviceName=My-Service \
-proxy.port=:8880 \
-admin.port=:8881 \
-http.port=:8888 \
-rootUrl='localhost:8888'
Отправьте несколько тестовых запросов к вашему экземпляру Diffy на его прокси-порту: ``` curl localhost:8880/ваш/путь/к/приложению?с=параметрами_запроса
Обратите внимание на появление различий в вашем браузере по адресу http://localhost:8888.
Вы можете получить официальный образ Docker с помощью docker pull diffy/diffy
И запустить его с помощью
docker run -ti \
-p 8880:8880 -p 8881:8881 -p 8888:8888 \
diffy/diffy \
-candidate=localhost:9992 \
-master.primary=localhost:9990 \
-master.secondary=localhost:9991 \
-service.protocol=http \
-serviceName="Test-Service" \
-proxy.port=:8880 \
-admin.port=:8881 \
-http.port=:8888 \
-rootUrl=localhost:8888
Теперь вы должны иметь возможность обращаться к:
Для сборки из исходного кода вы можете запустить docker build -t diffy .
По причинам безопасности POST
, PUT
, DELETE
по умолчанию игнорируются. Добавьте -allowHttpSideEffects=true
к вашим аргументам командной строки для включения этих глаголов.
Если вы пытаетесь запустить Diffy через HTTPS API, требуемая конфигурация:
-service.protocol=https
И в случае, если порт HTTPS отличается от 443:
-https.port=123
Разрешено на условиях лицензии Apache License, Version 2.0 («лицензия»); вы не можете использовать этот софт, если вы не подчиняетесь условиям Лицензии.В соответствии с применимым законом или письменным соглашением, программное обеспечение, распространённое в соответствии с Лицензией, распространяется на условиях «КАК ЕСТЬ», БЕЗ КАКИХ-ЛИБО ГАРАНТИЙ ИЛИ УСЛОВИЙ ВОЗМОЖНОСТИ, как явных, так и подразумеваемых. См. Лицензию для конкретного языка, регулирующего права и ограничения, предусмотренные Лицензией.
Вы можете оставить комментарий после Вход в систему
Неприемлемый контент может быть отображен здесь и не будет показан на странице. Вы можете проверить и изменить его с помощью соответствующей функции редактирования.
Если вы подтверждаете, что содержание не содержит непристойной лексики/перенаправления на рекламу/насилия/вульгарной порнографии/нарушений/пиратства/ложного/незначительного или незаконного контента, связанного с национальными законами и предписаниями, вы можете нажать «Отправить» для подачи апелляции, и мы обработаем ее как можно скорее.
Комментарии ( 0 )