понедельник, 9 сентября 2013 г.

Couchbase

     Поскольку на текущем месте работы у нас используется Couchbase, я решил познакомиться с ним по ближе.  Скачал себе architecture review. Ну и покурил его на досуге. Мое первое впечатление:
  1. Интересная архитектура
  2. Отличная документация
  3. Прямо из коробки идет отличный web интерфейс -  через который можно смотреть статистику по кластеру, изменять настройки на лету. В общем приятно работать с таким софтом. 
Но есть в нем вещи которые меня очень насторожили. Уж очень гладко все на бумаге - nothing share architecture, master-master replication. Хочешь в разных датацентрах - пожалуйста, вот тебе XDCR репликация. Прям - вот оно, настало счастье программистов, не СУБД а мечта. Но если внимательно почитать документацию то понимаешь - что все построено в расчете на оптимистичный сценарий. Если все хорошо с серверами - то и мы вроде как работаем,  а если с серверами какая хрень случается - то уж как получится...
  1. По умолчанию сервер отправляет клиенту подтверждения - не дожидаясь пока данные будут реально записаны на диск. Он кладет данные в некоторый кэш, и ставит в очередь на сохранение. А сохраняться они действительно или нет - этого ты при таком раскладе не узнаешь.
  2. Можно с помощью опции сказать серверу,  чтобы он отправлял клиенту подтверждение только после успешного сохранения данных на диск.  Но вдруг диск сдохнет ? Для обеспечения консистентности нам нужно сохранить данные минимум на две ноды. К сожалению невозможно заставить Couchbase сначала сохранить данные на диск, отреплецировать данные на другую ноду - и только потом отправлять клиенту подтверждение. 
  3. Следующая вещь, которая вызвала у меня кучу вопросов - это auto failover. Да, задумано все круто, это беспорно.  Но меня интересует вопрос - вот упала нода, сколько времени  потребуется кластеру на то чтобы определить это, и перевести реплику в активное состояние ? 2 минуты ? 3 минуты ? 5 ? В документации об этом не слова. С какой частотой Couchbase клиент проверяет cluster map ? Сколько вообще времени пройдет до того момента как данные снова станут доступны ? Хз. Другого ответа нет.
  4. Еще больше вопросов возникает к управлению кластером. Что произойдет если так называемый - orchestrator, нода выбранная управлять кластером - сама двинет кони ? Согласно документации  кластер выберет нового orchestrator,  и все будет замечательно. Но что произойдет с клиентами которые в  этот момент захотят получить cluster map ? Ведь orchestrator - это обычный узел кластера, который также обслуживает определенные partition, и в случае смерти нужно чтобы кто-то перевел реплику в активное состояние, а partition который находился на умершей ноде в состояние dead.  Вообще интересный момент - как сказать сдохшей ноде, что она должна перейти в состояние dead ? Разговор с мертвецами - это под силу только Couchbase. И вообще, может нода вовсе и не умирала, а умер коммутатор в который она была воткнута ? Потом коммутатор сменили, и у нас в кластере внезапно оказалось две активных реплики одного раздела.  В общем не очевидно как будут разруливаться такие ситуации.
  5. Если продолжить фантазировать на тему сдохнувшего свича, то легко можно смоделировать ситуацию когда мы получаем классический split brain. Если внезапно кластер распадается на 2 подсети - в каждой из них будет выбрано по одному orchestrator. И каждый  из них будет думать что он то и есть настоящий,  и будет раздавать на право и на лево свою cluster map, и писать данные данные... а что потом потом делать  с этими двумя кластерами и как объеденить данные с них - это будет головоломка для dev-ops.
  6. Что еще меня повеселило - это открытие в области алгоритмов, сделанное программистами Couchbase. Встречайте - B-Superstar index, новое слово в алгоритмике. И не важно что вот уже лет 50 никто ничего нового в этой области не придумал - они новый тип индекса изобрели. Просто маркетинг головного мозга.

Можно конечно сказать что я придираюсь, и Couchbase как-то обрабатывает все эти ситуации - но реальность показывает что это не так. С нашим небольшим Couchbase кластером из 3-х нод не так давно произошла "пренеприятная" история. Он ушел в даун (или сделал вид что ушел в даун) и никто из админов долго не мог сказать что с ним стряслось.  Я процентов на 90 уверен что без косяков админов там не обошлось, но по факту - одна из трех нод умерла, одновременно с этим начался процесс  репликации и производительность кластера настолько деградировала что пациент был скорее мертв чем жив.

Про Go

     1.  Статья про Go и его использование в Iron.io http://www.businessinsider.com/googles-go-could-replace-java-2013-8
     2.  Оказывается есть очень полезные пакеты, которые также разрабатываются членами Go team, но которые не включены в основное дерево пакетов. Смотрите ссылки на них внизу этой страници http://golang.org/ref/
     3.  Планируется очередная встреча Go сообщества Москвы, со специальным гостем из Go Team - http://goo.gl/V9i0wL

воскресенье, 8 сентября 2013 г.

Phu Quoc

 На этот раз наше путешествие началось рано утром в субботу, в domestic аэропорту Сайгона

30 минут полета, и вот мы наблюдаем заветный остров

Еще 10 минут  снижения и мы в аэропорту Фукуока

Сюда еще летает Vietnam Airlines, но как выяснилось на винтовых самолетах:
Думается мне что полет на этой малютке будет по экстремальней чем на боинге/аирбасе, надо будет как-нибуть испробовать :-) А дальше дорога из аэропорта в единственный "город" на острове - Duong Dong:

 В слово город взято в ковычках - потому что этот город по размеру меньше Муйни, которая считается деревней. Расположен Duong Dong на западном побережье острова, на этом же побережье сосредоточены почти все очаги цивилизации острова. 99% отелей расположены  на этом же - западном побережье, чуть выше или чуть ниже Duong Dong'a. Мы заказали себе самые дешевые номера в Cassia Cottage - 3-х звездочном отеле, который находится по сути в самом Duong Dong. Сначала фото:









Теперь пару слов об этом отеле - для трешки он офигенен. Наверное потому что менеджер отеля - европеец. Азиатская покорность + европейский менеджмент - творят чудеса. Чем больше я живу тут тем больше понимаю что без европейского менеджмента вьетнамцам никогда не сделать по настоящему классные места. Видимо сказывается привычка наебывать всех и вся, особенно в мелочах. А если тебя не обманут - то ценник выставят раза в 2 выше чем он должен быть. Что касается этого отеля, то видно конечно что отель не новый, но все чисто, все выдраено до мелочей, везде офигенный и быстрый интернет.  Интернет гораздо быстрее чем у меня в Сайгоне. Остается только гадать каких усилий стоило менеджеру отеля добиться такого качества интернета на острове, где в силу чисто физических причин интернет должен быть медленней чем на материке.  Плюс ты всегда можешь сказать что тебе нужно - как я уже говорил, менеджер отеля - очень хорошо говорит по английски, и даже немного по вьетнамски общается со стафом.  Хотя курьезы все равно встречаются:
Как насчет  рома от горного пидора ?? Слабо такой попробовать ? :-)
Единственно что меня огорчило в отеле - это завтрак.... ну он был на уровне 3-шки...  да, вкусно - но выбор очень маленький. 
           Первым делом мы конечно пошли окунуться в море
Что сказать насчет моря - она гораздо лучше чем было в Муйне, но не Дананг.  Сказывается то что отель находится на западном побережье, которое обращено в открытое море. И само дно опускается довольно быстро, так что нужно быть внимательнее. А вообще купаться было весьма комфортно, особенно с утра - когда волн почти не было.  После купания мы решили что нужно взять на прокат байки - и помчатся куда-нибуть:
Цель мы выбрали быстро, этой целью стал водопад распологающийся в глубине острова. Еще пару слов о дорогах на острове. Как потом оказалось - дороги обозначенные на гуглокартах как дороги - это ни всегда дороги в привычном нам понимании слова. Это вполне может быть грунтовка, как на фото свыше. После дождя она превращается в такой грязевой каток для мотобайков.  Что еще для нас стало неожиданностью - это то что не нужно оставлять залог за байк.  Мы брали байки не в отеле, ка кэто обычно делается - а у совсем левой тетеньки. На наш вопрос о залоге - она как-то странно округлила глаза и посмотрела на нас как на полных идиотов. Просто заплатите 150 тысяч за день - и бери байк. Потом мы доперли почему - мы же на острове... куда ты нахер денешся с подводной лодки. Не потащишь же ты с собой байк в самолет ?? Еще одна неожиданность связанная с этим - это отсутствие парковок. Точнее парковки есть - но нет этих бездельников, которые типа охраняют байки. Мы приехали на крокодиловую ферму, около которой расположен водопад - и думаем - куда же поставить мотобайки. Смотрим - парковка... поставили туда байки, идем к ближайшему мужику - говорим - типа паркинг.... давай квиточек - как обычно это в Сайгоне делается. Ты ставишь байк - и тебе дают квиточек, что типа он охраняется. Этот мужик тоже посмотрел на нас большими глазами - и махнул рукой - да ставь ты тут, кому сперся твой байк. Как я понял после этого - воровство байков, как класс преступлений на острове в принципе отсутствует.  Теперь вернемся к нашему водопаду:




Место действительно очень красивое. Единственно что омрачает красоту этогоместо - так это как обычно жрущие вьетнамцы. Доходило даже до обсурда - компания молодых вьетнамцев забралась на плоский камень посреди потока, и сидела там уплетала за обе щеки. Они бы еще в воде прям жрали - чего уж мелочится.  В общем по этой причине я бы посоветовал дойти до самого главного водопада, который находится выше всех - в самом конце дорожки. Там можно купаться - вода релаьно очень теплая и быстрая. Обычно в водопадах вода ледяная, а в этом с удовольствием можно купаться. Единтсвенное - дно неровное и каменное, поэтому купаться надо в обувке. Иначе легко порезать ноги. 
      На следующий день мы решили поехать на какой-нибуть другой пляж. Спросили у менеджера отеля - и он нам порекомендовал пляж на восточной стороне острова,  недалеко от рыбацкой деревушки. Говорит там типа бар на самом берегу и охеренный пляж. Поехали искать значит этот сказочный бар и пляж. Долго ли коротко мы блуждали и наконец нашли это место. Сказать что наши ожидания не совпали с действительностью - это значит не сказать ничего. Тут мы поняли насколько различаются наши представления об охеренном пляже и баре. В общем бар оказался лачугой... таким навесом, стоящем на пляже. Ну кроме 2 видов пива и 2 двух блюд в меню - там ничего нет.  Насчет пляжа - наши мнения разделились. Мне он действительно очень понравился. Очень приятный, мелки песочек чисто белого цвета.... сам заход в воду - ну очень пологий... можно вообще метров на 200 уйти вперед - и ты все еще будешь стоять на ногах.. более того - впереди есть отмели - так что проплыв еще метров 20 ты вообще можешь вылезти на отмель - где воды - по пояс... такое интересное чувство - ты стоишь по пояс в воде - а между тобой и берегом - широченная полоса воды, так что люди на берегу кажутся малюсенькими.  Плюс вода на этих отмелях - очень сильно прогревается... ты как в теплой ванне посреди моря лежишь.  Плюс - совершенно нет народу... купаешься совершенно один. Но у этого пляжа есть и недостаток - он дикий. На этой стороне острова нет никаких отелей, нет вообще никакой цивилизации кроме рыбацких домиков и деревушек. Соответственно пляж никто не убирает. На самой кромке - много  мелкого мусора, в основном природного происхождения - типа веточки, пальмовые листья и тд. Ну и конечно бутылки которые туда прибивает. Их естественно тоже никто не убирает. Если вы готовы мериться с этим - то пляж определенно стоит посетить. Так как он находится с восточной стороны, которая обращена к материку - волн практически нет. В то в время  как на западной стороне - волны в полтора метра - тут легкий прибой. 
Искупавшись на этом пляже мы решили поехать в ближайшую рыбачкую деревушку - отведать свежих морепродуктов. С высоты самолета эта деревушка выглядит так:


  Эта длинная, выдающаяся в море кишка - это рыбацкая пристань. Она построена на бетонных сваях и выдается в море метров на 200. Как отчетливо видно с высоты - около берега очень мелко, поэтому даже рыбацкие суденышки не могут подплывать к близко к берегу.  Мы заехали на нее прям на мотобайках и доехали до самого конца. Там рыбаки выгружали улов и снова уходили в море. А в прибрежых ресторанах все это выставлялось в аквариумах - и ты можешь ткнуть пальцем в любую живность и тебе ее приготовят. Вот к примеру морские коньки:

Я там отведал акулы. Скажу честно - акулу они готовить не умеют. Хотя сама акула была очень нежная, но без всяких специй и прочего - вкус был пресным. Они нам еще принесли целую тарелку листьев разных - и рисовой бумаги.  Ну и пытались объяснить что нужно накладывать всей этой зелени на листок рисовой бумаги, потом туда кусок акулятины и типа ролла сворачивать. Однохерственно - блюдо на троечку получилось. 
     Еще  стоит упомянуть про "жемчужную фабрику", которая на самом деле - лохотрон для туристов. 

Цены конский - в 2 раза выше чем стартовая цена на сайгонских рынках. Плюс на рынке ты еще торговаться можешь - а с висящим ценником особо не поторгуешься. В общем не советовал бы там  ничего покупать. Единственное - закат там очень красивый