±¾´Î·ÖÏíÖ÷Ìâ
Ö÷ÒªÏò´ó¼Ò½éÉÜÒ»ÏÂ360×ÔÖ÷Ñз¢µÄ·Ö²¼Ê½´æ´¢ÏµÍ³Nosql-Bada£¬×÷ΪÉè¼ÆÕßÎÒÒ»Ö±¾õµÃÉè¼Æ¹ý³Ì¾ÍÊÇÔÚ×öһЩÕÛÖÔ£¬ËùÒԴ󲿷ֵÄÄÚÈÝÊÇÎÒÃÇ¿ª·¢ÊµÏÖBada¹ý³ÌÖеÄһЩ¾ÑéºÍ¿Ó,
Ò²ÓкܶàµÄȨºâ, Ï£ÍûºÍ´ó¼ÒÒ»Æð·ÖÏí, Óв»¶ÔµÄµØ·½»¶ÓÖ¸³ö¡£
ËäÈ»ÏîĿĿǰ»¹Î´¿ªÔ´, µ«ÊÇÎÒÃǵÄһЩ×é¼þ, ÓÃÓÚÒ첽ͬ²½Êý¾ÝµÄMario¿âµÈ, ¾ùÒѾ¿ªÔ´£¬ºóÐøBadaÒ²»á¿ªÔ´¡£ÕâÊÇ360¹Ù·½µÄGithubÕ˺Åhttps://github.com/Qihoo360
Ö÷ÒªÓ¦Óó¡¾°
ÎÒÃǵĶ¨Î»ÊǺ£Á¿Êý¾ÝµÄ³Ö¾Ã»¯´æ´¢, ΪÏßÉϵÄÈÈÃÅÓ¦Ó÷þÎñ¡£²»¹ýÎÒÃÇĿǰûÓнÓÈë¸úÇ®Ïà¹ØµÄÒµÎñ, ÒòΪÎÒÃǵÄϵͳ±Ï¾¹ÊÇ×îÖÕÒ»ÖÂÐÔµÄϵͳ¡£
ÎÒÃÇÇãÏòʹÓÃBadaµÄÓû§Êý¾ÝvalueµÄ´óСÔÚ10kÒÔÄÚ, ÄÇôÎÒÃǵÄÑÓ³ÙÄܹ»×öµ½1ms×óÓÒ¡£ÎÒÃÇΪÁ˶ÁÈ¡ÐÔÄÜÓÐÒ»¶¨µÄÓÅÊÆ,
Ò»°ãÒªÇó»úÆ÷¶¼¹ÒÔØSSDÅÌ¡£Èç¹ûÓÃÓÚ´æ´¢ÀäÊý¾Ý, ÎÒÃǻὨÒéÓû§´æÊý¾Ýµ½¹«Ë¾µÄÆäËû´æ´¢²úÆ·, ±ÈÈçhbase,cassandraµÈµÈ¡£
Ŀǰ¹«Ë¾ÄÚ²¿ÔÆÅÌ, ÒÆ¶¯ËÑË÷, LBS, Onebox, µ¼º½Ó°ÊÓ, °×Ãûµ¥µÈ¶à¸öÒµÎñ¾ùÔÚʹÓá£
360×ÔÑзֲ¼Ê½´æ´¢ÏµÍ³BadaµÄ¼Ü¹¹Éè¼ÆºÍÓ¦ÓÃ

ÔÆÅ̵ij¡¾°ÊÇ£ºÍ¨¹ýBada²éѯÎļþËùÔڵĴ洢λÖá£Õâ¸öÒµÎñÊý¾ÝÁ¿Ç§ÒÚ¼¶±ð, ÿÌìµÄ·ÃÎÊÁ¿½ü°ÙÒÚ¡£
LBSÕâ¸öÒµÎñÊǽ«ËùÓеÄPOIµÄÐÅÏ¢´æ´¢ÔÚBadaÖÐ, ÒµÎñÐèÒªÔÚ5¸ö»ú·¿½øÐÐÊý¾Ýͬ²½¡£Ã¿ÌìµÄÇëÇóÁ¿Ê®ÒÚ¼¶±ð¡£

ÕûÌå¼Ü¹¹

Bada SDK ÊÇÎÒÃÇÌṩ¸øÓû§SDK, 360 QConf ÅäÖùÜÀí·þÎñ ´ó¼Ò֮ǰҲÁ˽â¹ý, ÎÒÃÇÊÇQConfµÄÖØ¶ÈÓû§¡£Óû§Í¨¹ýSDK´ÓQConfÖлñµÃ´æ»îµÄBada½Úµã,
È»ºó½øÐзÃÎÊ¡£
Data ServerÊÇÎÒÃǵķþÎñ½Úµã£¬ÆäÉè¼ÆÊÇѧϰ×ÔAmazon Dynamo(²»¹ýºÃÏñDynamo
±¾ÉíÒ²±»ºÜ¶àÈËÅç), ÿһ¸ö½Úµã¶¼ÊǶԵȽṹ, ÿһ¸ö½Úµã´æ´¢ÁËËùÓеÄÔªÐÅÏ¢¡£ÎªÊ²Ã´Õâô×ö?
ĿǰÖ÷Á÷µÄÉè¼ÆÒ»°ãÊÇÁ½ÖÖ£º
BigTable Ϊ´ú±íµÄ, ÓÐMetaServer, DataServerµÄÉè¼Æ, MetaServer´æ´¢ÔªÊý¾ÝÐÅÏ¢,
DataServer´æ´¢Êµ¼ÊµÄÊý¾Ý¡£°üÀ¨ BigTable, HBase, °Ù¶ÈµÄMolaµÈµÈ¡£
Dynamo Ϊ´ú±íµÄ, ¶ÔµÈ½á¹¹Éè¼Æ. ÿһ¸ö½Úµã¶¼ÊÇÒ»ÑùµÄ½á¹¹, ÿһ¸ö½Úµã¶¼±£´æÁËÊý¾ÝµÄÔªÐÅÏ¢ÒÔ¼°Êý¾Ý.
°üÀ¨ Cassandra, Riak µÈµÈ¡£
Bada µÄÑ¡Ôñ
ÆäʵÎÒ¾õµÃÁ½¸ö½á¹¹¶¼ÊǺÏÊʵġ£ÎªÁ˲¿Êð, À©Õ¹µÈ·½±ã£¬ÎÒÃDz»Ï£Íû²¿ÊðµÄʱºòÐèÒª·Ö¿ª²¿ÊðMeta½Úµã,
Data½Úµã¡£¼ÆËã»úÐÐÒµ, ¼ÓÒ»²ã¿ÉÒÔ½â¾ö´ó²¿·ÖÎÊÌâ, Òò´ËÎÒÃǾõµÃ¶ÔµÈÍøÂçµÄÉè¼Æ¸üÓÐÌôÕ½ÐÔ¡£¸öÈ˹۵ã,
ÔÚÊý¾ÝÁ¿¸ü´óµÄÇé¿öÏÂ, Meta ½Úµã¼«ÓпÉÄܳÉΪƿ¾±¡£µ±È»DynamoµÄ½á¹¹¿Ï¶¨Ò²ÓÐ×ÔÉíµÄȱµã,
±ÈÈçÈçºÎ±£Ö¤ÔªÊý¾ÝµÄÒ»ÖÂÐÔµÈÎÊÌâ¡£
Data ServerÖ÷Ҫģ¿é
Network Proxy£º ÓÃÓÚ½ÓÊÕ¿Í»§¶ËµÄÇëÇó, ÎÒÃǵÄÐÒéÊǶ¨ÖƵÄprotobuf ÐÒé, Network
ProxyÄ£¿é¸ºÔð½âÎöÐÒé, È»ºóÇëÇóת·¢µ½¶ÔÓ¦µÄ½Úµã
Meta Info£º ÓÃÓÚ´æ´¢¹«¹²µÄÔªÐÅÏ¢, ÔªÐÅÏ¢°üÀ¨Ã¿Ò»¸ö·ÖƬ´æ´¢ÔÚÄĸö½Úµã
DB Engine£º ÎÒÃǵ×ϵÄÒýÇæÊÇ»ùÓÚLevelDBµÄ¶¨ÖÆ»¯¿ª·¢, °üÀ¨Ö§³Öcas, ¹ýÆÚʱ¼ä,
¶àÊý¾Ý½á¹¹µÈµÈ
Êý¾Ý·Ö²¼²ßÂÔ

¿ÉÒÔ¿´µ½ÎÒÃÇĿǰʹÓõÄÊÇÓÐÖ÷´ÓµÄ¸±±¾²ßÂÔ, ͼÖеÄPrimary ÊÇÖ÷½Úµã, Secondary ÊǴӽڵ㡣ΪʲôÕâô×ö?
Ê×ÏÈΪʲô²»Ê¹ÓÃec±àÂë(erasure code ¾ÀɾÂë), ÒòΪec±àÂëÖ÷ÒªÓÃÓÚ±£´æÆ«ÀäÊý¾Ý,
ec±àÂëÓöµ½µÄÎÊÌâÊÇÈç¹ûijһ¸ö¸±±¾¹ÒµôÒÔºó, ÏëÒª»Ö¸´¸±±¾µÄ¹ý³Ì±ØÐëÓëÆäËû¶à¸ö½Úµã½øÐÐͨÐÅÀ´»Ö¸´Êý¾Ý,
»áÕճɴóÁ¿µÄÍøÂ翪Ïú. Òò´ËÕâÀï3¸±±¾¸üºÏÊÊ¡£
³£¼ûµÄ·Ö²¼Ê½ÏµÍ³µÄ¶à¸±±¾²ßÂÔÖ÷Òª·Ö³ÉÁ½Àࣺ
ÒÔCassandra, Dynamo ΪÖ÷µÄ, ûÓÐÖ÷´Ó½á¹¹µÄÉè¼Æ, ¶ÁдµÄʱºòÂú×ãquorum W
+ R > N, Òò´ËдÈëµÄʱºòдÈë2¸ö¸±±¾³É¹¦²ÅÄÜ·µ»Ø¡£¶ÁµÄʱºòÐèÒª¶Á¸±±¾È»ºó·µ»Ø×îеġ£ÕâÀïµÄ×îпÉÒÔÊÇʱ¼ä´Á»òÕßÂ߼ʱ¼ä¡£
ÒÔMongoDB, BadaΪÖ÷µÄ, ÓÐÖ÷´Ó½á¹¹µÄÉè¼Æ, ÄÇô¶ÁдµÄʱºò, ¿Í»§¶Ë·ÃÎʵͼÊÇÖ÷¸±±¾,
ͨ¹ýbinlog/oplog À´½«Êý¾Ýͬ²½¸ø´Ó¸±±¾¡£
Á½ÖÖÉè¼Æ¶¼Ö»ÄÜÂú×ã×îÖÕÒ»ÖÂÐÔ¡£ÄÇôÎÒÃÇÔÙ´ÓCAPÀíÂÛÉÏ¿´, ÄÇô¶¼ÊÇÔÚÄÄЩά¶È×öÁËȨºâ?
´ÓÐÔÄÜÉÏÀ´¿´,ÓÐÖ÷´ÓµÄÉè¼ÆºÜÃ÷ÏÔÐÔÄÜ»áÓÉÓÚÎÞÖ÷´ÓµÄ, ÒòΪÓÐÖ÷´ÓµÄÉè¼ÆÖ»ÐèÒª·ÃÎÊÒ»¸ö¸±±¾¾Í¿ÉÒÔ·µ»Ø,
¶øÎÞÖ÷´ÓµÄÖÁÉÙÁ½¸ö¸±±¾·µ»Ø²Å¿ÉÒÔ¡£
´ÓÒ»ÖÂÐÔÀ´¿´£¬ÓÐÖ÷´ÓµÄÉè¼ÆÈç¹û¹ÒµôÒ»¸ö½Úµã, Èç¹ûÕâ¸ö½ÚµãÊÇÖ÷, ÄÇô¾Í»áÔì³ÉÓÉÓÚÊý¾Ýͬ²½µÄ²»¼°Ê±,
Õâ¶Îʱ¼äдÈëµÄÊý¾Ý¶ª¡£Èç¹û¹ÒµôµÄÊÇ´Ó½Úµã, ÄÇôÔò¶ÔÊý¾ÝûÓÐÈκεÄÓ°Ïì¡£Ö»ÒªÕâ¸ö½ÚµãÔÚ½ÓÏÂÀ´µÄʱ¼äÄÚÄܹ»ÆðÀ´¼´¿É¡£ÎÞÖ÷´ÓµÄÉè¼ÆÈç¹û¹ÒµôÒ»¸ö½Úµã,
ÀíÂÛÉ϶Խá¹ûÊÇÎÞÓ°ÏìµÄ, ÒòΪ·µ»ØµÄʱºò»á±È½Ï×îеĽá¹û¡£ÓÐÖ÷´ÓµÄ½á¹¹ÓÉÓÚдÈë¶¼ÔÚÒ»¸ö½Úµã, Òò´Ë²»´æÔÚ³åÍ»¡£¶øÎÞÖ÷´ÓµÄ½á¹¹ÓÉÓÚдÈëµÄÊÇÈÎÒâµÄÁ½¸ö¸±±¾,
»á´æÔÚ¶Ôͬһ¸ökeyµÄÐÞ¸ÄÔÚ²»Í¬µÄ¸±±¾, µ¼Ö¿ͻ§¶Ë¶ÁÈ¡µÄʱºòÊÇÁ½¸ö²»Ò»Öµİ汾, Õâ¸öʱºò¾ÍÐèҪȥ½â¾ö³åÍ»,
³£¼ûµÄ·½°¸¾ÍÉæ¼°µ½vector clock, ʱ¼ä´ÁµÈµÈ¡£²»¹ý, ×ÜÌåÀ´¿´ÎÞÖ÷´ÓµÄÉè¼ÆÒ»ÖÂÐÔÓ¦¸ÃÓÅÓÚÓÐÖ÷´ÓµÄÉè¼Æ¡£
´Ó·ÖÇøÈÝ´íÀ´¿´, Á½±ß¶¼±ØÐëÓÐÒ»°ëÒÔÉÏµÄ½Úµã´æ»î²ÅÄܹ»¶ÔÍâÌṩ·þÎñ, ÒòΪÓÐÖ÷´ÓµÄÉè¼ÆÖбØÐë»ñµÃ³¬¹ýÒ»°ë½ÚµãµÄͶƱ²ÅÄܳÉΪÖ÷½Úµã¡£¶øÎÞÖ÷´ÓµÄ½á¹¹,
³£¼ûÔÚW = 2, R = 2µÄÇé¿öÏÂ, ±ØÐë2¸ö¸±±¾ÒÔÉϲÅÄܶÔÍâÌṩ·þÎñ¡£
´Ó¿É¿¿ÐÔÀ´¿´,ÓÐÖ÷´ÓµÄÉè¼ÆÒòΪֻ·ÃÎÊÒ»¸ö¸±±¾, ÐÔÄÜÓÅÓÚÎÞÖ÷´ÓµÄÉè¼Æ¡£¶øÇÒÎÞÖ÷´ÓµÄÉè¼ÆÖÐ, ÒòΪ¶Ôµ¥ÌõÊý¾Ý±ØÐëÓÐÁ½´Î¶ÁÈ¡,
Òò´Ë¶ÔϵͳµÄ·ÃÎÊѹÁ¦Ò²»á±ÈÎÞÖ÷´ÓµÄÀ´µÄ¶à¡£µ±È»ÓÐÖ÷´ÓµÄÉè¼ÆÈÝÒ×Ôì³ÉÖ÷ÂäÔÚͬһ¸ö»úÆ÷ÉÏ, Ôì³É¸ºÔز»¾ùµÄÇé¿ö,
µ«ÊÇÕâÀïÖ»Òª½«Ö÷ƽ¾ùµ½ËùÓеĻúÆ÷, ¾Í¿ÉÒÔ½â¾öÕâ¸öÎÊÌâ¡£µ«ÊÇÓÐÖ÷´ÓµÄÉè¼ÆÔÚÇл»Ö÷´ÓµÄʱºò, ±ØÈ»ÓÐÒ»¶Îʱ¼äÎÞ·¨¶ÔÍâÌṩ·þÎñ,
¶øÎÞÖ÷´ÓµÄÉè¼ÆÔò²»´æÔÚÕâÑùµÄÎÊÌâ¡£×ÜÌåÀ´Ëµ, ±ÊÕßÈÏΪ´Ó¿É¿¿ÐԵĽǶÈÀ´Ëµ, ÓÐÖ÷´ÓµÄÉè¼ÆÓ¦¸Ã±ÈÎÞÖ÷´ÓÀ´µÄ¿É¿¿¡£
ÎÒÃÇʹÓõÄÊÇÓÐÖ÷´Ó½á¹¹µÄÉè¼Æ, ÔÒò:
BadaÖ÷ÒªµÄÓ¦Óó¡¾°¶ÔÐÔÄܵÄÒªÇó±È½Ï¸ß, ´ó²¿·ÖµÄÇëÇóÐèÒªÔÚ1ms×óÓÒµÄʱ¼ä·µ»Ø, Òò´ËÓÐÖ÷´ÓµÄÉè¼Æ,
ÐÔÄܸüÂú×ãÐèÇó
ÏßÉÏ·þÎñµÄ¿É¿¿ÐÔÊÇÎÒÃÇÁíÍâÒ»¸ö¿¼ÂǵÄÒòËØ
¾ßÌåµÄ·ÖÎö¹ý³Ì¿ÉÒÔ¿´ http://baotiao.github.io/2015/03/Bada-design-replicaset/
Êý¾Ý·ÖƬ²ßÂÔ,ÎÒÃǽÐÁ½´ÎÓ³Éä.
key -> PartitionId(hash)
PartitionId -> Node(MetaData)
±ÈÈçÉÏÃæÕâÕÅͼÖÐÎÒÃÇ¿ÉÒÔ¿´³ö, ÎÒÃǽ«ËùÓÐÊý¾Ý·Ö³É10¸öPartition, È»ºóÿһ¸ö»úÆ÷´æÓÐÖ÷½ÚµãºÍ´Ó½Úµã.
ÎÒÃǻᾡ¿ÉÄܵı£Ö¤Ã¿Ò»¸ö»úÆ÷ÉÏÃæµÄÖ÷½ÚµãÊÇÒ»Ñù¶àµÄ, ÕâÑùÄܹ»×öµ½Ã¿Ò»¸ö½ÚµãµÄ¸ºÔض¼ÊǾùºâµÄ¡£
ÇëÇóÁ÷³Ì
µ±ÇëÇóµÄÊý¾ÝPrimaryÕýºÃÊǵ±Ç°Õâ¸ö½Úµã

µ±ÇëÇóµÄÊý¾ÝPrimary ²»Êǵ±Ç°½Úµã

¶à»ú·¿¼Ü¹¹
360µÄ»ú·¿ÊDZȽ϶àµÄ, ¶øÇÒijЩ»ú·¿Ö®¼äµÄÍøÂç½Ï²î¡£ÒµÎñ²¿ÊðÒ»¸ö·þÎñµÄʱºò, ºó¶ËµÄDBÒ²ÐèÒª²¿ÊðÔÚ¶à¸ö»ú·¿ÉÏ,
Òò´ËÕâ¸ö³£³£ÊÇÒµÎñµÄÍ´µã¡£Òò´ËÎÒÃÇÉè¼ÆÖ®³õ¾Í¿¼ÂǶà»ú·¿µÄ¼Ü¹¹¡£
ÎÒÃǵĶà»ú·¿¼Ü¹¹Äܱ£Ö¤
Óû§²»ÓùÜÀí¶à¸ö»ú·¿, ÈÎÒâÒ»¸ö»ú·¿Êý¾ÝдÈë, ÆäËû»ú·¿Äܹ»¶ÁÈ¡
ÔÚ»ú·¿´æÔÚÎÊÌâµÄʱºò, ÎÒÃÇ¿ÉÒÔÁ¢¿ÌÇл»»ú·¿µÄÁ÷Á¿
Ìṩÿһ¸ö»ú·¿Ö®¼äÊý¾ÝµÄͳ¼ÆºÍCheck
ÕûÌåʵÏÖ
Õâ¸öÊÇĿǰLBSÒµÎñµÄ³¡¾°

¿ÉÒÔ¿´³öÎÒÃÇÕâÀïÓÐÒ»¸öרÃŵĶÓÁÐÓÃÓÚͬ²½»ú·¿Ö®¼äµÄÊý¾Ý¡£Õâ¸öQBus ÊÇÎÒÃÇÍŶÓÄÚ²¿»ùÓÚkafka¿ª·¢µÄÏûÏ¢¶ÓÁзþÎñ¡£
ĿǰÖ÷Á÷µÄ»ú·¿Í¬²½·½·¨Ò²ÊÇÁ½ÖÖ£º
½Úµã¸ºÔð»ú·¿Êý¾ÝµÄͬ²½, ±ÈÈçCassandra, CouchBase, Riak
ÓÉÍⲿµÄ¶ÓÁÐÀ´Í¬²½»ú·¿Ö®¼äµÄÊý¾Ý, ±ÈÈç Yahoo pnuts
Cassandra ×ö·¨

ÔÚдÈëµÄʱºò, ÿһ¸ö»ú·¿µÄе÷Õß¡£±ÈÈçÕâ¸öͼÀïÃæ10Õâ¸ö½Úµã¡£»á°ÑдÈë·¢Ë͸øÆäËü»ú·¿µÄijһ¸ö½Úµã,
Õâ¸öʱºòClientÕâ±ßÊÕµ½µÄÖ»ÊǸù¾ÝÅäÖõÄÒ»ÖÂÐÔ¼¶±ð¾Í¿ÉÒÔ·µ»Ø, ±ÈÈçÕâÀïÅäÖõÄÖ»Òª1¸ö·µ»Ø¼´¿É,
ÄÇôClientдÈë³É¹¦10Õâ¸ö½ÚµãÒÔºó,¼´¿É·µ»Ø¡£ÖÁÓÚÓëÆäËû»ú·¿Í¬²½ÊÇ10Õâ¸ö½ÚµãµÄÊÂÇé, ÕâÑù×Ó¿Í»§¶ËµÄдÈë¾Í¿ÉÒÔÔÚ±¾µØÐ´Èë,
²»Óùܶà»ú·¿µÄlatency¡£
ÕâÀïÎÒÃÇ¿ÉÒÔ¿´µ½ÊÇEventual Consistency. ÄÇôCassandraÊÇÈçºÎ×öµ½³åÍ»ÐÞ¸´µÄÄØ.
ÕâÀïCassandra ¶ÁµÄʱºòÓÐÒ»¸öRead Repair »úÖÆ, ¾ÍÊǶÁÈ¡µÄʱºò¶ÁÈ¡±¾µØ¶à¸ö¸±±¾.
Èç¹û¸±±¾²»Ò»ÖÂ, ÄÇô¾Íѡʱ¼ä´Á×îеÄÖØÐÂдÈë. ÈÃÊý¾ÝÖØÐÂͬ²½, ÕâÀïCassandraÖ»ÊÇ˵ÐÞ¸´±¾µØ¶à¸±±¾Êý¾Ý²»Ò»Öµķ½·¨,
ͬÑùµÄ·½·¨ÎÒÃÇÒ²¿ÉÒÔÓÃÔÚ¶à¸öIDCÀïÃæ, ¿ÉÒÔͬʱÅܶà¸öÈÎÎñcheck²»Í¬»ú·¿µÄÊý¾Ý, È»ºóÐÞ¸´ËûÃÇ¡£
CouchBase ×ö·¨

Continuous ReplicationÌṩÅäÖõIJ»Í¬ServerÖ®¼äͬ²½µÄStreamµÄ¸öÊý£¬Ò²¾ÍÊDz»Í¬µÄ»ú·¿Ö®¼äÁ¬½ÓµÄÊýÄ¿ÊÇ¿ÉÅäÖõġ£½â¾ö³åÍ»°ì·¨.CouchBaseÌṩµÄÊÇ×îÖÕÒ»ÖÂÐԵķ½·¨£¬²»Í¬µÄ°æ±¾Ö®¼äÊ×Ïȸù¾ÝÐ޸ĵĴÎÊý,
È»ºóÊÇÐÞ¸Äʱ¼äµÈÐÅÏ¢¡£
ÎÒÃÇ×îºó¿¼ÂǵÄÊÇʹÓÃÍŶÓÄÚ²¿µÄQBus×÷ΪÎÒÃÇͨÐŵĶÓÁÐ, Ö÷Òª¿¼ÂÇ
ʡȥÁË×Ô¼ºÊµÏÖ¶ÓÁеÄÂé·³
Îȶ¨ÔËÐÐÓÚÏßÉÏ, ÓÐרÃŵÄͬÊÂά»¤. ¼õÉٵĺܶàÎÊÌâ
Bada ĿǰÏßÉÏ3ÖÖ¶à»ú·¿µÄʹÓó¡¾°
µ¥»ú·¿Ð´Èë, ÈÎÒâ»ú·¿¶ÁÈ¡
¿ç»ú·¿Ð´Èë, ÈÎÒâ»ú·¿¶ÁÈ¡
ÈÎÒâ»ú·¿Ð´Èë, ÈÎÒâ»ú·¿¶ÁÈ¡
ÎÒÃǵÄʵÏÖ·½°¸Ò²ÊÇͨ¹ýQConfÀ´ÊµÏÖ¡£¿Í»§¶Ë·ÃÎʵÄʱºò, ´ÓQConfÖжÁȡĿǰÐèÒª·ÃÎʵĻú·¿,
ĬÈÏÊÇ·ÃÎʱ¾»ú·¿, Èç¹ûÐèÒª¿ç»ú·¿·ÃÎÊ, ½«QConfÖеÄÅäÖÃÖÆ¶¨³ÉÐèÒª·ÃÎʵĻú·¿¾Í¿ÉÒÔÁË¡£
¶à»ú·¿Ð´ÈëµÄ³åÍ»½â¾ö·½°¸
ʱ¼ä´Á×îÐÂ
ÈÎÒâ»ú·¿Ð´ÈëÊý¾Ý, ¸ù¾Ýʱ¼ä´ÁÀ´½øÐгåÍ»½â¾ö¡£
Yahoo Pnuts Primary Key
ÕâÀïÎÒÃǶÔÿһ¸öKey ÓÐÒ»¸öPrimary IDC, Ò²¾ÍÊÇÕâ¸öKeyµÄÐÞ¸Äɾ³ýµÈ²Ù×÷¶¼Ö»»áÔÚµ±Ç°Õâ¸öIDCÍê³É,
È»ºó¶ÁÈ¡¿ÉÒÔÓжà¸öIDCÈ¥¶ÁÈ¡. ÄÇôÒòΪ¶ÔÓÚͬһ¸öKeyµÄÐÞ¸Ä, ÎÒÃǶ¼ÔÚͬһ¸öIDCÉÏ. ÎÒÃÇͨ¹ý¸øÃ¿Ò»¸öKey¼ÓÉÏÒ»¸öVersionÐÅÏ¢,
ÀàËÆMemcachedµÄcas²Ù×÷, ÄÇôÎÒÃǾͿÉÒÔ±£Ö¤×öµ½Ö§³Öµ¥ÌõÊý¾ÝµÄÊÂÎñ¡£Èç¹ûÕâÌõÊý¾ÝµÄPrimary
IDCÊÇÔÚ±¾»ú·¿, ÄÇô²åÈë²Ù×÷ºÜ¿ì¡£
Èç¹ûÕâÌõÊý¾ÝµÄPrimary IDC²»ÊDZ¾»ú·¿, ÄÇô¾ÍÓÐÒ»¸öCross IDCµÄÐ޸IJÙ×÷, ÑÓ³Ù½«»á±È½Ï¸ß¡£²»¹ýÎÒÃÇ¿¼ÂÇÒ»ÏÂÎÒÃǴ󲿷ֵÄÓ¦Óó¡¾°,±ÈÈç΢²©,
90%µÄÊý¾ÝµÄÐÞ¸ÄÓ¦¸Ã»áÔÚͬһ¸ö»ú·¿¡£±ÈÈçÒ»¸öÓû§ÓÐÒ»¸öprofileÐÅÏ¢, ÄÇôºÍÐÞ¸ÄÕâ¸öÐÅÏ¢µÄ»ù±¾¶¼ÊÇÕâ¸öÓû§±¾ÈË,
90%µÄÇé¿öÏÂÓ¦¸Ã¾ÍÊÇÔÚͬһ¸öµØµã¸Ä, µ±È»Ð´ÈëÒ²»áÔÚͬһ¸ö»ú·¿. ËùÒԴ󲿷ֵÄÐÞ¸ÄÓ¦¸ÃÊÇͬһ¸ö»ú·¿µÄÐ޸ġ£µ«ÊÇ·ÃÎÊ¿ÉÄÜÀ´×Ô¸÷¸öµØ·½£¬µ±È»ÎªÁË×öÓÅ»¯,
ÓÐЩÊý¾Ý¿ÉÄÜÔÚÒ»¸öµØ·½Ð޸ĹýÁËÒÔºó, ¶à´ÎÔÚÆäËûµØ·½ÐÞ¸Ä, ÄÇôÎÒÃǾͿÉÒÔÐÞ¸ÄÕâ¸öKeyµÄPrimary
IDCµ½ÁíÍâÕâ¸ö»ú·¿¡£
Vector Lock
Vector LockµÄºËÐÄ˼Ïë¾ÍÊÇClient¶ÔÕâ¸öÊý¾ÝµÄÁ˽âÊÇÔ¶Ô¶³¬¹ý·þÎñ¶ËµÄ, ÒòΪ¶ÔÓÚ·þÎñ¶Ë¶øÑÔ,
Õâ¸öKey ¶ÔÓ¦µÄValue ¶ÔÓÚServer ¶ËÖ»ÊÇÒ»¸ö×Ö·û´®¡£¶øClient¶ËÄܹ»¾ßÌåÁ˽âÕâ¸öValueËù´ú±íµÄº¬Òå,
¶ÔÕâ¸öValue½øÐнâÎö¡£ÄÇô¶ÔÓÚÕâ¸öÀý×Ó£¬µ±ÕâÁ½¸ö²»Ò»ÑùµÄValueдÈëµ½Á½¸ö¸±±¾ÖеÄʱºò, Client½øÐÐÒ»´Î¶ÁÈ¡²Ù×÷¶ÁÈ¡Á˶à¸ö¸±±¾¡£
Client·¢ÏÖ¶Áµ½µÄÁ½¸ö¸±±¾µÄ½á¹ûÊÇÓгåÍ»µÄ, ÕâÀïÎÒÃǼÙÉèÔʼµÄKeyµÄVector LockÐÅÏ¢ÊÇ[X:1],
ÄÇôµÚÒ»´ÎÐ޸ľÍÊÇ[X:1,Y:1], ÁíÒ»¸ö¿Í»§¶ËÊÇ»ùÓÚ[X:1]µÄVector LockÐ޸ĵÄ,
ËùÒÔËüµÄVector LockÐÅÏ¢¾ÍÓ¦¸ÃÊÇ[X:1,Z:1]¡£Õâ¸öʱºòÎÒÃÇÖ»Òª¼ì²éÕâ¸öVector
LockÐÅÏ¢¾Í¿ÉÒÔ¿ÉÒÔ·¢ÏÖËûÃdzåÍ», Õâ¸ö¾ÍÊǾͽ»¸ø¿Í»§¶ËÈ¥´¦ÀíÕâ¸ö³åÍ».²¢°Ñ½á¹ûÖØÐÂUpdate¼´¿É¡£
ÎÒÃÇÏßÉÏĿǰ֧³ÖµÄÊÇʱ¼ä´Á×îÐÂ, ÒÔ¼°Primary KeyµÄ·½°¸. ´ó²¿·ÖʹÓõÄÊÇʱ¼ä´Á×îÐÂÀ´½øÐгåÍ»½â¾ö¡£
¶àÊý¾Ý½á¹¹Ö§³Ö
ÎÒÃÇ¿ª·¢ÁËÒ»Ì×»ùÓÚleveldbµÄ¶àÊý¾Ý½á¹¹µÄÒýÇæ¡£Ä¿Ç°Ö§³Ö Hash, List, Set, ZsetµÈ½á¹¹¡£
Ö÷ÒªÊÇÓÉÓÚÓû§Ï°¹ßÁËRedisÌṩµÄ¶àÊý¾Ý½á¹¹, Äܹ»Âú×ãÓÃÓÚ¿ìËÙ¿ª·¢ÒµÎñµÄ¹ý³Ì, Òò´ËÎÒÃÇÒ²ÌṩÁ˶àÊý¾Ý½á¹¹µÄÖ§³Ö¡£
Ϊʲô²»Ê¹ÓÃZooKeeper
ZooKeeper ºÍ mnesia¶Ô±È, ZooKeeper ÊÇÒ»¸ö·þÎñ, ¶ø mnesiaÊÇÒ»¸ö¿â,
Òò´ËÈç¹ûʹÓÃZooKeeperµÄ»°, ÎÒÃÇÐèÒª¶îÍâµÄά»¤Ò»Ì×·þÎñ¡£¶ø mnesia¿ÉÒÔÖ±½Ó¼¯³ÉÔÚ´úÂëÀïÃæ£¬Ê¹Óøü·½±ã¡£
mnesiaºÍ Erlang ¼¯³ÉµÄ¸üºÃ£¬mnesia±¾Éí¾ÍÊÇÓÃErlang À´¿ª·¢¡£
Bada ºÍ MongoDB¶Ô±È
360µÄMongoDB ֮ǰҲÊÇÎÒÃÇÍŶÓÔÚά»¤, ÔÚʹÓÃMongoDBµÄ¹ý³ÌÖÐ, ÎÒÃÇÒ²Óöµ½Ò»Ð©ÎÊÌâ,
±ÈÈçMongoDB µÄÀ©Èݷdz£²»·½±ã, À©ÈÝÐèÒªºÜ³¤µÄʱ¼ä, ÒòΪMongoDB À©ÈݵĹý³ÌÊǽ«Ò»ÌõÒ»ÌõµÄÊý¾ÝдÈëµÄ.
ÎÒÃÇ¿ª·¢µÄʱºò¿¼Âǵ½ÕâЩÎÊÌâ, Òò´ËBada ʹÓõÄÊÇleveldb, µ±ÐèÒªÀ©ÈݵÄʱºò, Ö»Òª½«Ä³Ò»¸ö·ÖƬÏÂÃæµÄÊý¾ÝÎļþ¿½±´¹ýÈ¥¼´¿É.
ǰÌáÊdzõʼ»¯µÄʱºò·ÖƬÉèÖõÄ×ã¹»´ó, ÎÒÃÇÏÖʵĬÈ쵀ᅮ¬ÊÇ1000ÒÔÉÏ¡£
MongoDB µÄÊý¾ÝÅòÕͶȱȽϴó, ÒòΪMongoDB ±Ï¾¹ÊÇÎĵµÐÍÊý¾Ý¿â, ¿Ï¶¨»á±£³ÖһЩÈßÓàÐÅÏ¢.
ÎÒÃǵ×ÏÂʹÓÃleveldb, leveldb ±¾ÉíµÄѹËõ¹¦ÄÜ»ùÓÚsnappy ѹËõ. »¹ÊÇ×öµÄ±È½ÏºÃ.
ÏßÉÏʵ¼ÊµÄ´ÅÅ̿ռä´óСÏà¶ÔÓÚMongoDB 4:1
Bada ºÍ Cassandra ¶Ô±È
CassandraµÄ¶¨Î»ºÍBadaÊDz»Ò»ÑùµÄ, ÎÒÃÇÃæÏòµÄÊÇÏßÉÏÆµ·±·ÃÎʵÄÈÈÊý¾Ý, Òò´ËÎÒÃÇÆ«ÏòÓڴ洢СvalueÊý¾Ý,
ÈÈÊý¾Ý, ¶Ôlatency µÄÒªÇó»á¿Á¿Ì¡£
±ÈÈçÔÚÔÆÅ̵ij¡¾°, ÎÒÃÇ´æ´¢µÄ¾ÍÊÇÎļþµÄË÷ÒýÐÅÏ¢, ¶øCassandra´æ´¢µÄÊǾßÌåµÄCassandraµÄÊý¾Ý,
Ò²Òò´ËÎÒÃÇÏßÉϲ¿ÊðBadaµÄ»úÆ÷ÊǹÒÔØSSDÅ̵ġ£
Bada ºÍ Redis ¶Ô±È
Bada µÄÐÔÄܱÈRedis µÍ, µ«ÊÇĿǰredis cluster »¹Ã»·¢Õ¹ÍêÉÆ. ÎÒÃǹ«Ë¾µÄDBAÒ²ÔÚ¸ú½øRedis
clusterÖ®ÖÐ. ËùÒÔµ±Êý¾ÝÁ¿±È½Ï´óµÄʱºò, Redis¿ÉÄܾͲ»ÊÊÓÃÓÚÕâô´óÁ¿µÄÊý¾Ý´æ´¢¡£
Bada µÄ¶àÊý¾Ý½á¹¹Ö§³Ö²»ÈçRedisÀ´µÃÍêÉÆ. Òò´ËÎÒÃÇÒ²ÔÚÖð²½µÄÖ§³ÖBadaµÄ¶àÊý¾Ý½á¹¹¡£
Redis ±Ï¾¹ÊÇÄÚ´æÐ͵ķþÎñ. Òò´Ë¼ÙÈçÓû§ÊÇÆ«ÏòÓÚ´æ´¢³Ö¾Ã»¯Êý¾Ý, ¿ÉÄÜRedis²»Ì«ºÏÊÊ¡£
һЩ·Ç¼¼ÊõµÄ¾Ñé
¼¼ÊõÊÇΪҵÎñ·þÎñ, °üÀ¨ÎÒÃÇBadaÔÚ¹«Ë¾ÄÚ²¿ÍƹãµÄ¹ý³ÌÖÐÒ²·¢ÏÖ, ÎÒÃǺܶàÒµÎñºÜÍ·ÌÛµÄÎÊÌâÔÚÓÚ360µÄ»ú·¿½Ï¶à,
ÿһ¸öСҵÎñ¶¼ÐèҪά»¤ÔÚ¶à¸ö»ú·¿, Òò´ËΪÁ˽µµÍÓû§µÄ¿ª·¢ÊÔ´í³É±¾, ÎÒÃǽ«Äܱê×¼»¯µÄÊÂÇé¶¼×öÁË¡£°üÀ¨ÎÒÃÇ×éµÄ¶¨Î»Ò²ÊÇרעµ×²ã¼¼Êõ,
¼ÓËÙ²úÆ·ÍŶӿª·¢Ð§ÂÊ, ¾¡¿ÉÄܽµµÍÒµÎñ¶Ô·þÎñ¶Ë¼¯Èº¼Ü¹¹µÄ¹Ø×¢¡£
Q&A£º
Q1:¿Í»§¶Ë·ÃÎÊBadaʱ£¬Ôõôȷ±£Êý¾ÝµÄ¾ùºâ?´ÓqconfÄõ½µÄÊÇÒ»¸öipÁбí°É?
Êǵġ£´ÓQConf ÖлñµÃÊÇËæ»úµÄÒ»¸ö½ÚµãµÄip£¬ËùÒÔ¶Ôÿһ¸ö½ÚµãµÄ·ÃÎÊ»ù±¾µÄ¾ùºâµÄ¡£·þÎñ¶ËÕâ±ß,
ÒòΪÎÒÃÇÊÇÓÐÖ÷´Ó½á¹¹µÄ¡£µ«ÊÇÎÒÃǵÄÖ÷´ÓÊÇ·ÖÆ¬¼¶±ðµÄÖ÷´Ó£¬ÕâµãºÍredis cluster ²»Ò»Ñù¡£±ÈÈç
Redis cluster ÓÐMaster ½Úµã, slave½Úµã£¬Ò»°ãÇé¿öslave ½Úµã²»½ÓÊÜÈκεÄÏßÉÏ·ÃÎÊ£¬µ«ÊÇ´ÓÏÂÃæµÄͼÖпÉÒÔ¿´µ½
Bada ÿһ¸ö½Úµã¶¼ÓÐÖ÷, ´Ó·ÖƬ¡£ ÒòΪÿһ¸ö½ÚµãµÄ·ÃÎÊ»ù±¾ÊǾùºâµÄ¡£

Q2:ÎÒÓÐÒ»¸öÎÊÌ⣬¶ÔÓÚkv´æ´¢£¬Ñ¡ÔñleveldbµÄ¶¯»úÊÇʲô?ÆäËûleveldb·ÖÖ§ÊÇ·ñ¿¼Âǹý?
¶ÔÓÚ´æ´¢µÄ¿¼ÂÇ, ÎÒÃÇ֮ǰ¶Ô Rocksdb ºÍ leveldb ×ö¹ý¶Ô±È.ÔÚÊý¾ÝÁ¿Ð¡µÄÇé¿öÏÂ, leveldb
µÄÐÔÄÜºÍ Rocksdb ÐÔÄܲ¶à. Êý¾ÝÁ¿´óµÄʱºò Rocksdb »áÓÐÐÔÄÜÓÅÊÆ. ÒòΪÎÒÃÇ֮ǰ¶Ôleveldb
×öÁËÐÞ¸Ä. ËùÒÔºóÐøÎÒÃÇ»áÇ¨ÒÆ¹ýÈ¥¡£ÕâÀïÎÒÃǵĶÁд¶¼×ßµÄÊÇ Master ½Úµã. Ö»Óе±Ö÷½Úµã¹ÒµôÒÔºó,
²Å»á·ÃÎʴӽڵ㡣


Õâ¸ö½ØÍ¼ÊÇ֮ǰ¶Ô leveldb ºÍ rocksdb ÔÚÊý¾ÝÁ¿±È½ÏСµÄÇé¿öϵĶԱÈ
Q3:ÄÜ·ñ˵һÏÂÀ©ÈÝ£¬ÐÂÔö½Úµã£¬ÒÔ¼°Õª³ýʧЧ½ÚµãµÄ´¦Àí?
´ÓÉÏÃæÁ½ÕÅͼÖпÉÒÔ¿´³ö, ÎÒÃǻὫÐÂÔöµÄ½ÚµãÖÐ, ¾ùºâµÄ½«ÐµÄÖ÷½ÚµãÇ¨ÒÆµÄнڵãÉÏ¡£Ä¿Ç°À©ÈݵĹý³ÌÊÇÕâÑù
ÎÒÃÇÏȰѵ±Ç°Õâ¸ö½Úµã¼ÓÈëµ½¼¯Èº¡£È»ºóͨ¹ý rebalance À´½øÐÐÆ½ºâ¡£ÎÒÃÇÒ»°ãÔ¤ÏÈ·ÖÅä1024
¸ö·ÖÅä¡£Õâ¸öÓ¦¸ÃÒ²ÊÇÒµÄÚ³¡¾°µÄ×ö·¨, ֮ǰ¶ÔÌÚѶµÄCKV Ò²ÊÇÕâô×ö£¬Riak Ò²ÊÇÕâô×ö¡£
Q4:Ç¨ÒÆÊÇÖ±½Ó¶Ôleveldb¸´ÖÆ£¬ÑÓʱ»áÓжàÉÙ£¬ÔÚÇ¨ÒÆ¹ý³ÌÖеķÃÎÊÈçºÎ´¦ÀíÄØ?


Ç¨ÒÆÊÇÖ±½Ó¶Ô leveldb µÄÎļþ½øÐи´ÖÆ, Õâ¸öʱºòÐÔÄÜÊÇÈ¡¾öÓÚÍøÂçµÄ¿ªÏú¡£ÕâÒ²ÊÇÎÒÃDZÈmongoÀ©ÈÝ¿ìµÄµØ·½,
mongo ÔÚÀ©ÈݵÄʱºòÐèÒª½«Êý¾ÝÒ»ÌõÒ»Ìõд¡£Ç¨ÒÆÖ®Ç°, ÎÒÃǻὫµ±Ç°Õâ¸ö½Úµã½øÐÐÇÐÖ÷²Ù×÷, ¾ÍÊǽ«ËùÓеÄÖ÷ÇÐ×ß¡£ÄÇôÕâ¸öʱºòÊDz»»áÓ°ÏìÏßÉÏ·ÃÎÊ£¬´øÀ´µÄ×î¶àµÄÓ°Ïì¾ÍÊÇÕâ¸ö½ÚµãµÄÍøÂçÓжîÍâµÄ¿ªÏú£¬µ«ÊÇÕâ¸ö½Úµã²»ÊÇÃæÏòÓû§µÄÇëÇóµÄ£¬ËùÒÔÓ°Ïì²»´ó¡£
Q5 :Ö÷ÇÐ×ßÒ²ÐèÒªÓÐÒ»¸öʱ¼ä°É?Õâ¸öʱ¼ä¶ÎÄÚ£¬Èç¹ûÒª·ÃÎÊÔÀ´Ö÷ÉϵÄÊý¾Ý£¬Ôõô´¦Àí?
ÕâÀïÊÇÕâÑùµÄÒ»¸ö¹ý³Ì, Ç¨ÒÆµÄʱºò±ÈÈçA ½Úµã¡£ ÄÇôA½ÚµãÉÏÓÐÖ÷·ÖƬ, ÄÇôÔÚÇ¨ÒÆÖ®Ç°£¬ÎÒÃÇ»áÏȽ«A½ÚµãÉϵÄÖ÷ÈøøÆäËû½Úµã¡£ÕâÀï¾ÍÉæ¼°µ½×·Binlog
µÄÎÊÌ⣬Èç¹ûÕâ¸öʱºòÓû§ÓдóÁ¿µÄÊý¾ÝдÈë, »áµ¼ÖÂBinlog Ò»Ö±×·²»Æë¡£È·Êµ»áµ¼ÖÂÎÞ·¨Ç¨ÒÆ¡£
Q6:¹ØÓÚleveldbµÄÇ¨ÒÆ£¬ÄÜ·ñÏêϸ½éÉÜÒ»ÏÂ?
leveldb µÄÇ¨ÒÆºÜ¼òµ¥£¬¾ÍÊÇÖ±½Óͨ¹ýscp ¾Í¿ÉÒÔÁË¡£Õâ¸öÊÇleveldb ±¾ÉíµÄ¹¦ÄÜ£¬¾ÍÊÇͨ¹ýscp
leveldb ¶ÔÓ¦µÄÊý¾ÝÎļþ¾Í¿ÉÒÔ¡£ÆäʵÎÒÃÇÔÚbinlog Õâ¿éÒ²×öÁËͦ¶àµÄÊÂÇé, ²»¹ý̫ϸÁËÓлú»áÏ´ν²¡£Ê¹ÓÃbinlog
À´Í¬²½µÄ¸±±¾²ßÂÔÖ®ÖÐ, ³£¼ûµÄÎÊÌâ±ÈÈ磬·Ö²¼Ê½ÏµÍ³ÖÐÓÉÓÚÖ÷´ÓÇл»µ¼ÖµÄÊý¾Ý¶ªÊ§£¬È»ºóÎÒÃÇÒ²¿ª·¢ÁËbinlog
merge À´¼õÉÙÕâÖÖÎÊÌâ´øÀ´µÄÓ°Ïì¡£
Q7:leveldbµÄ²¿·ÖÊý¾ÝÔÚÄÚ´æÖУ¬Õâ¸öÇ¨ÒÆµÄʱºòÔõô½â¾öµÄ?
Õâ¸öûÓÐÓ°Ïì¡£ÒòΪleveldb µÄmemtable µÄÊý¾ÝÔÚ´ÅÅÌÉÏÓжÔÓ¦µÄ.log Îļþ¡£leveldb
Æô¶¯µÄʱºò»áĬÈ϶ÁÈ¡.logÎļþ, ½«ÀïÃæµÄÄÚÈݼÓÔØµ½ÄÚ´æÖС£
Q8 : ÎÒ»¹ÊÇû̫Ã÷°×£¬À©ÈݵÄʱºò£¬A½ÚµãÇе½ÆäËû½Úµã£¬ÊǰÑAµÄmetaÐÅÏ¢×öÇл»£¬È»ºóÔÙ¸´ÖÆÊý¾Ý£¬×îºóÔÙÓ³Éämeta?
À©ÈݵÄʱºòÊÇÕâÑùÒ»¸ö¹ý³Ì¡£ÏȽ«ÐÂÔöµÄ½Úµã¼ÓÈëµ½ÏÖÓеļ¯Èº£¬²»¹ýÕâ¸ö½Úµã²»¸ºÔðÈÎºÎµÄ·ÖÆ¬, Òò´ËûÓÐÈκÎÊý¾ÝÔÚÕâ¸ö½ÚµãÉÏ;È»ºóÎÒÃÇÇ¨ÒÆµÄ¹ý³ÌÊǽڵãÉϵÄÒ»¸ö¸öµÄ·ÖƬ½øÐÐÇ¨ÒÆ¡£±ÈÈçA
Õâ¸ö½ÚµãÓÐ 10~20 Õ⼸¸ö·ÖƬ, ²¢ÇÒÕâ¸öʱºò 10~20 Õâ¸ö·ÖƬÊÇÖ÷, ÄÇôÒÀ´ÎÎÒÃÇÏȽ«AÕâ¸ö½ÚµãµÄ10~20±ä³É´Ó,
Õâ¸öʱºòÐèÒªÐÞ¸ÄmetaÐÅÏ¢¡£È»ºó½ÓÏÂÀ´ÊǸ´ÖƶÔÓ¦µÄÊý¾ÝÎļþµ½Ð½ڵã, ¸´ÖƽáÊøÒÔºó, ÐÞ¸Ä10~20
Õ⼸¸ö·ÖƬµ½ÐµÄÖ÷ÉÏ.×îºóÐÞ¸Ämeta ÐÅÏ¢ ,ºÍ´ó²¿·Öϵͳ±È×î´óµÄ²»Í¬ÔÚÓÚ Bada µÄÖ÷´ÓÊÇ·ÖÆ¬¼¶±ðµÄÖ÷´Ó,
²»Êǽڵ㼶±ðµÄÖ÷´Ó.ÕâÑùÈκβÙ×÷Ôì³ÉµÄÓ°Ïì¶¼ÊǷdz£Ð¡. ²¢ÇÒ¿ÉÒÔ×öµ½Ã¿¸ö½ÚµãµÄ¸ºÔؾ¡¿ÉÄܵľùºâ¡£
Q9:mnesiaÓÃÀ´´æ´¢metaÐÅÏ¢Âð?
mnesia ¶ÔÓÚÎÒÃǵĶ¨Î»¾ÍÀàËÆÓÚZooKeeper¡£ÓÐÁ½¸öÓÃ;, Ò»¸öÊÇÑ¡Ö÷µÄ¹ý³ÌÌṩһ¸öÈ«¾ÖµÄËø,
Ò»¸öÊDZ£´æÔªÐÅÏ¢¡£
Ϊʲô²»Ê¹ÓÃZooKeeper
ZooKeeper ºÍ mnesia ¶Ô±È, ZooKeeper ÊÇÒ»¸ö·þÎñ, ¶ømnesiaÊÇÒ»¸ö¿â,
Òò´ËÈç¹ûʹÓÃZooKeeperµÄ»°, ÎÒÃÇÐèÒª¶îÍâµÄά»¤Ò»Ì×·þÎñ. ¶ømnesia¿ÉÒÔÖ±½Ó¼¯³ÉÔÚ´úÂëÀïÃæ.
ʹÓøü·½±ã
mnesia ºÍ erlang ¼¯³ÉµÄ¸üºÃ. mnesia±¾Éí¾ÍÊÇÓÃErlang À´¿ª·¢
Q10:metaÐÅÏ¢ÊÇ´æ´¢ÔÚµ¥¶ÀµÄ»úÆ÷ÉÏ£¬¶ø²»ÊÇ·Ö²¼ÔÚ´æ´¢½ÚµãÉÏÂð?
²»ÊÇ, ´æ´¢ÔÚÿһ¸ö½ÚµãÉÏ. ÿһ¸ö½Úµã¶¼²¿ÓÐmnesia
Q11:¼ÈÈ»ÓÃmnesia£¬ÄÇÄãǰ¶Ë»úÆ÷Á¬ÔÚÒ»¸ö¼¯Èº?¹æÄ£¶à´ó?
ǰ¶ËÊǰ´ÕÕÒµÎñ»®·ÖµÄ,×î´óµÄÓÐ30¼¸¸ö½Úµã.
|