Skip to content
New issue

Have a question about this project? Sign up for a free GitHub account to open an issue and contact its maintainers and the community.

By clicking “Sign up for GitHub”, you agree to our terms of service and privacy statement. We’ll occasionally send you account related emails.

Already on GitHub? Sign in to your account

Анонсер - Ocelot, XBT тощо #109

Open
yukoff opened this issue Aug 4, 2017 · 7 comments
Open

Анонсер - Ocelot, XBT тощо #109

yukoff opened this issue Aug 4, 2017 · 7 comments

Comments

@yukoff
Copy link
Contributor

yukoff commented Aug 4, 2017

Передісторія тут:

в старій базі тригер (bb_topics_au) вставляв дані в цю (bb_bt_torrents_del) таблицю:

DELIMITER $$
CREATE TRIGGER `bb_topics_au` AFTER UPDATE ON `bb_topics`
 FOR EACH ROW if new.topic_type_gold != old.topic_type_gold then
    insert into bb_bt_torrents_del (torrent_id,info_hash,is_del,dl_percent)
    select torrent_id,info_hash,0
    ,case new.topic_type_gold when 1 then 0 when 2 then 50 when 3 then 75 when 4 then -1 else 100 end
    from bb_bt_torrents t where t.topic_id=new.topic_id
    ON DUPLICATE KEY UPDATE dl_percent=values(dl_percent);
  end if
$$
DELIMITER ;

та тут:

Ця логіка (таблиця + тригер) потрібна для анонсера XBTT, який більше не підтримується апстрімом. Для спрощення, ми почнемо з використання стандартного анонсера на PHP, потім можливо перейдемо або на Ocelot, або на XBTT.

Тобто, поки що дропаємо таблицю і тригер, можливо повернемося до них пізніше.

@yukoff
Copy link
Contributor Author

yukoff commented Aug 4, 2017

Може бути цікаво -
https://www.reddit.com/r/golang/comments/4dnlgx/notorious_a_torrenttracker_implemented_in_go/. В основному обговорюються власне Notorious та Chihaya, перший використовує Redis, другий, на відміну від Ocelot, вміє UDP та IPv6

@yukoff yukoff changed the title Анонсер - XBTT, Ocelot тощо Анонсер - Ocelot, XBTT тощо Aug 4, 2017
@konfuciusu
Copy link
Contributor

Наш XBTT також вміє IPv6 та UDP, шкода, що Ocelot досі без них.

@konfuciusu
Copy link
Contributor

Сорси: https://github.com/hurtom/xbt

@yukoff
Copy link
Contributor Author

yukoff commented Aug 4, 2017

Гм, цікаво - останнім часом оригінальний проект активний https://github.com/OlafvdSpek/xbt (одначе шлях він подолав - sourceforge -> google code -> github). Подивимось, чи можна замержити

@yukoff
Copy link
Contributor Author

yukoff commented Aug 7, 2017

На вихідних помацав трохи chihaya - заради швидкості він зберігає дані щодо сідів/лічів у пам'яті (redis теж на підході), та має абстракцію middlewhare - за рахунок pre/post гаків (hooks) можна реалізувати необхідну логіку. Плюс це go (наприклад, той же docker написаний на ньому) - по швидкості десь відповідає C/C++, але синтаксис більш лаконічний, та з коробки підтримує багато сучасних технологій (він власне створювався для серверів).

Notorious теж написаний на go, працює і з redis-ом, і з БД (MySQL/PostgreSQL), не такий зрілий, як той же chihaya, але виглядає перспективно.

@konfuciusu
Copy link
Contributor

Якщо говорити про швидкість, ось свіжа статистика XBTT:
пірів: 200 тис
cpu: 2%
mem: 270 MB

дані зберігаються в пам'яті і періодично (120 - 150 с) скидаються одним великим запитом в базу, якмй триває до 0,5 с.

@yukoff
Copy link
Contributor Author

yukoff commented Aug 9, 2017

Цікава статистика, дякую. Я, власне, раніше в тех. деталі протоколу та трекерів не дуже занурювався, а тут за нагоди вирішив і з go дещо розібратись, і з протоколом/роботою трекерів заодне 😉

Власне, щодо xbt - судячи з записів на форумі TP, самим правильним виходом буде переводити його на поточний master OlafvdSpek/xbt з нуля.

@yukoff yukoff changed the title Анонсер - Ocelot, XBTT тощо Анонсер - Ocelot, XBT тощо Aug 11, 2017
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment
Projects
None yet
Development

No branches or pull requests

2 participants