37.1K subscribers
1.46K photos
33 videos
5 files
1.62K links
加入频道
👣Higress — это современный облачно-нативный API-шлюз с открытым исходным кодом, разработанный Alibaba.

Он построен на базе 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
👣 Оптимизация выделения памяти в Go: как одна строчка замедлила всё на 30%

В базе данных 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