[ Поиск ] - [ Пользователи ] - [ Календарь ]
Полная Версия: Как лучше организовать хранилище айпи?
Страницы: 1, 2, 3
VELIK505
Надо организовать хранилище по сути только айпишников. 5 разных хранилиш.
есть 5 видов рекламок.
При клике сверочка с айпи если был за эти сутки клик с такого айпи то с рекла бабло не списывается.
разных видов реклам таких 5 штучек.
В них примерно идёт по 700к записей в сутки. Соответственно и обращений в сутки так же на проверку есть ли там такой.
создал к 1ой рекламе за сутки 727к записей:
user posted image
Надо таких 5ть табличек в которых будет 700 - лям записей в сутки скапливаться. и раз в сутки по крону допустим зачищать.
Если делать в mysql то напряжно и на запись и на селект юзать так много.
Есть 2 сервачка:
user posted image
На первом крутить нода. мемкеш. редис. пых, nginx, csf(жёсткий)
На 2ом сервачке токо мускул можно сказать.
Как вариант что первое приходит в голову на 2ом сервачке можно создать отдельную mysql базу с 5тью табличками Memory и положить её напрямую в tmpfs тогда и truncate 5 табличек пройдёт махом(но не уверен тоже что правильно делать за раз 5-6 и более лямов записей truncate. (но мне надо экономить как то %CPU а мускуль будет занижать id) Там более 50 гиг озу даже в пики свободно. Тем самым разгрузить %CPU 1ого сервачка так как там файрвол поджирает прилично процессорного времени (он пока банит накрутчиков из за этого там конфиг большеват порядко 20к строк что не есть хорошо).
Как бы вы организовали чтобы задействовать минимум %CPU?
redreem
Цитата
Там более 50 гиг озу

700 лямов айпишников, это - 10 гигов.
почему бы просто не запустить инстанс ноды и хранить все в озу?
VELIK505
Цитата (redreem @ 25.01.2016 - 18:03)
Цитата
Там более 50 гиг озу

700 лямов айпишников, это - 10 гигов.
почему бы просто не запустить инстанс ноды и хранить все в озу?

какие 10 гигов. там максимум 2-3гиг и то врятли.
и если ты не заметил я и спрашиваю как хранить в озу лучше.
Ron
Цитата (VELIK505 @ 25.01.2016 - 21:43)
Как бы вы организовали чтобы задействовать минимум %CPU?

Я бы попрбовал на Redis, есть механизм expire, не подойдет?

VELIK505
Цитата (Ron @ 25.01.2016 - 18:32)
Цитата (VELIK505 @ 25.01.2016 - 21:43)
Как бы вы организовали чтобы задействовать минимум %CPU?

Я бы попрбовал на Redis, есть механизм expire, не подойдет?

У редиса есть чёто типо мемкешевских чанков? чтобы в 1ом хранилище не хранить 5-6 лямов айпи. А разбить на 5-6 чанков. (мемкеш точно не подойдёт хоть и быстрее доступ чем с редисом но он CPU любит кушать, редис вообще почти не тратит процессорное время). Думаю он подойдёт если пойму как в нём правильно организовать хранилище и чистить его раз в сутки.
Oyeme
Думаю redis точно подойдет,так как redis поддерживает репликацию.

Как говорят memcache сидит на стеройдах и да на втором серваке mysql.Хранить в unsigned integer or VARBINARY(16)

Используя функции INET_ATON() и INET_NTOA() - для получения и хранения.

Данных то немного,мы же не говорим об миллардах строк в сутки.


Особо стандартное решение.
VELIK505
Oyeme
Мне не надо mysql(можно если чё потерять данные пофиг на них).
А как редис ну я буду пихать всё в редис там будет куча записей как к нему доступ будет? У редиса подхранилища свои есть? в редис буду ломиться на том сервачке где mysql. Ну допустим тот же xcache я бью на слоты чтобы равноверно в каждый слот записывать данные чтобы доступ быстрее был к скриптам. Если в 1 слот всё запихать очень долгий доступ будет. Мемкеш на чанки так же. А у редиса что? понял про что я?
Oyeme
Цитата (VELIK505 @ 25.01.2016 - 19:16)
Oyeme
Мне не надо mysql(можно если чё потерять данные пофиг на них).
А как редис ну я буду пихать всё в редис там будет куча записей как к нему доступ будет? У редиса подхранилища свои есть? в редис буду ломиться на том сервачке где mysql. Ну допустим тот же xcache я бью на слоты чтобы равноверно в каждый слот записывать данные чтобы доступ быстрее был к скриптам. Если в 1 слот всё запихать очень долгий доступ будет. Мемкеш на чанки так же. А у редиса что? понял про что я?

Пример как можно хранить ключи

http://instagram-engineering.tumblr.com/po...imple-key-value

Для Ip можно что-то придумать с конвертации в decimal http://www.aboutmyip.com/AboutMyXApp/IP2Integer.jsp
S.Chushkin
Цитата (VELIK505 @ 25.01.2016 - 21:43)
Если делать в mysql то напряжно и на запись и на селект юзать так много.

Бред.
Даже на слабом серверочке mySQL легко отработает >>100 млн. запросов в сутки, что на порядок больше требуемого для Вашей задачи (5 * 700к записей в сутки).

_____________
Рекламка / ad.pesow.com Хрень / mr-1.ru
icedfox
VELIK505, попробую немного не в тему подумать вслух.
В вашем варианте при клике идет запрос (к базе, к памяти... пох куда) и идет поиск по IP, что имеет свою нагрузку.
Если например юзеру писать в куку первый клик, и потом тупо сверять по куке, то не придется сверять IP. При варианте с защитой от накруток, процесс можно усложнить, но он наверняка будет менее затратным , чем поиск одного IP из 700 лямов.

Попробуйте посмотреть в эту сторону.
Миша
Цитата (S.Chushkin @ 25.01.2016 - 23:53)
Бред.
Даже на слабом серверочке mySQL легко отработает >>100 млн. запросов в сутки, что на порядок больше требуемого для Вашей задачи (5 * 700к записей в сутки).

Какой тип лучше для IP в MySQL?

_____________
Принимаю заказы, писать в ЛС
sergeiss
Цитата (Медведь @ 26.01.2016 - 22:27)
Какой тип лучше для IP в MySQL?

Если уж использовать БД, то в Постгре есть тип данных IP. Не надо ничего придумывать, просто берешь и используешь.

Цитата (icedfox @ 26.01.2016 - 17:21)
Если например юзеру писать в куку первый клик, ...

Тогда уж лучше в сессию, наверное smile.gif

VELIK505, можно ж еще партиции использовать, это позволит существенно снизить поисковую нагрузку.
Рассуждения насчет truncate не понял. Вообще, это очень быстрая операция.

_____________
* Хэлп по PHP
* Описалово по JavaScript
* Хэлп и СУБД для PostgreSQL

* Обучаю PHP, JS, вёрстке. Интерактивно и качественно. За разумные деньги.

* "накапливаю умение телепатии" (С) и "гуглю за ваш счет" (С)

user posted image
Миша
Цитата (sergeiss @ 26.01.2016 - 22:49)
Если уж использовать БД, то в Постгре есть тип данных IP. Не надо ничего придумывать, просто берешь и используешь.

Хостинг, его дивизию...

_____________
Принимаю заказы, писать в ЛС
icedfox
Цитата (sergeiss @ 27.01.2016 - 00:49)
Тогда уж лучше в сессию, наверное

Не, у него же события по клику, зачем дергать сервер лишний раз, когда можно на стороне клиента это решить.

Цитата (Медведь @ 27.01.2016 - 00:27)
Какой тип лучше для IP в MySQL?

в MySQL нет полей для IP, обычно ставят varchar(40)
Именно поэтому поиск по IP не самый оптимальный запрос к базе. На высоконагруженных проектах разный изврат используют для оптимизации wink.gif
sergeiss
Цитата (icedfox @ 26.01.2016 - 22:58)
когда можно на стороне клиента это решить

Это для "пионеров" защита. А на сервере всё равно ж проверять придется, по-любому.

_____________
* Хэлп по PHP
* Описалово по JavaScript
* Хэлп и СУБД для PostgreSQL

* Обучаю PHP, JS, вёрстке. Интерактивно и качественно. За разумные деньги.

* "накапливаю умение телепатии" (С) и "гуглю за ваш счет" (С)

user posted image
Быстрый ответ:

 Графические смайлики |  Показывать подпись
Здесь расположена полная версия этой страницы.
Invision Power Board © 2001-2024 Invision Power Services, Inc.