Комментарии 18
А почему не скажем cloudflare или cloudfront. _https://www.datanyze.com/market-share/site-delivery/Kazakhstan/cloudflare-cdn-market-share
Насколько я знаю оба провайдера дают API для провайдеров, также первый еще и сертификат выдает. Есть ли какие то преимущества вашей реализации?
По ряду причин, описанных в документации к lua-nginx-module из состава OpenResty, выгоднее всегда использовать локальные объявления.
Для того, чтобы быстро проверить объявления в вашем коде, можно воспользоваться утилитой lua-releng от тех же авторов.
Вывод для вашего кода:
Для того, чтобы быстро проверить объявления в вашем коде, можно воспользоваться утилитой lua-releng от тех же авторов.
Вывод для вашего кода:
vladislav@dt1:~$ ./lua-releng init.lua
WARNING: No "_VERSION" or "version" field found in `init.lua`.
Checking use of Lua global variables in file init.lua...
op no. line instruction args ; code
2 [2] SETGLOBAL 0 -1 ; getCdnHosts
4 [11] SETGLOBAL 0 -2 ; stringToTable
6 [27] SETGLOBAL 0 -3 ; valueExists
Checking line length exceeding 80...
vladislav@dt1:~$ ./lua-releng body_filter.lua
WARNING: No "_VERSION" or "version" field found in `body_filter.lua`.
Checking use of Lua global variables in file body_filter.lua...
op no. line instruction args ; code
1 [1] GETGLOBAL 0 -2 ; getCdnHosts
6 [1] SETGLOBAL 0 -1 ; allCdnHosts
7 [2] GETGLOBAL 0 -7 ; stringToTable
13 [2] SETGLOBAL 0 -6 ; replaceHosts
23 [3] SETGLOBAL 0 -9 ; cdnHost
27 [4] SETGLOBAL 0 -13 ; replaceEof
28 [6] GETGLOBAL 0 -9 ; cdnHost
31 [6] GETGLOBAL 0 -17 ; valueExists
32 [6] GETGLOBAL 1 -1 ; allCdnHosts
33 [6] GETGLOBAL 2 -9 ; cdnHost
38 [8] GETGLOBAL 1 -6 ; replaceHosts
48 [9] GETGLOBAL 8 -9 ; cdnHost
56 [13] SETGLOBAL 8 -13 ; replaceEof
66 [21] GETGLOBAL 5 -1 ; allCdnHosts
91 [28] SETGLOBAL 4 -13 ; replaceEof
94 [32] GETGLOBAL 1 -13 ; replaceEof
Checking line length exceeding 80...
body_filter.lua:3: cdnHost = ngx.var["cookie_" .. ngx.var["cdn_project"] .. "_cdn_host"]
body_filter.lua:18: local scriptStr = "<script src='/cdn.js' type='text/javascript'></script>" ..
body_filter.lua:21: "getFastestHost('" .. table.concat(allCdnHosts, "', '") .. "')" ..
body_filter.lua:25: local newStr, n, err = ngx.re.gsub(ngx.arg[1], "(</body>)", scriptStr .. "$1", "i")
Если я правильно понимаю, нужна автономка, а это сильно дороже.
Ещё не факт, что это вопрос решит. Оптимальный по числу хопов маршрут не всегда наилучший по скорости или стоимости трафика, так что вы всё правильно сделали.
Вообще BGP как раз даёт возможность получать оптимальный с точки зрения провайдера-получателя траффика маршрут, если пириться с ним напрямую. Позволяет, в том числе, делать много стыков с одним и тем же провайдером в географически разных регионах, и всё это даже может работать, если они не накосячат в настройках маршрутизации внутри своей сети.
Конечно, есть и минусы, например — нельзя перенаправить часть нагрузки, только всё или ничего. Нужна своя автономка, нужно пириться, нужно уметь настраивать всё это.
Конечно, есть и минусы, например — нельзя перенаправить часть нагрузки, только всё или ничего. Нужна своя автономка, нужно пириться, нужно уметь настраивать всё это.
Спасибо, идея хорошая. У нас файлы размещаются аналогично, только используем мы nginx вместе с tmpfs вместо memcached.
А заливку фоток на множество серверов каким образом делаете?
А заливку фоток на множество серверов каким образом делаете?
Шикарно. А если к всему этому добавить возврат статистики по пингам обратно на центральный сервер для статистики и мониторинга и добавить обработку не 200-х кодов переключением на второй по доступности хост, либо вообще реализовать подгрузку картинок через JavaScript на стороне клиента, разбрасывая нагрузку по запросам пропорционально пингам и при этом отправляя при переходах статистику по отличным от 200 кодам обратно в центр, решение будет совсем замечательным.
И вопрос: а почему не использовали полный редирект на точку присутствия у соответствующего провайдера и не стали раздавать статику с него, при этом проксируя динамику в центр. Ведь на связность в точках присутствия больше влияния чем на связность клиента и сервера? Да добавляется лишний элемент, который ещё нужно мониторить, но с центра кэшированием можно снять часть нагрузки…
И вопрос: а почему не использовали полный редирект на точку присутствия у соответствующего провайдера и не стали раздавать статику с него, при этом проксируя динамику в центр. Ведь на связность в точках присутствия больше влияния чем на связность клиента и сервера? Да добавляется лишний элемент, который ещё нужно мониторить, но с центра кэшированием можно снять часть нагрузки…
Это вот этот пиксель?
Mixed Content: The page at 'https://kolesa.kz/' was loaded over HTTPS, but requested an insecure image 'http://sync-eu.exe.bid/image?source=mgid&id=h4ly0I_tPEx7'. This content should also be served over HTTPS.
Зарегистрируйтесь на Хабре, чтобы оставить комментарий
Информация
- Сайт
- job.kolesa.kz
- Дата регистрации
- Дата основания
- Численность
- 201–500 человек
- Местоположение
- Казахстан
- Представитель
- Anel Kerimbekova
Что нам стоит CDN построить