Open yukoff opened 7 years ago
Може бути цікаво - https://www.reddit.com/r/golang/comments/4dnlgx/notorious_a_torrenttracker_implemented_in_go/. В основному обговорюються власне Notorious та Chihaya, перший використовує Redis, другий, на відміну від Ocelot, вміє UDP та IPv6
Наш XBTT також вміє IPv6 та UDP, шкода, що Ocelot досі без них.
Гм, цікаво - останнім часом оригінальний проект активний https://github.com/OlafvdSpek/xbt (одначе шлях він подолав - sourceforge -> google code -> github). Подивимось, чи можна замержити
На вихідних помацав трохи chihaya - заради швидкості він зберігає дані щодо сідів/лічів у пам'яті (redis теж на підході), та має абстракцію middlewhare - за рахунок pre/post гаків (hooks) можна реалізувати необхідну логіку. Плюс це go (наприклад, той же docker написаний на ньому) - по швидкості десь відповідає C/C++, але синтаксис більш лаконічний, та з коробки підтримує багато сучасних технологій (він власне створювався для серверів).
Notorious теж написаний на go, працює і з redis-ом, і з БД (MySQL/PostgreSQL), не такий зрілий, як той же chihaya, але виглядає перспективно.
Якщо говорити про швидкість, ось свіжа статистика XBTT: пірів: 200 тис cpu: 2% mem: 270 MB
дані зберігаються в пам'яті і періодично (120 - 150 с) скидаються одним великим запитом в базу, якмй триває до 0,5 с.
Цікава статистика, дякую. Я, власне, раніше в тех. деталі протоколу та трекерів не дуже занурювався, а тут за нагоди вирішив і з go дещо розібратись, і з протоколом/роботою трекерів заодне 😉
Власне, щодо xbt - судячи з записів на форумі TP, самим правильним виходом буде переводити його на поточний master
OlafvdSpek/xbt з нуля.
Передісторія тут: