Он построен на базе Istio и Envoy и предназначен для интеграции в инфраструктуру микросервисов, обеспечивая управление трафиком, безопасность и поддержку AI-сервисов.
🔧 Основные возможности Higress
Интеграция с AI-сервисами: Higress поддерживает AI-ориентированные функции, включая интеллектуальное управление трафиком и безопасность контента.
- Поддержка WebAssembly (Wasm): Позволяет расширять функциональность шлюза с помощью плагинов, написанных на различных языках программирования.
- Соответствие стандартам: Поддерживает стандарты Ingress, Gateway API и Istio API, обеспечивая совместимость с другими решениями.
- Управление API: Предоставляет функции для управления API, включая аутентификацию, авторизацию и мониторинг.
🌐GitHub: github.com/alibaba/higress
🔗 Официальный сайт: higress.cn
@golang_google
Please open Telegram to view this post
VIEW IN TELEGRAM
В базе данных Dolt (аналог Git, но для SQL-таблиц) после рефакторинга один из бенчмарков (types_scan) внезапно стал работать на 30% медленнее. Причина? Казалось бы, невинная строчка кода.
📉 Что произошло
Метод GetBytes() начал вызывать ReadBytes() у интерфейса ValueStore. Всё выглядело логично, пока не включили профилировщик Go и не обнаружили странную активность:
🔍 runtime.newobject вызывался слишком часто → программа делала много лишних аллокаций в куче.
📦 Где зарыта собака
func (vs nodeStore) ReadBytes(...) ...
Этот метод использовал приёмник по значению (vs nodeStore). Это значит, что вся структура копировалась при каждом вызове метода, даже если она большая.
🚑 Как пофиксили
Просто поменяли на приёмник по указателю:
func (vs *nodeStore) ReadBytes(...) ...
Вуаля — аллокейшны исчезли, производительность восстановилась.
🧠 Вывод
❗ Методы с приёмником по значению = риск лишнего копирования и аллокаций
🛠 Даже один маленький метод может резко замедлить ваш код
🔍 Профилировка в Go — мощный инструмент. Используй pprof!
Полный разбор в блоге DoltHub
Подробнее про Dolt
@golang_google
Please open Telegram to view this post
VIEW IN TELEGRAM