LINUX.ORG.RU

Микросервисный движок мегатрон

 


0

2

Привет, запилил фрейморк под сервисную модель программирования или акторную, кому как нравится. По скорости демки хттп сервера уделывает nginx примерно на 2%. Билдится под линуксом и макосью.

Очень удобно реализована возможность создания консоли для сервера на телнете. Eсть возможность создавать иерархическое облако. Сорцы тут:

https://github.com/akakist/megatron

Ответ на: комментарий от annerleen_temp

Может по русски где-то есть коменты, не помню. Кода наплодилось больше мегабайта и еще там куча выброшенного кода. Eсли кому интересно могу добавить сервисов пачку. Касается п2п соединения. Смысл такой - есть облако и каждой мобилки есть аплинк. Канал устанавливается между аплинками клиентов, они кешируют сообщения, можно тяжелый видеопоток гонять.

akakist
() автор топика

По теме отладки, сейчас читаю статью на хабре. Отладка сервиса проводится дебажным сервисом, который генерит события как вам заблагорассудится. Получается функциональный тест, который можно выполнить в виде тестов, которые у меня, чтобы монолит был, не надо было развертывать мегатрон make install Eствественно разработка сервиса легко бьется между командами. Не пересекаются даже по коду, кроме кода мегатрона, ессно, но его никто не трогает. Только совместно устаканивается код евентов и все, но это всего лишь структура без логики.

Сегодня хабр отказал опубликовать статью про проблемы таймера. Запостил им статью про мегатрон. Наверно тоже откажут.

akakist
() автор топика
Ответ на: комментарий от akakist

Я сделал просто свой генератор Makefile по тупому примитивному описанию проекта в виде

library-name:
.type library
.link -lz -pthread
src/file1.cpp
src/file2.cpp
src/file3.cpp


binary_another: library-name
.link (library-name)
src/fileblabla.cpp

Супер окуенная вещь, хватает на 99% случаев. В данном примере собирается либа и бинарник.

У меня оно ещё умеет .TS файлы транслировать в .JS с помощью tsc, генерить CSS, минимизировать всякую пердь и т.п. и короче немного завязано на теме C++ / web / typscript.

Заипало километровые Makefile руками писать. CMake - какая-то оверкилл-задница, а данное своё минималистичное решение просто огонь. На питоне из говна и палок нахерачил за несколько вечеров. Читает файл .project вышеуказанного формата и высирает огромный Makefile с кучей проверок и правильно организованный. Конечно не без багов и пришлось подебажить, но итог окуенен.

lesopilorama
()
Последнее исправление: lesopilorama (всего исправлений: 1)
Ответ на: комментарий от akakist

Очень тупо:

у меня много pet-project разложены по каталогам вида

space/project1/sobaka.project
space/wow/wow.project
space/hoba/hoba.project

Каждый такой .project – это моя портянка из поста выше. В ней описаны бинарники и библиотеки этого проекта.

И в корне лежит

space/space.project

в котором написано

include space/project1/sobaka.project
include space/wow/wow.project
include space/hoba/hoba.project

и этот space/space.project генерирует жирнейший Makefile в котором все-все таргеты из всех проектов. Ограничение: нельзя проепаться с именами файлов: дважды в разных проектах употребил имя бинарника test и в Makefile появляется два таргета с одним именем и всё сломалось.

Тупая глобальная хренотень. Зато я могу в любом проекте поставить зависимость от любой библиотеки, являющейся просто одним из пет-проджектов.

lesopilorama
()
Последнее исправление: lesopilorama (всего исправлений: 1)

Вообще, выкладывать движки, фреймворки и библиотеки - занятие неблагодарное. Народ не ценит опенсурсность в наше время, все рассматривают это как бесплатная халява для реализации своих корыстных интересов.

Надо сразу пилить какой-то проект на своей технологии и давать людям уже какой-то сервис.

Запилите сайт для бронирования отелей на С++ например. Русский букинг, который офигенно быстро работает и минималистичен. Пилите его лет 5, потом придут инвесторы, купите хату у Кремля.

lesopilorama
()
Ответ на: комментарий от lesopilorama

Изначально мегатрон пилился по сути на каждый проект. Однажды я закусился с усервером и решил его уделать. Основное развитие в виде облака - это DFS, распределенная файловая система, пилилась примерно в 2014, когда у ютуба не было fullHD. Смысл - вещание потока и раздача больших авишек.

Сейчас он доведен до состояния скачал/сбилдил/замерил скорость и это аргумент для выбора фреймворка. Без фреймворка начинать проект на C++ - такое себе. Легко обьясняется примером таймера в новом потоке и к чему это приведет в итоге. Eсли кому надо мессенджер - есть сервисы под него, заточенные на п2п передачу, там можно разогнаться до толстых потоков. Могу выложить, они лежали просто в другом каталоге. Можно сделать вещание из различных театров и шоу, сделать продажу шоу. Можно классно это монетизировать. Но надо чтобы кто-то в бизнес умел.

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

Сам я уже наигрался в стартапы. Вроде и софт сделал норм, и тема нормальная, а на бизнесе все сыпется. Кстати, один чел из США сказал, что будет тестить, если все ОК, переведет свои проды на него. Попробовал собрать аналог test_http_rpc говорит ну очень сильный выигрыш у мегатрона, в несколько раз.

akakist
() автор топика
Ответ на: комментарий от akakist

Легко обьясняется примером таймера в новом потоке и к чему это приведет в итоге.

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

eao197 ★★★★★
()
Ответ на: комментарий от eao197

Пример из реальной работы без фреймворка. Мне надо аргументы, почему на плюсах голых нельзя программировать, почему нужен фреймворк, это для убалтывания заказчика в первую очередь, когда он будет выбирать исполнителя. Очень неплохо можно расписать, что будет потом, поэтому пример отличный

akakist
() автор топика
Ответ на: комментарий от akakist

Пример из реальной работы без фреймворка.

Да блин, что за пример-то? Кто-то что-то где-то сделал, вы это увидели и теперь носитесь как с жупелом?

Мне надо аргументы

А что еще вам надо? Ключ от квартиры, где деньги лежат?

почему на плюсах голых нельзя программировать

Потому что у плюсов чуть ли не самая скудная стандартная библиотека, в которой нет ни сокетов, ни криптографии, ни средств работы с БД, ни XML/JSON/YAML…

почему нужен фреймворк

Что за фреймворк? Кому нужен?

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

Простите, а это вы сейчас на каком языке написали? Может вы пропустили прием лекарств и ваша шизофазия ничем не подавляется.

eao197 ★★★★★
()
Ответ на: комментарий от eao197

Вопрос в концепции ООП, в рамках этой парадигмы тривиальный таймер сделать невозможно. Поэтому эту концепцию фтопку. А на чем сделана сервисно-ориентированная архитектура - не имеет значения. Хоть на windowProc

akakist
() автор топика
Ответ на: комментарий от akakist

Вопрос в концепции ООП, в рамках этой парадигмы тривиальный таймер сделать невозможно.

Да уж, сказал как отрезал.

Поэтому эту концепцию фтопку.

Уж этого сколько вам угодно. Однако, я бы все-таки хотел услышать ответ хотя бы на один свой вопрос. Очень желательно вот на этот:

раскройте тайну, что это за пример, откуда взялся, что демонстрирует и почему он для вас так важен?

eao197 ★★★★★
()