Обновления
v1.0.1
Изменения
- Протокол Bolt: состояние
api.NoHealthUpstreamCode
теперь сопоставляется с ResponseStatusNoProcessor
(#2018) [@antJack].
Исправления ошибок
- При запуске и работе MOSN по-прежнему должны разрешаться регистрация обратных вызовов для
AppendGracefulStopStage
и AppendBeforeStopStage
(#2029) [@rayowang].
- В журнале ошибок при панике корутины используются неверные переменные (#2019) [@antJack].
v1.0.0
Изменения
- Добавлена поддержка GoAway в протоколе Bolt, которую можно включить через конфигурацию proxy (#1993) [@z2z23n0].
- Поддержка большего количества конфигураций для проверки работоспособности HTTP-протокола (#1999) [@dengqian].
- Реализован Admin API для просмотра версии (#2002) [@songzhibin97].
- Изменены коды возврата при неудачной попытке горячего обновления (#2006) [@doujiang24].
- Добавлен статус, указывающий на то, было ли горячее обновление инициировано активно или нет (#2003) [@doujiang24].
- Поддерживается команда Stop (#1990) [@Jun10ng].
Исправления ошибок
- Исправлена ошибка в StrictDnsCluster, когда при наличии нескольких доменных имён DNS результаты обновления домена были неправильными (#1994) [@Jun10ng].
- Исправлена проблема с очисткой общей памяти в сценарии горячего обновления, которая приводила к ошибкам (#2011) [@nejisama].
v0.27.0
Новые функции
- MOSN теперь поддерживает версию istio v1.10.6 по умолчанию. Быстрое переключение версий istio возможно с помощью команды make. Также поддерживается версия istio v1.5.2 (#1910) [@nejisama].
- Добавлено новое правило маршрутизации, которое позволяет изменять заголовки запросов и ответов с использованием переменных (#1946) [@MengJiapeng].
- Для проверки работоспособности Upstream добавлена возможность настройки интервала между первыми проверками (#1942) [@rickey17].
- Добавлены новые способы проверки работоспособности на основе HTTP-протокола (#1942) [@rickey17].
- Расширена возможность создания TLS Context при создании функций Listener и соединения (#1877) [@antJack].
- Функции создания Listener и подключения поддерживают расширения (#1877) [@antJack].
- XProtocol теперь поддерживает изящное завершение работы, а MOSN — изящное закрытие (#1922) [@doujiang24].
- Интегрирован Holmes, который автоматически выполняет pprof (#1978) [@doujiang24].
- Интерфейс SDS расширен новыми возможностями для синхронного получения сертификатов и их активного обновления (#1945) [@nejisama].
- TLS SNI теперь можно настраивать с расширением (#1910) [@nejisama].
Изменения
- Версия dubbo-go-hessian обновлена до v1.10.2 (#1896) [@wongoo].
- Новое поле IdleTimeout добавлено в конфигурацию кластера Upstream (#1914) [hui-cha].
- Конфигурация весов кластера и конфигурация по умолчанию перемещены в пакет config/v2 (#1970) [@jizhuozhi].
- Переменная RawData теперь доступна для настройки в реализации XProtocol (#1972) [@antJack].
- Новый параметр конфигурации для OriginalDst Filter: можно настроить использование локального адреса в качестве запасного варианта при переадресации на Listener (#1972) [@nejisama].
- Новый параметр конфигурации для OriginalDst Cluster: можно изменить целевой адрес на localhost при пересылке запроса (#1972) [@nejisama].
- Отказались от старого режима vendor, теперь используется go.mod (#1997) [@nejisama].
Рефакторинг
- Реорганизованы управление состоянием и ожидаемыми этапами в MOSN, теперь они управляются модулем StageManager (#1859) [@doujiang24].
- Сигнальные расширения больше не предоставляются разработчикам, вместо этого поведение при получении сигналов стало расширяемым (#1859) [@doujiang24].
- Модуль ведения журнала использует независимый IoBuffer, чтобы избежать влияния проблем с журналом на повторное использование памяти запросов (#1936) [@nejisama].
- Реорганизация логики повторного использования в модуле SDS, что позволяет использовать один и тот же сертификат для создания различных конфигураций TLS (#1958) [@nejisama].
Оптимизация
- Пример модуля в Example теперь соответствует стандартам именования (#1913) [@scaat].
- Удалены неиспользуемые поля из некоторых структур соединений (#1811) [@doujiang24].
- Улучшена стратегия управления кучей в Edf балансировщике нагрузки (#1920) [@jizhuozhi].
- Теперь возвращается более подробная информация при возникновении ошибки при получении переменной (#1952) [@antJack].
- Оптимизирован сценарий памяти при повторном использовании: сброс после нормального ответа больше не влияет на память (#1956) [@wangfakang].
- Память maglev балансировщика нагрузки оптимизирована (#1964) [@baerwang].
- Ведение журнала улучшено: теперь iobuffer может выводить сообщения об ошибках, а также обрабатывать ошибки при ротации журналов (#1996) [@nejisama].
Устранение ошибок
- Проблема с закрытием соединения и продолжением его использования при больших значениях StreamID в HTTP2 решена (#1900) [@jayantxie].
- Ошибки форматирования в журнале HTTP-маршрутов устранены (#1915) [@scaat].
- Ошибка компиляции в xprotocol go plugin в примере устранена (#1899) [@nearmeng].
- Проблема, из-за которой OriginalDst не мог правильно получить IP, решена (#1931) [@alpha-baby].
- Вероятность зависания соединения в параллельных сценариях устранена (#1949) [@alpha-baby].
- Сбой синтаксиса в расширении интерфейса плагина istio исправлен (#1927) [LemmyHuang].
- Возможное возникновение исключения нулевого указателя при доступе к некоторым переменным в прокси-сервере устранено (#1953) [@doujiang24]. Перевод текста:
Соединение закрыто: невозможно правильно определить причину закрытия (#1772) [@wangfakang].
- Исправлено: проблема с нормальным перезапуском после остановки через Stop Listener (#1883) [@lemonlinger].
- Исправлено: ошибка в формате вывода отладочных журналов при ошибке в процессе разбора StrictDNS (#1963) [@wangfakang].
- Исправлено: вероятность ошибки деления на ноль из-за возможных проблем с вычислением веса балансировки нагрузки Edf (#1970) [@jizhuozhi].
- Исправлено: потенциальное возникновение исключения нулевого указателя при вызове setDeadline у Listener'а (#1981) [@antJack].
- Исправлено: опечатки (@Jun10ng, @fibbery).
- Исправлено: невозможность выполнения теста на гонку из-за слишком большого количества горутин в юнит-тесте (#1898) [@alpha-baby].
v0.26.0
Несовместимые изменения
Для более естественного добавления расширенных протоколов новая версия была переработана, и XProtocol больше не является протоколом, а представляет собой структуру для облегчения реализации расширений протокола.
Реализация расширенного протокола требует некоторых корректировок, подробности см. в руководстве по адаптации изменений протокола XProtocol (reports/xprotocol_0.26.0.md).
Новые функции
- Добавлен фильтр ip_access на основе ACL-контроллера для исходного IP-адреса (#1797) [@Bryce-huang].
- Разрешено расширение метода проверки Admin Api (#1834) [@nejisama].
- Поддержка замены фиксированных этапов через конфигурацию с помощью transcoder filter (#1815) [@YIDWang].
- Добавление метода SetConnectionState для соединений TLS в pkg/mtls/crypto/tls.Conn (#1804) [@antJack].
- Введение новых этапов выполнения after-start и after-stop с возможностью регистрации функций обработки на этих этапах (@doujiang24).
- Новый параметр конфигурации uds_dir для указания каталога сокетов домена Unix (#1829) [@dengqian].
- Поддержка загрузки плагинов Go и преобразование протоколов с динамическим выбором преобразователя протоколов (@Tanc010).
- Увеличение количества методов HTTP-протокола для более точного сопоставления динамических протоколов (#1870) [@XIEZHENGYAO].
- Динамическая настройка вышестоящего протокола (#1808) [@YIDWang].
- Динамическое определение максимального значения по умолчанию для HTTP (#1886) [@nejisama].
Изменения
- Настройка максимального размера заголовка запроса по умолчанию для протокола HTTP до 8 КБ (#1837) [@nejisama].
- Рефакторинг преобразования протоколов по умолчанию HTTP1 и HTTP2, удаление преобразования прокси и использование transcoder filter вместо него (@nejisama).
- Использование фабрики зарегистрированных преобразователей вместо зарегистрированных преобразователей (@YIDWang).
Исправленные ошибки
- Исправлена: возможность возникновения паники nil при повторном использовании буфера HTTP в условиях высокой параллельной нагрузки (@nejisama).
- Исправлена: ошибка получения значения переменной response_flag (#1814) [@lemonlinger].
- Исправлена: некорректная работа prefix_write в случае "/" (@Bryce-huang).
- Исправлена: риск случайного удаления reconfig.sock нового MOSN при ручном завершении работы старого MOSN во время процесса горячего обновления (#1820) [@XIEZHENGYAO].
- Исправлена: неправильная установка setupRetry в doretry при сбое запроса вверх по течению (#1807) [@taoyuanyuan].
- Исправлена: необходимость переноса конфигурации унаследованного старого MOSN в новую структуру MOSN после горячего обновления (@XIEZHENGYAO).
- Исправлена: отсутствие отправки resetStreamFrame вверх по потоку при отмене grpc клиента, что приводит к задержке завершения работы сервера (@XIEZHENGYAO).
- Исправлена: необходимость установки resetReason перед закрытием stream connection для получения реальной причины (#1828) [@wangfakang].
- Исправлена: выбор оптимального соответствия listener при наличии нескольких подходящих listeners, чтобы избежать ошибки 400 (@MengJiapeng).
- Исправлена: вероятность возникновения паники при одновременном чтении и записи карты в результате обработки широковещательных сообщений HTTP2 (@XIEZHENGYAO).
- Исправлена: утечка памяти в пуле соединений (binding connpool) в XProtocol (@Dennis8274).
- Исправлена: размещение close logger в конце, чтобы обеспечить вывод логов при закрытии экземпляра MOSN (#1845) [@doujiang24].
- Исправлена: возникновение паники из-за отсутствия инициализации codecClient при тайм-ауте PingPong типа соединения в XProtocol (#1849) [@cuiweixie].
- Исправлена: использование значения по умолчанию при пустом значении unhealthyThreshold (@Bryce-huang).
- Исправлена: предотвращение бесконечного цикла в алгоритме WRR балансировки нагрузки из-за неправильного выбора хоста (@alpha-baby).
- Исправлена: исключение hijack из прямого ответа после преобразования (@nejisama).
- Исправлена: предпочтение других здоровых хостов при высоком весе нездорового хоста в EDF wrr (@lemonlinger).
- Исправлена: сбой прослушивания из-за ошибки в получении имени файла CACert в Istio LDS, приводящей к невозможности приёма запросов (#1893) [@doujiang24].
- Исправлена: невозможность остановки goroutine в STRICT_DNS_CLUSTER при разборе DNS, вызывающая проблемы с host (@bincherry).
v0.25.0
Новые функции
- Возможность удаления указанных полей в запросе через настройки маршрутизации (@wangfakang).
- Поддержка перезагрузки WASM (@zu1k).
- Интеграция с SEATA TCC, поддержка протокола HTTP (@dk-lockdown).
- Трассировка boltv2 с поддержкой протокола tracelog. ГРП-фреймворк: добавлены фильтры статистики метрик
Внесены следующие изменения:
— добавлены расширения фильтров для сбора статистики метрик в ГРП-фреймворке (@wenxuwan);
— добавлена поддержка разбора кластера XDS, включая поддержку связанных полей DNS (@antJack).
Рефакторинг
Проведены следующие работы:
— проведено разделение кода ядра MOSN и кода, связанного с введением xDS, от кода Istio (@nejisama);
— обновлена версия proxy-wasm-go-host (@zhenjunMa);
— изменена логика конфигурации networkfilter для поддержки добавления и запроса интерфейсов (@antJack).
Оптимизация
Выполнены следующие действия:
— в Makefile режим выполнения заменён на «mod vendor» вместо «GO111MODULE=off» (@scaat);
— часть заархивированных данных перенесена в каталог mosn.io/pkg (@nejisama);
— оптимизирована функция балансировки нагрузки EDF: при первом выборе машины используется случайный выбор (@alpha-baby);
— повышена производительность функции балансировки нагрузки EDF (@alpha-baby);
— скорректирована обработка запросов и ответов на сердцебиение boltv2 (@nejisama);
— улучшено управление повторными попытками и оптимизация запросов Unary в HTTP2 (@XIEZHENGYAO);
— при установке GOMAXPROCS через переменную среды игнорируется ограничение на количество процессоров (@wangfakang);
— оптимизировано использование памяти при создании подмножеств (@dzdx);
— проведена оптимизация ГРП-фреймворка для обеспечения независимого запуска разных Listener на одном сервере (@nejisama).
Исправление ошибок
Исправлены следующие проблемы:
— исправлена проблема зависания при повторных попытках, когда возвращаемый адрес машины пуст (@XIEZHENGYAO);
— устранена ошибка обработки соединения в пуле сообщений (@RayneHwang);
— решена проблема паники при отсутствии инициализации драйвера трассировки (@nejisama);
— исправлены ошибки данных при построении исключений в ответе boltv2 (@nejisama);
— устранены проблемы с обработкой исключений при сбоях соединения HTTP2 (@XIEZHENGYAO);
— исправлены опечатки (@jxd134, @yannsun);
— исправлен вывод ResponseFlag в RequestInfo (@wangfakang);
— устранена проблема с пересчётом длины битов при пустых данных в кодировании протокола bolt/boltv2 (@hui-cha).
Версия 0.24.0
Новые функции
Добавлены следующие возможности:
— поддержка сбора информации OpenTracing с помощью Jaeger (@Roger);
— добавлен новый режим конфигурации переменных для маршрутизации, позволяющий изменять результаты маршрутизации путём изменения переменных (@wangfakang);
— обеспечена поддержка сопоставления портов в виртуальном хосте для соответствия маршрутам (@jiebin);
— реализована фильтрация envoy: header_to_metadata (@antJack);
— поддерживается горячее обновление UDS (@taoyuanyuan);
— добавлено логическое распределение нагрузки для подмножества, использующее список всех машин при отсутствии соответствия метаданным (@nejisama);
— обеспечивается изящное закрытие MOSN в ГРП-фреймворке (@alpha-baby).
Улучшения
Реализованы следующие улучшения:
— усовершенствован режим обновления проверки здоровья при изменении конфигурации кластера (@alpha-baby);
— добавлен интерфейс OnConnectionEvent в api.Connection (@CodingSinger);
— стратегия резервного распределения нагрузки по весу заменена на обычную стратегию распределения нагрузки (@alpha-baby);
— расширен тип значения интерфейса в модуле переменных MOSN (@antJack);
— подмножество использует ту же стратегию резервного распределения при определении количества машин и их наличия (@antJack).
Устранение ошибок
Устранены следующие проблемы:
— фильтр потока dubbo теперь автоматически распознаёт протоколы (@Thiswang);
— исправлено некорректное поведение при распределении нагрузки в режиме опроса при параллельной работе (@alpha-baby);
— устранено исключение при анализе адресов Unix (@taoyuanyuan);
— исправлена ошибка, из-за которой короткие соединения не работали в HTTP1 (@taoyuanyuan);
— память больше не утекает после разрыва соединения или разрушения канала при использовании TLS SM3 с комплектом National Security Bureau (@ZengKe);
— HTTP2 теперь поддерживает повторные попытки при сбросе соединения или разрыве канала (@taoyuanyuan);
— информация о хосте, полученная из пула соединений, теперь отображается правильно (@Sharember);
— предотвращено неправильное возвращение данных из кластера при выборе веса (@alpha-baby);
— проблема с тайм-аутом конфигурации маршрута XProtocol теперь устранена (@nejisama). Оптимизация Quick Start Sample
@nejisama
Оптимизация обработки контекста по умолчанию при маршрутизации
@nobodyiam
Оптимизация создания функции интерфейса Subset LoadBalancer
@alpha-baby
Добавление примера использования плагина so для расширения протокола
@yichouchou
Оптимизация способа получения переменной среды GOPATH в make-файле
@bincherry
Поддержка архитектуры darwin + arrch64
@nejisama
Оптимизация метода открытия журнала
@taoyuanyuan
Исправление ошибок
Исправление проблемы с обработкой URL-адресов, связанной с кодировкой
@morefreeze
Исправление ошибки чувствительности к регистру при обработке URL-адресов
@GLYASAI
Устранение утечки памяти в SM4-комплекте при обработке исключений
@william-zk
v0.22.0
Новые функции
Новые возможности расширения Wasm
@antJack
Новый x-bolt протокол в XProtocol, поддерживающий кодирование и декодирование на основе Wasm
@zonghaishang
Возможность автоматического перенаправления сообщений на основе SO_ORIGINAL_DST при неудачной попытке автоматического распознавания протокола
@antJack
Расширение XProtocol с поддержкой режима Go Plugin
@fdingiit
Новая сетевая расширяемая прослойка
@wangfakang
Поддержка Istio xDS v3 API
@champly (ветка: istio-1.7.7)
Оптимизация
Удаление избыточного пути очистки в конфигурации StreamFilter
@eliasyaoyc
Поддержка единого обратного вызова для настройки StreamFilterChain
@antJack
FeatureGate поддерживает различные этапы запуска, устраняя глобальную блокировку состояния FeatureGate
@nejisama
Добавлена поддержка трассировки в модуле Http2
@OrezzerO
Рефакторинг
Добавлен StageManager, разделяющий процесс запуска MOSN на четыре настраиваемых этапа
@nejisama
Унификация типов в XProtocol и перемещение их в пакет mosn.io/api
@fdingiit
В интерфейсе XProtocol добавлен метод GetTimeout вместо предыдущего способа получения переменных
@nejisama
Исправление ошибок
Исправлена проблема конфликта одновременных запросов в прокси
@nejisama
Исправлены уязвимости безопасности при обработке URL
@antJack
Исправлен конфликт одновременного доступа при сохранении конфигурации маршрутизатора
@nejisama
v0.21.0
Оптимизация
Обновление sentinel до версии 1.0.2
@ansiz
Сокращение буфера чтения tls для уменьшения потребления памяти tls
@cch123
Увеличение количества комментариев и упрощение реализации пула соединений в xprotocol
@cch123
Обновлены версии mosn registry
@cadeeper @cch123
Реорганизация
Улучшена логика сопоставления заголовков маршрутизации, обеспечивающая поддержку универсальных маршрутов RPC
@nejisama
Удалены некоторые константы, добавлены новые константы для описания переменных
@nejisama
Реорганизован модуль ограничения скорости, обеспечивающий поддержку пользовательских обратных вызовов и расширений для реализации пользовательских фильтров, контекстных модификаций и т. д.
@ansiz
Исправление ошибок
Исправлена ошибка в статистике метрик при возникновении запроса
@cch123
Исправлена ошибка внедрения переменных в HTTP-протоколе и ошибка, из-за которой HTTP2 не поддерживал перезапись маршрута
@nejisama
Новые возможности
Поддержка Domain-Specific Language для маршрутизации
@CodingSinger
StreamFilter поддерживает загрузку динамических библиотек, написанных на Go
@CodingSinger
VirtualHost в конфигурации маршрутизации поддерживает конфигурацию per_filter_config
@machine3
Поддерживает протоколы dubbo thrift
@cadeeper
v0.20.0
Оптимизация
Оптимизирована обработка адресов TCP, включая обработку сбоев адресации с использованием префиксов перед попыткой разрешения UDS
@wangfakang
Оптимизирован интервал попыток соединения в пуле соединений
@nejisama
Обеспечена возможность глобального отключения циклического режима записи
@nejisama
Оптимизированы примеры конфигурации и тестовые случаи для автоматического определения протоколов
@taoyuanyuan
Переменные заголовка запроса заменены более эффективным механизмом
@CodingSinger
Буфер каналов WriteBufferChan был объединён в пул для снижения нагрузки
@cch123
Информация о сбоях обработки в MOSN добавлена в TraceLog
@nejisama
Канал завершения чтения добавлен в обработку HTTP-протокола
@alpha-baby
Усилена функция ротации журналов
@nejisama
Реорганизация
Версия Go обновлена до 1.14.13
@nejisama
Способ расширения маршрутизации изменён с расширения цепочки маршрутов на расширение обработчиков маршрутов, что позволяет настраивать различные обработчики маршрутов
@nejisama
Изменена конфигурация расширения MOSN для обеспечения последовательного анализа
@nejisama
Исправление ошибок
Ошибка в dubbo после обновления до версии 2.7.3, из-за чего провайдер стал недоступен @cadeeper
- Исправление проблемы, когда в режиме netpoll ошибки приводили к обработке UDS-соединений как TCP-соединений @wangfakang.
- Исправление проблемы с некорректным получением HTTP-заголовка, когда он был установлен в пустую строку @ianwoolf.
Новые функции
- Поддержка переноса конфигурации между старыми и новыми версиями MOSN через UDS, что решает проблему невозможности плавного обновления при использовании XDS для получения конфигурации @alpha-baby.
- Поддержка автоматического определения протокола XProtocol @cadeeper.
- Поддержка настройки параметра keepalive для XProtocol @cch123.
- Более детальное отслеживание времени использования @nejisama.
- Метрики загружаются по мере необходимости, чтобы избежать переполнения пространства метрик при большом количестве сервисов @champly.
- Добавление функции установки значения по умолчанию для размера пула соединений XProtocol @cch123.
- Поддержка режима netpoll @cch123.
- Поддержка широковещательной функции @dengqian.
- Получение конфигурации TLS из ответов LDS @wZH-CN.
- Новый ответ ACK в SDS @wZH-CN.
v0.19.0
Оптимизация
- Использование новейших методов оптимизации памяти для TLS @cch123.
- Оптимизация журнала прокси для уменьшения утечек памяти @taoyuanyuan.
- Увеличение максимального ограничения на количество подключений @champly.
- При неудачной попытке получить переменную AccessLog используется «-» вместо неё @champly.
- MaxProcs поддерживает автоматическое определение на основе ограничений использования CPU @champly.
- Возможность указать кластер Istio для сети @champly.
Рефакторинг
- Рефакторинговый фреймворк StreamFilter для снижения зависимости между фреймворком streamfilter и прокси, позволяя другим сетевым фильтрам повторно использовать фреймворк stream filter @antJack.
Исправления ошибок
- Исправлена ошибка при получении URL в HTTP Trace @wzshiming.
- Исправлена проблема, когда при разборе конфигурации xds не анализировался тайм-аут соединения @dengqian.
- Исправлена ошибка, возникающая при получении переменной Hostname @dengqian.
- Исправлена ошибка, когда tcp proxy некорректно закрывал соединение @dengqian.
- Исправлен недостаток конфигурации по умолчанию в mixer filter, вызывающий проблему с нулевым указателем @glyasai.
- Исправлена проблема с отсутствием корректной установки Content-length в прямых ответах HTTP2 @wangfakang.
- Исправлена проблема с нулевым указателем в методе getAPISourceEndpoint @dylandee.
- Исправлена проблема со слишком большим количеством таймеров, приводящая к увеличению использования памяти при накоплении записей @champly.
- Исправлена проблема с отсутствующими статистическими данными при получении невалидных ответов от Dubbo Filter @champly.
v0.18.0
Новые функции
- Добавлена возможность расширения конфигурационного файла MOSN @nejisama.
- Введён инструмент настройки MOSN для улучшения опыта настройки пользователей mosn/configure @cch123.
Оптимизация
- Избегание многократного копирования тела HTTP во время обработки HTTP-протокола @wangfakang.
- Обновление пакета
github.com/TarsCloud/TarsGo
до версии 1.1.4 @champly.
- Дополнены юнит-тесты для пула подключений @cch123.
- Уменьшение использования памяти TLS-соединениями за счёт использования пула памяти @cch123.
- Сокращение критического размера процесса обработки потока xprotocol для повышения производительности @cch123.
- Удаление избыточного параметра в методе
network.NewClientConnection
и удаление метода Dispatch
в структуре streamConn
с проверкой ALPN @nejisama.
- Добавление API TerminateStream в
StreamReceiverFilterHandler
, позволяющего асинхронно закрывать поток, передавая HTTP code во время обработки потока @nejisama.
- Введение логики понижения уровня при неудачном TLS-рукопожатии на стороне клиента @nejisama.
- Изменение способа вычисления хеш-значения TLS @nejisama.
- Исправление опечатки в disable_log admin api @nejisama.
Исправления ошибок
- Исправлено неудачное выполнение команды
go mod tidy
@champly.
- Исправлено сообщение об ошибке
ResourceExhausted: grpc: received message larger than max
, возникающее при получении больших сообщений (более 4M) от XDS @champly.
- Исправлено отсутствие тестов на устойчивость к ошибкам @wangfakank.
- Исправлено неправильное поведение при установке
MOSNConfig.servers[].listeners[].bind_port
в значение false @alpha-baby.
- Увеличено время ожидания для локальных записей, предотвращая OOM из-за большого количества горутин @cch123.
- Исправлена бесконечная петля, вызванная таймаутом TLS @nejisama.
- Исправлена проблема с неизменёнными данными после использования метода SetData в struct
dubbo.Frame
@lxd5866. Запрос:
申请 @wangfakang
- 优化 SDS Client 使用读写锁获取 @chainhelen
- 更新 hessian2 v1.7.0 库 @cch123
- 修改 NewStream 接口, от обратного вызова до синхронного вызова @cch123
- 重构 XProtocol 连接池, поддержка pingpong режима, мультиплексирования и привязки соединения @cch123
- 优化 XProtocol мультиплексирование, поддержка настраиваемого количества соединений на одном хосте по умолчанию 1 @cch123
- 优мизация регулярных выражений маршрутизации, избегание избыточных конфигураций @wangfakank
Перевод:
Заявка от [@wangfakang]:
— оптимизация использования блокировок чтения-записи для SDS Client от [@chainhelen];
— обновление библиотеки hessian2 до версии 1.7.0 от [@cch123];
— изменение интерфейса NewStream с режима обратного вызова на синхронный вызов от [@cch123];
— рефакторинг пула соединений XProtocol с поддержкой режимов pingpong, мультиплексирования и привязки соединений от [@cch123];
— оптимизация мультиплексирования XProtocol, поддержка настраиваемого числа соединений на одном узле по умолчанию равного 1 от [@cch123];
— улучшение регулярных выражений для маршрутизации, предотвращение избыточных настроек от [@wangfakank].
Примечание: в запросе присутствуют гиперссылки, специальные теги форматирования в markdown, которые не были переведены. Административный API
Вывод:
@dengqian: добавлен интерфейс для вывода текущего числа запросов прокси.
@zonghaishang: добавлена поддержка заголовка HostRewrite.
Оптимизация
Вывод:
@wangfakang, @wenxuwan: обновлены зависимости tars, оптимизирован вывод логов прокси.
Время по умолчанию для DNS Cache изменено на 15 секунд.
Оптимизировано сопоставление параметров HTTP-маршрута.
Обновлена библиотека fasthttp.
Оптимизирован процесс пересылки запросов Dubbo.
Добавлена возможность настраивать максимальный размер тела запроса HTTP.
Исправление ошибок
Вывод:
Исправлены ошибки, связанные с обработкой attachment в Dubbo Decode.
Устранена проблема, из-за которой поток мог быть создан до установления соединения HTTP2.
Исключена ситуация, когда при обработке HTTP2 возникал пустой указатель на трейлер.
Обработаны нестандартные заголовки HTTP-запросов.
Исправлена ошибка, приводящая к панике при разрыве соединения во время обработки HTTP-запроса.
Решена проблема с блокировкой чтения и записи в реестре Dubbo.
v0.13.0
Новые функции
Вывод:
Поддержка Strict DNS Cluster.
Обработка потоков с использованием GZip Stream Filter.
Бета-версия обнаружения сервисов Dubbo.
Поддержка изоляции потока при одномашинном сбое.
Интеграция с Sentinel для ограничения потока.
Оптимизация
Вывод:
Улучшена реализация EDF LB.
Административный API оптимизирован для получения конфигурации.
Изменён режим обновления состояния хоста с асинхронного на синхронный.
Обновление библиотеки Dubbo для оптимизации производительности Dubbo Decode.
Метрики в Prometheus оптимизированы для более эффективного вывода данных.
Улучшено управление состоянием MOSN.
Исправление ошибок
Вывод:
Исправлен конфликт параллелизма при регистрации обратного вызова для проверки здоровья.
Ошибка, связанная с некорректной обработкой пустых конфигураций, устранена.
Проблема с DUMP при длинных значениях ClusterName/RouterName решена.
Ошибки при получении протокола XProtocol исправлены.
При создании StreamFilter контекст теперь обрабатывается корректно.
v0.12.0
Новые функции
Вывод:
Поддержка Skywalking.
Добавлен этап выполнения Receive Filter после выбора хоста в MOSN маршрутизации.
Реализована поддержка потоковой передачи HTTP2.
Интерфейс KnownFeatures добавлен в FeatureGate для отображения текущего состояния.
Введён способ получения ресурсов запроса (PATH, URI, ARG) без привязки к конкретному протоколу.
Представлены новые алгоритмы балансировки нагрузки: ActiveRequest LB и WRR LB.
Оптимизация
Вывод:
XProtocol оптимизирован для улучшения работы с сердцебиением.
Зависимость от Dubbo обновлена до версии 1.5.0.
API адаптирован для предоставления информации о состоянии хоста.
Функции плавного отключения улучшены.
Логика выбора хоста упрощена.
Производительность установления HTTP-соединений повышена.
Цикл ротации журналов оптимизирован.
Проведена работа над типографическими ошибками.
Исправление ошибок
Вывод:
Исправлена проблема с внедрением ошибочной конфигурации xDS.
Ошибка с зависанием HEAD метода в HTTP устранена.
Проблемы с отображением StatusCode в XProtocol решены.
Исправлено некорректное поведение DirectReponse при повторных попытках. v0.11.0
Новые функции
- Поддержка расширения Listener Filter, возможность прозрачного перехвата на основе Listener Filter @wangfakang.
- В механизме переменных добавлен метод Set @neverhook.
- При сбое SDS Client автоматически выполняется повторная попытка и обработка исключений @pxzero.
- Улучшен TraceLog, поддерживается внедрение контекста @taoyuanyuan.
- Добавлена FeatureGate auto_config, динамически обновляемая конфигурация при включении этой функции сохраняется в начальной конфигурации @nejisama.
Рефакторинг
- Рефакторингу подвергся XProtocol Engine, также заново реализован SofaRPC протокол @neverhook:
- удалён фильтр SofaRpc Healthcheck, вместо него используется встроенный в xprotocol heartbeat;
- удалены исходные возможности протокола SofaRpc по преобразованию протоколов (protocol conv), добавлена основанная на stream filter реализация расширенных возможностей преобразования протоколов;
- в xprotocol добавлены idle free и keepalive;
- оптимизирован анализ протокола.
- Изменён метод Encode для HTTP2 протокола @taoyuanyuan.
- Упрощён интерфейс LDS @nejisama.
- Модифицирована модель маршрутизации, упразднён connection_manager @nejisama.
Оптимизация
- Оптимизирован динамический анализ доменных имён в upstream @wangfakang.
- Оптимизирована упаковка TLS, добавлены журналы ошибок, изменены таймауты совместимости @nejisama.
- Таймауты оптимизированы с использованием механизма переменных @neverhook.
- Зависимость Dubbo в библиотеке анализа обновлена до 1.5.0 @cch123.
- Новый скрипт миграции путей добавляет поддержку ОС @taomaree.
Исправление ошибок
- Исправлена проблема потери query string при пересылке HTTP2 протокола @champly.
v0.10.0
Новые функции
- Поддерживается многопроцессный режим плагинов.
- Начальная конфигурация поддерживает параметр service-meta.
- Абстрактный uds может быть смонтирован в режиме sds socket.
Рефакторинг
- Часть кода mosn основной библиотеки перемещена в пакет mosn.io/pkg (github.com/mosn/pkg).
- Определения части интерфейсов mosn перемещены в пакет mosn.io/api (github.com/mosn/api).
Оптимизация
- Базовый модуль журнала перемещён в mosn.io/pkg, улучшена реализация журнала в mosn.
- Улучшена работа FeatureGate.
- Реализована обработка сбоев при получении конфигурации SDS.
- Когда CDS динамически удаляет кластер, он синхронно останавливает проверку работоспособности соответствующего кластера.
- Обратный вызов функции обновления сертификата при срабатывании теперь включает конфигурацию сертификата в качестве параметра.
Исправление ошибок
- Проблема утечки памяти, возникающая при сбое SOFARPC Oneway запросов, устранена @champly.
- Проблема возврата 502 ошибки при получении нестандартного HTTP ответа исправлена @champly.
- Конфликт параллелизма, который мог возникнуть при настройке DUMP, исправлен @champly.
- Ошибка в статистике размера запроса и ответа TraceLog исправлена @champly.
- Проблема потери времени ожидания из-за одновременной записи соединения исправлена @champly.
- Ошибки сериализации исправлены @champly.
- Проблема чрезмерного использования памяти из-за сохранения слишком большого буфера при повторном использовании памяти во время чтения соединения исправлена @champly.
- Проблемы реализации Dubbo, связанные с XProtocol, оптимизированы @champly. Из GitHub.com/alipay/sofa-mosn в sofastack.io/sofa-mosn
Оптимизация
- Оптимизирована структура вывода журнала ошибок.
- Усовершенствована реализация анализа конфигурационного файла JSON.
- Оптимизирован процесс повторного использования памяти для сценариев с использованием больших буферов.
- При первом запуске оптимизировано использование общей памяти при обработке метрик.
Исправление ошибок
- Исправлена ошибка, из-за которой уровень журнала ProxyLogger не мог быть динамически обновлён.
- Исправлена ошибка, которая могла привести к панике из-за возможного цикла чтения и записи соединения.
- Исправлена ошибка, при которой одновременное удаление нескольких кластеров могло неправильно повлиять на работу.
- Исправлена ошибка в подсчёте количества активных запросов в метриках при параллельной работе.
- Исправлена ошибка, когда соединение могло вызвать панику при сбросе или получении ответа одновременно.
v0.4.2
Новые функции
- Поддержка новой модели конфигурационных файлов:
- Конфигурация кластера может быть установлена как отдельный каталог.
- Маршрутная конфигурация может быть установлена как отдельный каталог.
- Поддерживается несколько конфигураций сертификатов.
- Обеспечена совместимость со старой моделью конфигурационных файлов.
- Добавлены базовые сведения о метриках:
- Версия.
- Используемая версия Go.
- Состояние работы MOSN.
- Адрес прослушивания.
- Реализована фильтрация метрик.
- Регистрация изменений состояния MOSN теперь сопровождается обратным вызовом.
- Включен режим Request oneway.
- Уровень журнала ошибок теперь можно массово изменять или массово отключать доступ к журналу.
Рефакторинг
- Реорганизован поток прокси-серверов:
- Каждый запрос обрабатывается отдельным Goroutine.
- Вместо обратных вызовов используется конечный автомат, что делает обработку запросов последовательной.
- Переработана модель выбора пула соединений, чтобы избежать выбора в пользу неисправных бэкэндов.
Оптимизация
- Улучшена производительность вывода метрик.
- Улучшен вывод журнала ошибок.
- Повышена производительность разбора протокола SOFA RPC.
- Расширена реализация контекста, снижена вложенность уровней при совместимости со стандартным контекстом, улучшена производительность.
Исправления ошибок
- Исправлены ошибки в разборе части конфигурации JSON.
- Исправлен баг, который мог привести к утечке Goroutine в определённых сценариях HTTP.
- Исправлена проблема, которая могла вызвать панику в случае параллельного выполнения операций ввода-вывода.
- Исключено дублирование информации HOST.
v0.4.1
Новые функции
- Метрики поддерживают вывод в формате Prometheus.
- Метрики позволяют исключать конфигурации.
- Динамическое включение и выключение журналов, а также динамическая настройка уровня журнала ошибок.
- Протокол HTTP поддерживает 100 continue.
- Поддерживается протокол Tars.
- Соединения SOFARPC отправляют пульс в режиме ожидания.
- Создаются соединения на основе подпротоколов SOFARPC.
- Новый способ плавного обновления.
- Реализация активного мониторинга здоровья расширяется, по умолчанию используется tcp dial.
- Модуль памяти расширяется.
- Балансировка нагрузки расширяется, по умолчанию используются алгоритмы маршрутизации.
- Анализ конфигурационных файлов расширяется, по умолчанию используется анализ JSON.
Реорганизация
- Структура пакета stream была переработана, некоторые API-интерфейсы были изменены.
- Логирование было преобразовано в асинхронный режим.
- Был переработан модуль преобразования xDS.
- Была переработана реализация цепочки маршрутов.
- Некоторые общие функции были перемещены в каталог utils.
Оптимизация
- Маршрут сопоставления оптимизирован для поддержки сопоставления KV в определённых сценариях.
- Коды состояния запроса унифицированы и преобразованы в стандартные коды состояния HTTP.
- Производительность Tracer была улучшена.
- Персистентность конфигурационных файлов была оптимизирована.
- Скорость динамического обновления списка бэкэнд-машин была увеличена.
Исправления ошибок
- Исправлена тупиковая ситуация в workpool.
- Исправлено неправильное управление трейлером ошибки HTTP2.
- Параллельное использование буфера больше не вызывает проблем.
v0.4.0
Новые функции
- Через HTTP2 поддерживается gRPC.
- Автоматическое распознавание протоколов HTTP и HTTP2.
- Трассировщик для протокола SOFA RPC.
- Дополнительные функции маршрутизации:
- Стратегия повтора настраивается.
- Настраивается стратегия прямого ответа.
- Добавление и удаление пользовательских полей в заголовке HTTP.
- Хост и URI протокола HTTP могут быть перезаписаны.
- Реализуется расширяемая маршрутизация.
- Ограничение QPS и ограничение скорости.
- Внедрение отказов.
- Поддержка Mixer.
- Получение конфигурации MOSN во время работы.
Реорганизация
- Архитектура протокола была переработана для поддержки расширения подпротокола SOFA RPC.
Оптимизация
- Поддержка протокола HTTP была оптимизирована, производительность увеличилась примерно на 30%.
- Поддержка протокола HTTP2 была оптимизирована, производительность увеличилась примерно в 100 раз.
- TCP Proxy был оптимизирован.
Исправления ошибок
- Ошибка плавного обновления была исправлена.
- Ошибки обработки протоколов HTTP и HTTP2 были исправлены.
- Были устранены некоторые потенциальные утечки памяти.
v0.3.0
Новые функции
- Плавный перенос метрик.
- Плавный перенос TLS.
Оптимизация
- Использование памяти и загрузка процессора при анализе протокола SOFARPC были оптимизированы.
v0.2.1
Новые функции
- Одноузловой переключатель TLS.
- Поддержка Dubbo через XProtocol.
v0.2.0
Новые функции
- Маршруты с настраиваемым весом.
- Клиент XDS реализован:
- Поддержка LDS.
- Поддержка CDS.
- Четырехуровневый фильтр расширяется.
- Расширение конфигурации TLS.
- Обработка ввода-вывода на основе epoll.
- Усиление возможностей расширения анализа протокола.
- XProtocol позволяет расширять протоколы.
Оптимизация
- Рамки для повторного использования памяти были реализованы, что снизило затраты на выделение памяти.
Опубликовать ( 0 )