Компресия на трафика по TCP/IP връзка

Почти всяко уважаващо себе си бизнес приложение в наши дни използва връзка с база данни. Ако БД е на същата машина въобще не се замисляме за трафика, който се генерира, но ако свързаността е слаба (през Интернет чрез VPN или просто директна връзка с отдалечена машина), то това може да се превърне в сериозен проблем.

Разбира се, винаги има вариант да се оптимизира приложението и да работи с по-малки обеми от данни, но това изисква допълнително време и ресурси и рядко е лесно изпълнимо.

Едно друго и лесно решение за компресия и криптиране на връзката се дава от един open-source продукт – Zebedee. Последната версия е от 2005, но това съвсем не пречи да работи точно както се очаква:) . Сред хубавите черти е и това, че работи под Windows (като application и service) и под Linux.

Нека най-общо имаме следната конфигурация:
Клиент Сървър
като целта е данните, които се предават между Клиент-а и Сървър-а да са компресирани максимално.
Ще предполагаме, че на машината Сървър е стартиран Firebird server, който работи на порт 3050 (Разбира се – може да е всяко приложение, което слуша на TCP/IP port)

Инструкциите за подкарване на Zebedee се състоят в едва няколко точки:
1. Официалният сайт е : http://www.winton.org.uk/zebedee/ . От там може да се свали последната актуална версия 2.4.1 или 2.5.3
2. Инсталира се на машината клиент и машината сървър
3. На машината сървър се подсигурява порт 11965 да не е филтриран или блокиран от firewall (този порт може да се настрои при необходимост)
4. На машината сървър се стартира следното:
c:program fileszebedeezebedee -s -z 9
(При условие, че zebedee е инсталиран в директорията по подразбиране)
-z 9 ще осигури максимална компресия, което е достатъчно добре за всички ситуации, пък и при сегашните процесори не си заслужава да се използва по-ниска степен на компресия.
За получаване на повече статистическа информация може да се постави и параметър -v 4 и -d (за да не се detache-не от конзолата и да продължи да плюе информация)
5. На машината клиент се стартира следното:
c:program fileszebedeezebedee -z 9 8000:<сървър>:3050
(При условие, че zebedee е инсталиран в директорията по подразбиране)
6. Навсякъде, където досега сме се връзвали към <сървър>:3050 сега трябва да се връзваме към localhost:8000.

Горното е съвсем базов пример, колкото да се подкара и да се види, че работи. Допълнително може всички настройки да се изнесат в конфигурационен файл и да не се въвеждат на командна линия.
Другите възможности, които заслужават интерес са:
– работа като Windows service
– криптиране на връзката
– смяна на порта на тунела
– други

Ето и dump как се представя компресирането през zebedee за няколко минути работа с база данни през Интернет:
….
zebedee(2324/3028): read 53959 bytes (63560 expanded) in 1592 messages
zebedee(2324/3028): wrote 326821 bytes (1306955 expanded) in 1702 messages
….

Или в крайна сметка използването на zebedee ни позволява да намалим трафика в едната посока 4-кратно ! А това автоматично означава приложения, който са по-responsive и с по-бърз достъп до данните.

Update1:
Стартиране на zebedee като service се прави чрез изпълнението на следната команда
zebedee -n “Zebedee Server” “-Sinstall=c:server.zbd”
Горното ще създаде windows service с име Zebedee Server и ще прочете конфигурационния файл от c:server.zbd – трябва да е указан пълния път до файла!