Как стать автором
Обновить
89
-1

Пользователь

Отправить сообщение

А давайте попробуем определить, что значит «нельзя»?

Давайте попробуем. Если уровень изоляции исключает P1, в формулировке "критиков", то движок БД не должен допускать вот таких историй: w1[x]...r2[x]...(c1 or a1)

Выгода в уменьшении на порядок бюджетов на разработку ну и в разы на сопровождение. Наши рестораны мы бы запустили за пару месяцев на hetzner с нуля, ну а так несколько человеко-лет ушло бы (как у извеcтных мне коллег на Azure). Сейчас, конечно, уйдет несколько больше - ввиду глобальности целей.

Касательно Redis - нет, пока не поддерживаем даже в планах, только Cassandra/Scylla/FoundationDB/bbolt. Поправил в статье.

Кластер будет ставиться "прозрачно" для пользователя, просто даете IP-адреса, и все. В случае выхода из строя узла нужен IP адрес нового узла, произойдет горячая замена, без простоев.

От разработчиков будет требоваться уметь в командную строку Linux и проектировать БД на уровне схем. Знание Cassandra и проч. приветствуется, но не требуется.

Таков план. Реальность, возможно, внесет некоторые коррективы, но пока все в допустимых рамках.

Интересный опыт, однако ж, должен признаться, процесс выглядит как "водопад". Т.е. вот, есть пожелания бизнеса, анализируем их, получаем BRD, далее из BRD получаем Vision, ну и так далее по цепочке Анализ - Проектирование - Кодинг.

Опять же, PO не пишет и не приоретизирует истории, эта функция возложена на целую группу Product Team, "истории" нельзя сразу давать команде разработки, предварительно надо пройти еще одну проектную стадию и получить Specs.

Развитие технологий разработки ПО идет по спирали, Водопад -> Agile -> Водопад2.0 ? :)

Спасибо за статью, поучительно. А как API описывается, например, вот это?

Тоже через Hugo?

Крайне желательно раз в несколько месяцев делать руками полный цикл изменения кода. Обычно это выглядит так:
Взять в спринте маленькую задачу на час-другой работы...

Вы не могли бы привести пример использования такого подхода, в котором были выявлены и идентифицированы пробелы в дизайне?

В условиях первой задачи вместо "только один вопрос только одному из них" следовало бы написать «только по одному вопросу каждому из них»

Мы пробовали сделать это с помощью реляционных баз данных, но они себя тоже не оправдали. Еще использовали Hadoop, но он медленный, как и RabbitMQ.

А какое "железо" используется, на котором "реляционные БД" и Rabbit не способны обеспечить 15 тысяч RPS?

Этот пункт был выведен эмпирическим путем, когда мы поняли, что инсталляция Kafka больше, чем на 12 Тб на единицу кластера драматически рушит производительность.

Можно пояснить, что такое "единица кластера"?

ISO 81346-12:2018 — Part 12: Construction works and building services

Из этого стандарта я выше привел цитату. Цитата ссылается на 81346‑1:2009 и по смыслу соответствует отечественной верии. Т.е. на 2018 год ничего не изменилось.

Хорошо, вот на "языке оригинала":


3.4
component
product used as a constituent in an assembled product, system or plant
[SOURCE:IEC 81346‑1:2009, 3.7]

Интересная статья, спасибо. Вот такой момент:


Хотя есть четкие стандарты (например ISO 81346) которые определяют их. Если вы будете гуглить, то зачастую схема компонентов может называться схема модулей, а схема модулей — схемой компонентов.

Поискав, я обнаружил отечественный ГОСТ Р 58908.1-2020, который видимо, аналог IEC 81346-1:2009. Там пишут так:


3.6 продукт (product): Предполагаемый или достигнутый результат труда, естественного или искусственного процесса.
3.7 компонент (component): Продукт (изделие), используемый в качестве составной части собранного продукта (изделия), системы или установки.

WASM-модули относительно легко контролировать по использованию CPU и памяти, чего не скажешь про Java. Варианты есть, но они, будем так говорить, не для всех и experimental.

НО разработчики используют TinyGo, в котором сборщик мусора попроще и запускается когда недостаточно места в куче. Если между вызовом proxy_on_memory_allocate и моментом возврата владения в Go нет выделения памяти, то это условно безопасно.

Можно пример, как конкретно выглядит опасный сценарий при использовании go-pointer?

Не уловил, каким образом proxy_on_memory_allocate "превращается" для AssemblyScript
в:


/// Allow host to allocate memory.
export function malloc(size: i32): usize {
  let buffer = new ArrayBuffer(size);
  let ptr = changetype<usize>(buffer);
  return __pin(ptr);
}

?
PS: Видимо, так:


На стороне хоста выполняется поиск malloc, если нет, то ищется proxy_on_memory_allocate
> Примерно 75 тыс. самокатов отправляют сообщения на сервер в среднем раз в минуту. Во время движения частота обращений составляет один раз в 1–5 секунд.

Интересно было бы послушать про «железо», которое стоит за этим — сколько и каких серверов и т.д. Расскажите, по возможности :)
> И тем не менее, я не познал дзена Go, а все больше понимал, что чего-то мне не хватает.

Да, есть такой момент — если надо из программы на Go «выжать» максимум, то надо много читать.

2431 ops - как-то маловато. Да ещё и latency 9.8, странно. А каков общий размер записи, примерно?

Татьяна, а можно поподробнее узнать про параметры нагрузки системы — соотношение запросов чтение/запись, типичное время ответа, производительность (rps)?

Интересный вариант. Попробовал так:


go run -gcflags="-l=4 -m -m" concgo.go s > o 2>&1


  • На результаты не повлияло
  • В o пишут:
    .\concgo.go:60:6: cannot inline is_convergent: function too complex: cost 87 exceeds budget 80
  • Т.е. таки проблема с is_convergent не во "вложенности", а в "сложности"?
  • В исходниках пишут:
    making 1 the default and -l disable. Additional levels (beyond -l) may be buggy and
    // are not supported.
  • Вроде нет указаний, что -l=4 можно использовать "в бою"?

Информация

В рейтинге
Не участвует
Откуда
Санкт-Петербург, Санкт-Петербург и область, Россия
Дата рождения
Зарегистрирован
Активность