±à¼ÍƼö: |
ÎÄÕ½²½âʲôʲô³¡¾°ÊʺÏÓ÷ֲ¼Ê½¼Ü¹¹£¬·Ö²¼Ê½Êý¾Ý¿âÌØµã£¬·Ö²¼Ê½Êý¾Ý¿â¡ª¡ªshard£¬·Ö²¼Ê½×î´óµÄÎÊÌ⡪¡ª·Ö²¼Ê½ÊÂÎñ£¬Ï£Íû¶ÔÄúÓÐËù°ïÖú,
±¾ÎÄÀ´×Ô²©¿ÍÔ°£¬ÓÉ»ðÁú¹ûÈí¼þDelores±à¼¡¢ÍƼö¡£ |
|

×ԴӹȸèÌá³ö·Ö²¼Ê½Õâ¸ö¸ÅÄî,Õâ¸öÍæÒâÌ«»ðÁË,µ«ÊDz¢²»ÊÇËùÓеÄÒµÎñ³¡¾°¶¼ÊʺÏÓ÷ֲ¼Ê½µÄ
ʲô³¡¾°ÊʺÏÓ÷ֲ¼Ê½¼Ü¹¹£¿
ÍøÒ×·Ö²¼Ê½ÓõÄ×îºÃµÄÁ½¸öÏîÄ¿£ºÍøÒ׿¼À && ÍøÒ×ÔÆÒôÀÖ(¸èµ¥¿âµ¥±í°ÙÒÚÒÔÉϼǼ¡¢ÆÀÂÛ¿â)
¿ìµÝÐÐÒµ
΢Ðźì°ü
ÆäËûÒµÎñ¶¼ÊÇÓÐʱ¼äά¶ÈµÄ,¿ÉÄÜÖ»ÐèÒª´æ3¸öÔµÄÔÚÏßÊý¾Ý,ËãÏÂÀ´Ò²¾Í2kw,ÄÇΪʲô»¹Òª×ö·Ö²¼Ê½¼Ü¹¹ÄØ£¿
ËùÒÔ²»ÒªÃÔÐÅ·Ö²¼Ê½¼Ü¹¹ºÍ·Ö¿â·Ö±í
tips£º
µ¥Ì¨·þÎñÆ÷¼¸Ç§qpsû±ØÒª·Ö,Á½ÈýÍòµÄ»°¿ÉÒÔ·Ö
¢ñ¡¢·Ö²¼Ê½Êý¾Ý¿âÌØµã
Óŵã
¿ÉÓÃÐÔÌá¸ß
¿ÉÀ©Õ¹ÐÔÌáÉý(³¶µ,MySQLÏÖÔÚ4¸ö½ÚµãÀ©8¸ö½ÚµãÔõô°ì£¿Êý¾Ý¿â²»ÊÇredis,redisÀïÃæÄÚ´æÊý¾Ý¿ÉÒÔ¶ªµô,ÉõÖÁredisµ¥Ï̵߳Ä×öÕâЩ¶¼ºÃŪ,MySQL²¢²»ÊÇ,8À©12µÄ»°,ÔÀ´µÄÊý¾Ý¶¼Òª´òÉ¢Ò»±é,ÔÀ´8¸ö»úÆ÷,hash8¸ö,ÏÖÔÚ±ä12¸ö,Êý¾ÝÈ«²¿´òÉ¢,Èç¹û8*500G,4TÊý¾Ý´òÉ¢µ½12¸ö½Úµã,Ôõô´òÉ¢,Õâô¶à±í)£¬MySQL¿ÉÀ©Õ¹ÐÔµÄÌáÉýÊǺÜÄÑ´ïµ½µÄ,ÎÒÃǽèÖúÁíÍâһЩÊÖ¶ÎÀ´×öÀ©Õ¹ÐÔ£¬ÎªÊ²Ã´mongodb,redis,tidbÀ©Õ¹ÐÔÊǺõÄ,ÒòΪËûÃÇµÄ·ÖÆ¬²ßÂÔ¸üºÃ(Ò²ÓÐȱµã),ÊÇδÀ´±È½ÏºÃµÄģʽ,µ«ÊÇÔÚ¹ØÏµÐÍÊý¾Ý¿âÖкÜÄÑʵÏÖ,¶ÔMySQLÄں˺ÍÖмä¼þµÄ¸ÄÔìÌ«´óÁË
ijЩÇé¿öÏÂÍÌÍÂÂÊÌáÉýÏÔÖø ---´ó´óµÄÎʺÅ,Ö»ÓÐijЩ³¡¾°²Å»áÏÔÖøÌáÉý£¬
ÔÀ´Ò»Ì¨»úÆ÷,²ð³É°Ę̈»úÆ÷,ÄǾÍÐÔÄÜÌáÉý°Ë±¶£¿ÕâÊDz»´æÔÚµÄ
ȱµã
ÒÀÀµÖмä¼þ(²»ÒÀÀµÖмä¼þ¾ÍÒªÔÚÒµÎñ²ã×ö),Òµ½ç»ù±¾ÉÏÕÒ²»µ½Ò»¸öºÃµÄÖмä¼þ,mycat¿ÉÒÔÓÃ,µ«ÊÇÉú²úÉϲ»½¨Òé
SQLÓï¾äÖ§³Ö²»×ã(Öмä¼þÖ§³ÖµÄsql·Ç³£ÓÐÏÞ,¶à±íjoin,×Ó²éѯ,ÅÉÉú±íÕâЩ¹À¼ÆÍ治ת,mongodb,redis,tidb²»×öÕâЩ)
ÔËά¸´ÔÓ¶ÈÌá¸ß
ijЩÇé¿öÏÂÐÔÄÜϽµ¾Þ´ó
¢ò¡¢·Ö²¼Ê½Êý¾Ý¿â¡ª¡ªshard
2.1 shardÏà¹Ø¸ÅÄî
A database shard is a horizontal partition(ˮƽ·ÖÇø) of data in a database. Each individual partition is referred to as a shard or database shard. Each shard is held on a separete database server instance,to spread load.
shardingºÍ·ÖÇøµÄÒìͬ
Ïàͬ£º´òÉ¢Êý¾Ý
²»Í¬£º´òÉ¢µÄÊý¾Ý¿ÉÄܲ»ÔÚͬһʵÀýÉÏ
×ܽ᣺shardingµÄʵÏַdz£¸´ÔÓ
¾Ù¸öÀõ×Ó
orders±í,¸ù¾ÝÈÕÆÚ×ö·ÖÇø,ÿ¸öÔÂÒ»ÕŶ©µ¥±í,»¹ÊÇÔÚһ̨MySQLÉÏ
×ö·ÖƬµÄ»°,°ÑÒ»Õűí,·Öµ½ËĄ̈MySQLÉÏÈ¥
ÔÚ·ÖÇøÖУº
Õâ¸öid½Ð×ö·ÖÇø¼ü
ÔÚshardÖУº°ÑÕâ¸ö·ÖÇø¼ü½Ð×÷¾ùºâ×Ö¶Î
°Ñid ×÷hash,%4 À´·Öµ½Ëĸö»úÆ÷ÉÏ,°Ñdate ×÷rangeÒ²¿ÉÒÔ
Èç¹û¸ù¾Ýorder_key·ÖÁËËĸö»úÆ÷
select * from
orders where order_key = ? |
ÕâÑùÐÔÄܾÍÌáÉýÁË
ÔõôÕÒµ½Õâ¸ö»úÆ÷ÄØ£º
·¨1£ºÒµÎñ²ã¿ØÖÆ,¸ù¾Ý·ÖÇø¹æÔò¸ã,Èç¹ûorder_keyÊÇintÀàÐÍ,ÄǾÍ%4,¸ù¾Ý½á¹ûÏ·¢µ½¶ÔÓ¦µÄDatanode(ip)
·¨2£ºÖмä¼þ,client²»ÓùØÐĺó¶ËµÄ·Ö¿â¹æÔò,¾ùºâ×Ö¶ÎÕâЩ,clientÖ±½Óͨ¹ýMySQLÐÒé·ÃÎÊÖмä¼þ,Öмä¼þ×Ô¶¯°ïÄã¼ÆËã¸Ã·ÃÎÊÄĸö½Úµã,sqlµÄ¸ÄдÓÉÖмä¼þÀ´×ö,ÏñÎÒÃÇÉÏÃæÕâ¸ösql¾Í²»ÓøÄд,ֻҪתһÏÂip¾ÍÐÐ
Á½¸öÎÊÌ⣺
Á½ÖÖ·½·¨£ºÄĸöÐÔÄܸüºÃ,Ϊʲô£¿
·¨1¸üºÃ,Ö±½ÓÁ¬Êý¾Ý¿â,·¨2¶àÁËÒ»²ã,Öмä¼þµÄÓÅÊÆÔÚÓÚ,¿ª·¢ÈËÔ±¸ü·½±ãд´úÂë,¾ÍºÍÖ±½ÓÁ¬Êý¾Ý¿âÒ»ÑùÓÃ,ÆäËûÊÂÇé¶¼½»¸øÖмä¼þ
ÒµÎñÀïÃæÓÀÔ¶¶¼ÊÇÖ»ÓÐÕâôһ¸ö¼òµ¥µÄÐèÇóÂÈç¹û¸ù¾ÝÆäËû×ֶβéÑ¯ÄØ£¿»áÓÐÉÏÃæÎÊÌâÄØ£¿
ÄǾÍËùÓÐµÄ·ÖÆ¬¶¼ÒªÕÒÒ»±é,Äã¼ÓN¶à¸ö½Úµã,ÕâÑù»¹½Ð¿ÉÀ©Õ¹Â𣿽ڵãÔ½¶à,ÐÔÄÜÔ½²îÁ˶¼,ºÍ·ÖÇø±íµÄÊÇÒ»ÑùµÄµÀÀí,orders_partition±íÖпÉÒÔexplain¿´ÏÂÁ½ÖÖÇé¿ö,×ßË÷ÒýµÄ»°,1ÒÚµÄÊý¾ÝÁ¿ÏÂ,ºÍ1kwÊý¾ÝÁ¿ÏÂËÙ¶ÈÊÇÒ»ÑùµÄ,Äã·ÖÊ®¸öƬûʲôÒâÒå
2.2 ×öshardµÄÈý¸öÔÔò
¾¡¿ÉÄܴ󲿷ֵÄÒµÎñÂß¼¶¼ÊǸù¾Ý¾ùºâ×Ö¶Î,ÖÁÉٰٷÖÖ®80%,¸ü¸Ä·Ö²¼Ê½Êý¾Ý¿âÖеľùºâ×ֶηdz£Âé·³,±ØÐëÒ»¿ªÊ¼¾Í¹æ»®ºÅ±íµÄ¾ùºâ×Ö¶Î
Èç¹û²»ÄÜÑ¡ÔñÓÐЧµÄ¾ùºâ×Ö¶Î,ÕâÕűí¾Í²»Òª½øÐÐShard,×÷Ϊȫ¾Ö±í
Èç¹ûÒµÎñÑ¡Ôñ²»³öÓÐЧÂʵľùºâ×Ö¶Î,ÄÇô½øÐзֲ¼Ê½Êý¾Ý¿âµÄ¸ÄÔìÒ²½«ÊÇͽÀ͵Ä
tips£ºshardÒ»°ãÓÃhash´òÉ¢,ƽ¾ùµÄ,Èç¹ûûÓдòÉ¢¾ÍÊǾùºâ×Ö¶ÎûѡºÃ,¿ÉÒÔÑ¡ÔñÓöà¸ö×Ö¶Î×÷¾ùºâ×Ö¶Î
2.3 ¿´¿´±ðÈ˵ÄÒµÎñÔõôѡÔñ¾ùºâ×ֶεÄ
ÄãÆ½Ê±Ôõô¹äÌÔ±¦µÄ£¿
µã¿ªÌÔ±¦,ËùÓеIJéѯ¶¼ÊÇÂò¼Ò²éѯ,ÄãÄܲéÄãÀÏÆÅÂòÁËÄÄЩ¶«Î÷Âð£¿ËùÓеIJéѯ¶¼ÊǸù¾Ý×Ô¼ºµÄidÀ´²é(µÇ½ÊÇͨ¹ýÓû§ÖÐÐÄÀ´µÇ½µÄ)
ϵ¥ÁË,¶©µ¥ÀïÓÐuserid,¶©µ¥Ã÷ϸÖÐÒ²ÓÐuserid,µÇ½µ½ÌÔ±¦,²é×î½üһЩ¶©µ¥ÐÅÏ¢,¹ºÂò¼Ç¼,Ò²ÊǸù¾ÝuseridÀ´²éµÄ
ËùÒÔµçÉ̵ıí½á¹¹Éè¼Æ,ÓÐÕÅuser±í,ÓÃÀ´´æÓû§ÐÅÏ¢µÄ,ÀïÃæÓиöuserid
ÓÖÓÐÒ»¸öorders±í,¶©µ¥±íÀïÃæÒ²Óиöuserid
»¹Óиöorderline±í,Ò»¸ö¶©µ¥ÀïÏÂÁ˶àÉÙ¸öÉÌÆ·,ÀïÃæÒ²Óиöuserid
¿ÉÄÜ»¹Óиöfavorite±í,ÀïÃæÒ²ÓÐÒ»¸öuserid
coupon±í,»¹ÊÇÓиöuserid
×ÛÉÏ,ËùÓÐÂò¼ÒµÄÊý¾Ý¶¼ÓÐÒ»¸öuseridµÄ×Ö¶Î,Õâʱºò ÉÏÃæÕâЩ±í¾Í¿ÉÒÔ¸ù¾Ýuserid·Åµ½²»Í¬µÄshardÖÐ
ÕâÒâζ×ÅÊ²Ã´ÄØ£¿Ò»¸öÓû§µÄËùÓÐÐÅÏ¢ÊÇÔÚÒ»¸ö·ÖƬÉϵÄ,ÊDz»»á¿ç·ÖƬµÄ,²»´æÔÚÒ»¸ö²éѯҪ²éºÜ¶à¸ö·ÖƬµÄ
ËùÒÔÌÔ±¦µÄÒµÎñÊǷdz£ÈÝÒ××öÀ©Õ¹µÄ,Ö»Òª¼Ó»úÆ÷,°ÑÊý¾Ý´òÉ¢,¾ÍÊÇ¿ÉÀ©Õ¹µÄ
ËùÒÔ¶ÔÓÚµçÉ̵ÄÒµÎñÀ´Ëµ,Óиö·Ç³£ºÃµÄά¶È½ÐÂò¼Òά¶È,ËùÓеIJéѯ»ù±¾É϶¼ÊǸù¾ÝÂò¼Òid
ÄÇÍøÒ×ÔÆÒôÀֵĸ赥ÓÖÊÇÔõôŪµÄÄØ£¿
Ò²ÊÇuserid°¡,¹þ¹þ,¿´×Ô¼ºµÄ¸èµ¥,¿´±ðÈ˵ĸ赥,¶¼ÊÇÓõÄuserid
¿ìµÝÐÐÒµÓõÄÊÇʲô£¿
Ô˵¥ºÅ
΢Ðźì°üµÄ¾ùºâ×Ö¶ÎÊÇʲô£¿
Ò²ÊÇuserid,Ŷàë
ÉÏÃæËùÓеĶ¼ÒªÓÃÖмä¼þ,Ò»°ãÓÃmycat
¢ó¡¢·Ö²¼Ê½×î´óµÄÎÊÌ⡪¡ª·Ö²¼Ê½ÊÂÎñ
3.1 ΢Ðźì°ü°¸Àý
user<--->user<--->user
Öмä¼þ
client |
Èç¹ûһ̨»úÆ÷
begin;
update user set money = money - 100 where userid
= xxx;
update user set money = money + 100 where userid
= xxx;
commit; |
ÄÇ×ß·Ö²¼Ê½ÊÂÎñµÄ»°,ºÜÓпÉÄÜÕâÁ½¸öuserid²»ÔÚͬһ¸ö·ÖƬÀïÃæ
Õâ¸öÊÂÎñ¾Í±ä³ÉÁË·Ö²¼Ê½ÊÂÎñ,Ê×ÏÈ,mycat²»Ö§³Ö·Ö²¼Ê½ÊÂÎñ,µ«ÊÇÕâôдÊÇÖ§³ÖµÄ
Òâζ×Å×Ų»ÊÇÒ»¸öÔ×Ó²Ù×÷,±ä³ÉÁËÁ½¸öÊÂÎñ·Öµ½Á½¸ö·ÖƬÉÏÈ¥,×ö²»µ½Ô×ÓÐÔ,ËùÒÔǧÍò²»Òª°ÑmycatÓÃÔڹؼüµÄÒµÎñ,ÌØ±ðÊǸúÇ®´ò½»µÀµÄ
ÏÖÔÚÒµ½çµÄÖмä¼þ,³ýÁËÌÔ±¦ºÍÍøÒ×Ã²ËÆ»¹Ã»ÓÐʲôÖмä¼þÖ§³Ö·Ö²¼Ê½ÊÂÎñµÄ,ÄÇÔõô°ìÄØ£¿
·Ö²¼Ê½ÊÂÎñ¸ÄΪµ¥¸öÊÂÎñ,֮ǰÌá¹ýµÄ²¹³¥»úÖÆ,×öÒ»¸ömessage±í,updateµÄʱºòÍùmessage±íÖвåÈëÏûÏ¢,ÁíÒ»Õűí,²é¿´ÏûÏ¢,È»ºóupdate,×îºó°ÑÏûÏ¢ÖÃΪÒѽÓÊÕ
Õâʱºò»¹ÐèÒªÖмä¼þÂð£¿no£¡ÕâÒ²½ÐÒ»ÖÖÈáÐÔÊÂÎñ
3.2 Óû§Ïµ¥°¸Àý
orders±í,Èý¸ö·ÖƬ,userid×÷¾ùºâ×Ö¶Î,»¹Óиö±í,½Ðstock(¿â´æ)
ϵ¥µÄÂß¼¾Í±äµÃ²»Ò»ÑùÁË,¿´tpccÑùÀý
begin;
ÏÈËø¶¨¿â´æ
insert into orders
insert into orderline
update stock set count = count - 1 where itemid
= £¿
update
...
xxx
...
commit; |
orders±í·Ö¿â·Ö±íÁË,stock±íûÓÐuseridÕâ¶«Î÷,ËùÒÔstock±í½ÐÈ«¾Ö±í,ÎÒÃǸÃÔõô·Å,¿ÉÒԷŵ½µ¥¶ÀµÄʵÀýÉÏ,Ò²¿ÉÒԷŵ½ÆäÖеÄÒ»¸ö·ÖƬÉÏ,ÉõÖÁ¿ÉÒÔ¸ù¾ÝskuidÈ¥×öshard
ÿ¸öMySQLÊÇÓÃÀ´´æ·ÖƬµÄ,µ«²¢²»ÒªÇóÒ»¸ö·Ö²¼Ê½¼¯ÈºÖÐËùÓеıí¾ùºâ×Ö¶ÎÊÇÒ»ÑùµÄ,ÒµÎñÖ»ÒªÖªµÀÔõô´æµÄ¾ÍÐÐ,¾ùºâ×Ö¶ÎÊÇʲô,Ôõô·ÃÎÊ,×Ô¼ºÖªµÀ¾ÍÐÐ,¶ÔÓÚÖмä¼þÀ´ËµÓиöÔªÊý¾Ý¿âÀ´´æÕâЩ¾ùºâ×Ö¶Î
ÕâʱºòÕâ¸öÁ÷³Ì¾ÍÊÇ·Ö²¼Ê½µÄÁË,ÌÔ±¦ÍøÒ×µÄÖмä¼þ¿ÉÒÔÖ§³ÖÕâ¸ö,Èç¹ûstock×öÁË·ÖÆ¬¾ÍÌÖÑáÁË,Ò»¸ö¶©µ¥¿ÉÒÔÓкܶà¼þÉÌÆ·,ºÜ¶à¸ö¿â´æÒªÐÞ¸Ä,Éæ¼°µÄ½Úµã¿ÉÄܾͶàÁË,²»ÏñתÕËÁË,ËùÒÔ¶©µ¥±í·Åµ½ÏûÏ¢¶ÓÁÐ(mq)ÖÐ×öÁË
Ҫϵ¥µÄ»°,Ïȷŵ½mqÖÐ,ºóÃæºÜ¶àworkerÏß³Ì,Äõ½Õâ¸öÏûϢȻºóÈ¥Ïû·Ñ
ËùÒÔ,ÏÖÔÚ´ò¿ª¾©¶«,ÌìèÕâЩ,ÏÂÒ»¸öµ¥Ö®ºó,״̬ÏÔʾΪ³ö¿âÖÐ,ʲô½Ð³ö¿âÖУ¿
³ö¿âÖоͱíʾ,ÎÒÏÖÔÚÕâ¸öϵ¥,Ö»ÊǰÑÒµÎñÂß¼¶ªµ½ÏûÏ¢¶ÓÁÐÖÐ,ÖÁÓÚÏûÏ¢¶ÓÁкóÃæÄܲ»Äܳɹ¦²¢²»ÖªµÀ,Èç¹û¿â´æ²»¹»»á¸æËßÄã³ö¿âʧ°Ü,È»ºó°ÑÄãÕâ¸öϵ¥¹ý³Ì»Ø¹öµô
ËùÒÔ¾³£Ïµ¥³É¹¦,³ö¿âʧ°Ü,²»ÊÇ1111,Ò»°ã¶¼²»»áÓÐÎÊÌâ,1111µÄʱºò¾Í²»Ò»¶¨ÁË,ʵʱ¿â´æ´ú¼ÛÌ«´óÁË
3.3 С½á
µ½ÏÖÔÚΪֹ,»¹ÓõÃ×ÅÖмä¼þÂ²»ÊÇ¿ÉÒÔ²»ÓÃ,¶øÊǽ¨Òé²»ÓÃ,ÒòΪÓÃÁËÖмä¼þ,Äã±ÜÃâ²»ÁË·Ö²¼Ê½ÊÂÎñ,ºÜ¶àºËÐÄÒµÎñÓзçÏÕµÄ
¸ù¾ÝuseridÀ´À©Õ¹,×ö²éѯûÎÊÌâ°¡,µ«ÊǶÔÓÚÊý¾Ý¿âÀ´Ëµ,·Ö¿â·Ö±í×îÄѵĵãÔÚÓÚÊÂÎñ»¯ºÍ³Ö¾Ã»¯,¶ø²»ÊÇselect,ÉõÖÁselect·Åµ½redisÀï¶¼¿ÉÒÔ
·Ö²¼Ê½ÊÂÎñµ½×îºó¶¼ÓÃÁËÏûÏ¢±íºÍÏûÏ¢¶ÓÁÐ,ÒµÎñÂß¼¶¼¶ªµ½ÏûÏ¢Àï,ºóÃæÏû·ÑÏß³ÌÂýÂýÏû·Ñ,³ö´íÁË,¾Í»Ø¹ö,¹Ø±Õ¶©µ¥,¶©µ¥±íÖÐÓиö״̬×Ö¶Î,¿É¼û,²»¿É¼û,³É¹¦,û³É¹¦,¶¼ÊÇͨ¹ýÒµÎñÀ´¿ØÖƵÄ
΢Ðźì°üÓõľͲ»ÊÇÖмä¼þ,ÌÔ±¦µÄϵ¥¹ý³ÌҲûÓÐÓÃÖмä¼þ×ö,´æÔÚ·Ö²¼Ê½ÊÂÎñ,ÐÔÄܲ»ºÃ
Ó÷ֲ¼Ê½ÊÂÎñµÄе÷Æ÷À´×öµÄ,ÌÔ±¦×îÔçÌá³ötcc,ÏÖÔÚ»ùÓÚÕâ¸ö·â×°ÁËÒ»¶Ñ¶«Î÷Á˶¼
ËùÒÔÖмä¼þÕâ¶«Î÷ºÜΣÏÕ²»ÒªÏëµÄÌ«¶àÁË,Èç¹ûÓÃÁËÖмä¼þ,ÄÇÒ²ÊǸöºÜ¼òµ¥µÄ¶«Î÷,ÌÔ±¦,΢ÐźËÐÄÒµÎñ¶¼²»ÓÃÖмä¼þ,ËùÓеķÃÎʶ¼ÊÇÒµÎñ¿ØÖƵġ£
½¨Ò飺
Èç¹û·Ö¿â·Ö±í,×îºÃÈÃÒµÎñ¿ØÖÆ,¶ø²»ÒªÓÃÖмä¼þ,ÓÃÁËÖмä¼þÕâ¸ö»î¶ù¾ÍÊÇÄãµÄ,˵ÄÑÌýµã,¾ÍÊÇ˦¹ø,ÒÔºó³öÁËÎÊÌâ¾Í¸úÎÒû¹ØÏµ,µÚ¶þµã,ºËÐÄÒµÎñ,Öмä¼þ²»Ö§³Ö·Ö²¼Ê½ÊÂÎñ,±£Ö¤²»ÁËÊÂÎñÐԺͳ־ÃÐÔ,µÚÈýµã,Öмä¼þÐÔÄÜÕæµÄ²»ÐÐ,¼´Ê¹ÓÃÁËddb,Ò»¸ö¶©µ¥Èý¸öÉÌÆ·¿åÁ˺öà¸ö½Úµã,˫ʮһÄܽÓÊÜÂ𣿲»ÒªÃÔÐÅÖмä¼þ
µ«ÊÇ,¿ìµÝÐÐÒµÕæµÄºÜÊʺÏÖмä¼þ,ÒòΪ¿ìµÝÐÐҵûÓкÜÇ¿µÄÊÂÎñÐÔÒªÇó,¾ÍÊÇÒ»¸ö¸öÔ˵¥,Õâ¸öÔ˵¥ÒªÖÜת¼¸´Î,ÏÖÔÚµÄÖÐת״̬,ËùÒÔ¿ìµÝÐÐÒµÊÇÖмä¼þʹÓõÄ×îºÃµÄ³¡¾°,Èç¹û»¥ÁªÍø½ðÈÚÓÃÁËÖмä¼þ,Åöµ½ÁË·Ö²¼Ê½ÊÂÎñ¾ÍºÜÒ²ÈÝÒ׺ǺÇ
¢ô¡¢Àí½â·Ö¿âºÍ·Ö±íÄØ
shardÊÇÒ»¸ö±ê×¼µÄ˵·¨,µ«ÊÇ·Ö¿â·Ö±í¸ù±¾Ã»ÓÐÍêÕûµÄ¶¨Òå,ºÜÄ£ºý
×îÔçµÄʱºò£º
·Ö±í£ºorders ---> orders00,orders01,,,,
·Ö¿â£ºdb1,db2Öж¼ÓÐorders00,orders01,µ±È»Ò²¿ÉÒÔ·Öµ½ÆäËûʵÀýÖеÄdbÖÐ
ÕâÑù±íÃû¸ÄÁË,²»ºÃά»¤,ÍøÒ×µÄÖмä¼þ¾Í²»Ö§³Ö·Ö±í,ÄǾÍÖ»·Ö¿â°É,×îºÃÊÇͬһ¸öʵÀýÉϽ¨ºÜ¶à¸ö²»Í¬µÄdb,À©Õ¹ÆðÀ´²»ÓôòÉ¢Êý¾Ý
ËùÒÔÕâÀïÓÖÓиöÌÔ±¦µÄ¹æ·¶,Ò»¿ªÊ¼¿ÉÄܾͻá·Ö1024¸öshard,²»¹Ü¶àÉÙ¸ö»úÆ÷,Ò»¿ªÊ¼·ÅÔÚ100¸ö»úÆ÷ÉÏ,˫ʮһ·Åµ½1000¸ö»úÆ÷ÉÏ,¾ßÌåÂäµ½Äĸöshard»¹ÊÇÓÃhash
²»ÄÜ2048¸öshard,MySQLÊý¾Ý¿âÀ©Õ¹ÊDz»×öreshardµÄ,ÖØ·Ö²¼µÄ´ú¼ÛÌ«´ó,ËùÒԾͲð,ÔÚÒ»¿ªÊ¼ÔÚͬһ¸ö»úÆ÷ÉÏ×öºÜ¶à¸öshard
Ò»¿ªÊ¼¾Í°Ñshard¾Í»®ºÃ,À©Õ¹µÄʱºò²»ÓÃÿ´Î¶¼È¥´òÉ¢Êý¾Ý,»»¾ä»°Ëµ,ÕâÑù×öµÄÊÇ´¹Ö±À©Õ¹,ËäȻ˵·Ö²¼Ê½Êý¾Ý¿â¿ÉÀ©Õ¹,µ«ÊÇÒòΪhashµÄÀ©Õ¹ºÜÂé·³,Éæ¼°µ½Êý¾ÝµÄÖØ·Ö²¼,ËùÒÔ¾¡Á¿´¹Ö±À©Õ¹,Êý¾Ý´òɢˮƽ´òÉ¢,À©Õ¹µÄ»°´¹Ö±À©Õ¹
mongodbµÄÀ©Õ¹·½±ã,ÊÇ»ùÓÚchunckµÄ,ÏȰÑËùÓеÄÊý¾Ý·Åµ½chunckÀï,Èç¹û³¬¹ý32M»á×ösplit,²ð³ÉÁ½¸öchunck,È»ºó×öÒ»¸öbalanceµÄ²Ù×÷,°ÑÁ½¸öchunck·Åµ½Á½Ì¨·þÎñÆ÷ÉÏ,ËùÒÔÕâ¸öchunckÊÇ¿ÉÒÔÒÆ¶¯µÄ,mysqlµÄhash²»¿ÉÒÆ¶¯
mongodbµÄbalanceÒ²ÓÐÎÊÌâ,Ç£Éæµ½Ò»Ì¨·þÎñÆ÷µÄchunck¿½±´µ½Áíһ̨·þÎñÆ÷
¸÷ÓÐÓÅȱµã,À©Õ¹·½±ã,мÓһ̨»úÆ÷,¿ÉÒ԰Ѹ÷¸ö»úÆ÷ÉϵÄchunckÒÆ¹ýÀ´,²»ÓÃhashÄÇÑùÕû¸ö¼¯ÈºµÄÖØ·Ö²¼,Ö»ÄÃÒ»²¿·Öchunck¹ýÀ´,µ«ÊÇio»áºÜ´ó
|