мне нужно обновлять данные, которые были измененные в бд, но не хочу обращаться данными к бдне хочешь не обращайся дело хозяйское. Все эти базы данных для слабаков, раньше их вообще не было и нормально в космос летали. Даже на Луну слетали на ПО без всякиз баз данных. Храни и обрабатывай прямо в своём приложении. Я почему так говорю, сталкивался с такими решениями.
В каких случаях стоит GORM использовать?Когда отчаялась работать с каким-то специализированным драйвером к выбранной базе. Ко многим базам есть куча других ORM-в. Некоторые заходят, некоторые просто выворачивают своим синтаксисом или работой (у меня db не передавал в базу кракозябры из UTF, пришлось искать замену)
Текущее положение Golang в машинном обучение?Довольно неплохое. Постепенно обрастает добротным ПО. Особенно выгодно смотрится он, когда проект становится сложным и нагруженным. Когда траты на разогрев воздуха в ДЦ станут ощутимее прибыли от этого ML (Python однопоточный и вы хоть завалитесь ядрами, цимес как от многопоточности как на Go не получите), когда ты окончательно околеешь от катавасии с версиями Python, их совместимостью и несовместимостью с библиотеками, когда станет вопрос о простом и легком масштабировании (какие сложности с организацией run time для приложения на Go?), когда быстрый hot-fix может быть ещё той лотереей (динамическая типизация может подосрать в самом неожиданном месте), тогда начнёшь думать и ломать свой ИИ.
имея массив фильтровНе надо фильтры ложить в массив)
обработать входящий поток так, чтобы не было блокировок и в input находился обработанный поток после применения последнего фильтра?Каналы вам в помощь.
То есть, по аналогии с применением pipe в командной строке.Да-да, каналы вам в помощь) Они примерно так и работают.
Создание многопользовательского сервера на го? Задача: сделать небольшую многопользовательскую WEB игру.Не вижу препятствий. Есть куда более сложные проекты на это языке.
1) раз мы делаем через WEB, то используем веб-сокеты?Тут дело хозяйское. Можешь хоть на webRTC делать.
Так же, интересует максимальное кол-во игроков? Как я понимаю это 64к человек на сервер?Смотря какие будут сервера. Серверам вообще всё равно сколько будет на них игроков.
2) Как стоит разделять комнаты? Делать все в одном инстансе или для каждой комнаты свой отдельный?На уровне MVP нет. Пусть хоть хоть как-то заработает. Потом по мере роста желательно раскидать. Чтобы можно было балансировать нагрузку: в одной комнате может быть пусто, в другой густо и надо как-то ресурсы гибко предоставлять.
3) Если на разных инстансах (или собственно серверах), то как в итоге соединять людей в них? В БД хранить порт комнаты на сервере или как то еще?Есть синхронный вариант, есть асинхронный. Но лучше MVP слепить. А потом смотреть варианты. Слишком много возможных нюансов, которые надо будет брать в расчёт.
4) Как при запуске GOшного инстанса сохранять и манипулировать им? Как указывать игрокам к какому подключаться?Это уже про оркестрацию. Есть один проектик как раз на Go, который этим занимается.
PS. Под инстансом я говорю о запущеном бинарнике приложенияИнстанс это обычно про некоторое окружение работающего приложения. Может быть виртуальная машина (в контексте Амазон), или контейнер Docker как сейчас модно.
Насколько Golang подходит для больших проектов?У него это на генетическом уровне. Один из его создателей уже имел опыт создания крайне успешного языка программирования, который пошёл довольно хорошо в крупные проекты. И ещё в создании операционной системы поучаствовал. Как раз на это языке. Очень успешная ОСь получилась.
насколько уместно использовать Go в большом кровавом энтерпрайзе-монолите на миллион строк кода со всякими REST, кэшами, работой с базой и так далее?У него изначально архитектурно заложено быть в лютом кровавом энтерпрайзе и даже в монолите на туеву гору строк кода. Любая СУБД по сути монолит. И на Go наверное с десяток наберётся довольно успешных баз, которые применяются в энтерпрайзе.
Понятное дело, что для микросервисов язык подходит как нельзя кстатиМикросервисы это методология разработки для больших, часто разрозненных проектов. И по большому счёту индиффирентно на каком ЯП будет сверстан микросервис. Хоть на ассемблере, если это оправдано. Обычно микросервисы это про несколько ЯП на проект.
однако интересен практический опыт стартапного плана, возможные подводные камни и недостатки.Как бы для стартапа не рекомендуется микросервисы прям сразу. Его бы хотя бы оживить и заставить как задумывалось работать. А потом уже переходить к микросервисам. Но это отступление. Беда может выползти из прошлых навыком и знаний. Golang реализует свою модель ООП, которая не совсем понятная для тех кто писал на ООП ориентированных языках (Java, Python. PHP). Очень туго приходится после языков с динамической типизацией. Модель параллельного программирования тоже многим не сразу даётся.
Используется ли go для построения готовых сайтов?Да, только не часто. Также нечасто как java, как на ruby, как на perl. Миром web разработки правят фреймфорки и CMS в большинстве своём. Тама есть готовые либы с плагИнами и ОРМ искаробки (с).
Большая часть информации, которую я нашел предлагает писать на го микросервисыМикросервисы это методология абстрагированная от ЯП. И для её работы нужно выполнение определённых требований со стороны управления и разработки. Только в обыденной массе это превращается в засовывание в контейнер CMS вместе с вэб сервером (примеров тьма). С последующей гордыней, что таки освоил микросервисы. Вообще не шучу. Об этом люди на митапах рассказывают с полной уверенностью в своей правоте.
В итоге возник вопрос используют ли го на практике для создания полноценных сайтовЭто полноценный, качественный, продуманный ЯП (один из его создателей уже удачно поучаствовал в создании успешного ЯП и пары ОС) общего применения. Крайне вполне пригодый для написания сайтов тоже. Вот только там многопоточность, ещё статическая типизация, нет конструкции "try", значит надо думать, просчитывать поведение программы изучать основы. А это категорически плохо сказывается в навыках сетевых или консольных игр.
(если можно то приведите примеры)?Держи
Есть ли смысл для увеличения производительности использовать несколько подключений к одной БД?Обычно СУБД самое медленное звено. Даже так - в подавляющем числе архитектурных решений СУБД самое медленное звено.
Сейчас сайт на пхп, 100 пользователей (постоянное выполнение определенных действий на серверной стороне) жрет около 500мб памяти.Там что ни база, ни вэб сервер не потребляют ресурсы?
Знаю что такой же ресурс, даже в разы более функционяльный написанный на delphi сжерает 20 мб оперативки.Наверное потому что этот delphi компилируемый, "При создании языка (и здесь качественное отличие от языка C) не ставилась задача обеспечить максимальную производительность исполняемого кода или лаконичность исходного кода для экономии оперативной памяти" и со статической типизацией.
Сколько же будет жрать GO? ПримерноПрикинь. Golang со статической типизацией при его разработке "ставилась задача обеспечить максимальную производительность исполняемого кода или лаконичность исходного кода для экономии оперативной памяти", ориентирован на многопоточность. Помимо этого на нём можно написать фронт и вэбсервер.