Проблема: Убедитесь, что все торговой информацией от других бирж является доступен
Есть несколько проблем, я собираюсь сосредоточиться на одном: «Вся информация доступна», но кратко, упомянем еще две проблемы
- Как мы узнаем, что означает «Все»? Каждой Бирже почему-то нужно выяснить, что другие exchnages, с которыми она должна иметь дело. В реальном мире этот список, вероятно, меняется день ото дня (различные обмены могут быть закрыты из-за государственных праздников) и час за часом из-за различий в часовых поясах. Поэтому получить список тех, кто должен быть там, вероятно, сложно.
- Что означает Exchange? По всей вероятности, у вас не будет одной машины, представляющей Exchange. Вероятно, достаточно, чтобы один из нескольких представителей Exchange был «доступен».
И приводит меня к основному вопросу: что означает «доступный»? Давайте просто сосредоточимся на ExchangeA и ExchangeB (если A и B согласны с тем, какие правила мы будем использовать, мы можем перейти к A-> C, A-> D, B-> C и т. Д.). Мы могли бы рассмотреть несколько разных значений для A доступен ли B: Может ли Ping B на сетевом уровне? Получил ли последнее сообщение (как последнее?) От B, может ли понять сообщение, полученное им от B? Возможно, B должен отправить несколько сообщений для описания своего состояния, получили ли мы их все? Являются ли сообщения разумными?
Я предлагаю, чтобы А мог определить доступность Б, получая сообщения от В через определенный согласованный интервал. Эти сообщения могут быть столь же просто, как
"Hello, I'm B, at 13:15 GMT on 21st January 2011, I am functioning correctly"
или более сложный
"Hello, I'm B, at 13:15 GMT on 21st January 2011, I am about to send you my current status,
it will comprise 3 messages including this one. Data XXX, YYY ..."
"2 of three messages from B, at 13:15 GMT on 21st January 2011, Data XXYX, QQQ ..."
"3 of 3 from B, at 13:15 GMT on 21st January 2011, Data PPP, QQQ ..."
Теперь А имеет на то интерпретировать эти «Hearbeats». Предположим, что сообщения должны появляться каждые 5 минут, а один - не 8 минут - это плохо?Предположим, что одно сообщение промахивается, но все остальные доставлены? Предположим, что некоторые из них вышли из строя? Вы должны определить свои правила. Вы должны предположить, что сети имеют случайный сбой, небольшие задержки будут происходить.
Вслед за этим возникают различные вопросы, такие как, как B знает, чтобы сказать, что это доступно. Возможно, подход Pub/Sub подходит? Или должен быть какой-то центральный реестр, с которым разговаривают все exchnages, и каждый обменный вопрос просто спрашивает реестр «все ли?»
В чем проблема? – thelost
Ваш дизайн в порядке, насколько я могу судить. –