Задать вопрос
Ответы пользователя по тегу MySQL
  • Гео-распределеная БД/шардинг?

    @boss_lexa
    между европой и азией RTT примерно 200 мс (Германия-Сингапур)
    https прошлых версии требует = 3-4 RTT (600-800 мс) + DNS
    если у вас настроено TLS v 1.3 + 0-RTT = 2-3 RTT (400-600) + DNS
    подробнее тут https://blog.cloudflare.com/introducing-0-rtt/

    Приложение и БД должны быть в одном датацентре (регионе) иначе каждый http-запрос будет отрабатываться как кол-во sql-запросов * RTT 200 мс = долго)

    соотвественно если у вас трафик азии приземляется только на единственный сервер в европе пользователи из азии тратят больше на подключение, на 600-800 мс больше.

    если вы купите слугу CDN для ускорения динамического сайта (или настроите свои сервера) и ваш https будет терминироваться в азии, а само приложение и бд останется все также в европе - оставшаяся задержка сократиться до 1 RTT = 200 мс,

    также к этому прикручиваете быстрый anycast DNS, например Cloudflare (только DNS, без СDN) или AWS route 53 (он еще от ddos 3,4 уровня защищен)
    тут статистика DNS сервисов по latency https://www.dnsperf.com/

    если будете смотреть CDN выбирайте тут: https://www.cdnperf.com/
    но услуга ускорение динамики есть не у всех

    если хотите свое - можно использовать AWS Global Accelerator (в нем дают anycast ip) это даст:
    - терминацию TCP близко к пользователя
    - приоритетную сеть с меньшими задержками
    - защиту от Ddos 3,4 уровня
    - быстрое переключение на резервный датацентр/регион если основной упал
    + пару дешевых региональных EC2 под терминацию Https

    как аналог еще смотрите Azure Front Door

    Как уменьшить оставшиеся 200 мс:

    1) Если использовать синхронную рекликацию между континентами, например как mysql galera/percona xtradb cluster - скорость чтения будут локальной, но кол-во транзакций записи в секунду будет очень медленным, тк упрется в RTT, а если оно 200 мс = 5 транзакций/секунда

    2) Если делать шардинг пользователей по континентам, то будут возникать проблемы если у вас есть кроссшардовые операции или может быть решардинг (пользователь переезжает в другой континент).
    Есть CockroachDB которые завляюят что у них это все это решается "из коробки" - на практике хз.

    4) Если вам подходит eventual consistency и split brain на короткое время не сломает ваше приложение - можно попробовать БД, которые будут использовать Согласованность в конечном счёте используя асинхронную репликацию

    Но так ли критично уменьшение этих оставшихся 200 мс?
    Стоит ли использовать новые необкатанные БД в production с которыми нет опыта решение проблем ради оставшихся 200 мс?
    Ответ написан
    Комментировать
  • Система личных сообщений (шардинг)?

    @boss_lexa
    находил такой вариант: ключ шардинга для чата = отсортированный список из 2ух id пользователей

    много полезного
    highload.guide/blog

    о шардинге https://www.youtube.com/watch?v=URHoFbn4rt8
    шардинг в Badoo https://www.youtube.com/watch?v=ZGAHlGfW1yw
    Техн директор topface о шардинге и не только https://spb-borodin.livejournal.com/

    шардинг в etsy
    https://www.slideshare.net/jgoulah/the-etsy-shard-...
    https://www.slideshare.net/jgoulah/the-shard-revis...
    Ответ написан
    1 комментарий
  • Таблица под highload?

    @boss_lexa
    Troodi Larson, сделайте шардинг данных по пользователю, храните данные одного пользователя в одной таблице

    а лучше используйте Clickhouse

    тут все найдете
    highload.guide/blog
    https://www.youtube.com/user/profyclub
    Ответ написан
    Комментировать
  • Синхронная репликация: MySQL NDB Cluster, Percona XtraDB, MariaDB Galera, mysql group replication (innodb cluster). В чем отличия?

    @boss_lexa Автор вопроса
    Судя по следующей презентации Percona выигрывает
    https://www.slideshare.net/Grypyrg/percona-xtradb-...

    В презентации указано что решения на Galera ждут подтверждения записи от всех пользователей, а group replication от большинства, и соотвественно запись должна быть быстрее.

    Но при этом указано что group replication не рекомендуется для WAN.

    Еще статья в пользу Percona опять же
    https://www.percona.com/blog/2017/02/24/battle-for...
    Ответ написан
    Комментировать