А колко време мина?

 Без категория
фев. 262009
 

Покрай проекта за електрическото правителство витае въпроса за отговорността на ЕСОЕД за обработката и доставката на съобщенията документите, които пренася. Тук има две противоречиви изисквания. Първото е, че трябва да прекараме всички документи достатъчно бързо. Има определен интервал, в който можем да доставяме даден документ. Ако изтече, т.е. не успеем да го доставим, се случват лоши неща. Второто е една… хм… интересна закачка, заложена в чл. 18 от наредбата за ЕСОЕД и тълкуването му от МДААР, която не искам да коментирам.

Както и да е. В тази връзка имплементираме в системата много точно отчитане на времето. Първо, часовниците на всички сървъри са синхронизирани адски точно благодарение на СОЕВ – системата за отчитане на единно време, доставена от HP. После, много точно записваме кога един документ е постъпил в ЕСОЕД и кога сме успели да го изпратим (задължени сме по чл. 41 от наредбата). Освен това пазим и кога сме приключили с всички обработки, за да е ясно колко време документа се е бавил при нас и колко сме се опитвали да го изпращаме.

Tова е идеален пример за фундаменталната формула от теорията на опашките
R = S + W
където:
R е времето, което един документ прекарва в ЕСОЕД (response time);
S е времето, което е необходимо на ЕСОЕД за да обработи документа (service time);
W е изчакването на опашката за изпращане (queueing delay).
И докато ние правим всичко възможно да намалим S, ще се окаже, че за някои системи W е далеч по-голямо и в резултат някой може да обвини нас за голямото време R без да сме виновни.

За да запишем максимално точно всеки един момент, аз направих в БД полета от тип TIMESTAMP(6) WITH LOCAL TIME ZONE. Избрах типа TIMESTAMP, защото DATE има точност само до секунда (през нас могат да минават доста документи в една секунда). Така в БД имаме възможност за запис на микросекунди (това е една милионна от секундата). За сега сървърите ни са под Windows и часовника дава само милисекунди, но аз мисля в перспектива… 🙂

Хм. Това въведение в проблема стана твърде дълго. За това ще опиша проблема и решението в следващия пост. Stay tuned!

 Posted by at 11:40

Sorry, the comment form is closed at this time.