๐ŸฅณGeneral

ๅ…ˆๆ”พไธ€ไธชๅฎ˜ๆ–นๆ–‡ๆกฃไธญ็š„ๆ€ปๆžถๆž„ๅ›พ๏ผš

ไธ€ไบ›ๅŸบๆœฌๅ่ฏ๏ผš

  • Placement Driver๏ผš PD ๆ˜ฏ TiKV ็š„้›†็พค็ฎก็†ๅ™จ๏ผŒๅฎƒๅฎšๆœŸๆฃ€ๆŸฅๅคๅˆถ็บฆๆŸไปฅ่‡ชๅŠจๅนณ่กก่ดŸ่ฝฝๅ’Œๆ•ฐๆฎใ€‚

  • Store๏ผšๆฏไธชStoreๅ†…้ƒจ้ƒฝๆœ‰ไธ€ไธชRocksDB๏ผŒๅฐ†ๆ•ฐๆฎๅญ˜ๅ‚จๅˆฐๆœฌๅœฐ็ฃ็›˜ไธญใ€‚

  • Region๏ผš Regionๆ˜ฏKey-Valueๆ•ฐๆฎ็งปๅŠจ็š„ๅŸบๆœฌๅ•ไฝใ€‚ๆฏไธชRegion่ขซๅคๅˆถๅˆฐๅคšไธช่Š‚็‚นใ€‚่ฟ™ไบ›ๅคšไธชๅ‰ฏๆœฌ็ป„ๆˆไบ†ไธ€ไธช Raft ็ป„ใ€‚

  • Node๏ผš้›†็พคไธญ็š„ไธ€ไธช็‰ฉ็†่Š‚็‚นใ€‚ๅœจๆฏไธช่Š‚็‚นๅ†…๏ผŒๆœ‰ไธ€ไธชๆˆ–ๅคšไธช Storeใ€‚ๅœจๆฏไธช Store ไธญ๏ผŒๆœ‰่ฎธๅคš Regionใ€‚

    ๅฝ“ไธ€ไธช่Š‚็‚นๅฏๅŠจๆ—ถ๏ผŒNodeใ€Store ๅ’Œ Region ็š„ๅ…ƒๆ•ฐๆฎ้ƒฝไผš่ฎฐๅฝ•ๅˆฐ PD ไธญใ€‚ๆฏไธช Region ๅ’Œ Store ็š„็Šถๆ€้ƒฝไผšๅฎšๆœŸไธŠๆŠฅ็ป™ PDใ€‚

multi-raft-group

ไธŽไผ ็ปŸ็š„ๆ•ด่Š‚็‚นๅค‡ไปฝๆ–นๅผไธๅŒ๏ผŒTiKV ๅ‚่€ƒ Spanner ่ฎพ่ฎกไบ† multi-raft-group ็š„ๅ‰ฏๆœฌๆœบๅˆถ๏ผš

ๅฐ†ๆ•ฐๆฎๆŒ‰็…ง key ็š„่Œƒๅ›ดๅˆ’ๅˆ†ๆˆๅคง่‡ด็›ธ็ญ‰็š„ๅˆ‡็‰‡๏ผˆไธ‹ๆ–‡็ปŸ็งฐไธบ Region๏ผ‰๏ผŒๆฏไธชRegion็š„ๆ•ฐๆฎ้ƒฝไฟๅญ˜ๅœจไธ€ไธช่Š‚็‚นไธŠใ€‚Tikvๆ˜ฏไปฅRegionไธบๅ•ไฝๅšๆ•ฐๆฎ็š„ๅคๅˆถ๏ผŒๆฏไธ€ไธชRegionไผšๆœ‰ๅคšไธชๅ‰ฏๆœฌReplica๏ผˆ้€šๅธธๆ˜ฏ 3 ไธช๏ผ‰๏ผŒๅคšไธชReplicaไฟๅญ˜ๅœจไธๅŒ็š„่Š‚็‚นไธŠ๏ผŒๆž„ๆˆไธ€ไธชRaft Groupใ€‚ๅ…ถไธญไธ€ไธชๅ‰ฏๆœฌๆ˜ฏ Leader๏ผŒๆไพ›่ฏปๅ†™ๆœๅŠก๏ผŒๅ…ถไฝ™ๅ‰ฏๆœฌไธบFollowerใ€‚ๆ‰€ๆœ‰็š„่ฏปๅ’Œๅ†™้ƒฝๆ˜ฏ้€š่ฟ‡Leader่ฟ›่กŒ๏ผŒๅ†็”ฑLeaderๅคๅˆถ็ป™Followerใ€‚

TiKV ้€š่ฟ‡ PD ๅฏน่ฟ™ไบ› Region ไปฅๅŠๅ‰ฏๆœฌ่ฟ›่กŒ่ฐƒๅบฆ๏ผŒไปฅไฟ่ฏๅฐ†Regionๅฐฝๅฏ่ƒฝๅ‡ๅŒ€็š„ๆ•ฃๅธƒๅœจ้›†็พค็š„ๆ‰€ๆœ‰็š„่Š‚็‚นไธŠ๏ผŒไธ€ๆ–น้ขๅฎž็Žฐไบ†ๅญ˜ๅ‚จๅฎน้‡็š„ๆฐดๅนณๆ‰ฉๅฑ•๏ผˆๆ–ฐๅขž่Š‚็‚น๏ผŒไผš่‡ชๅŠจๅฐ†ๅ…ถไป–่Š‚็‚นไธญ็š„Region่ฐƒๅบฆ่ฟ‡ๆฅ๏ผ‰๏ผŒๅฆไธ€ๆ–น้ขไนŸๅฎž็Žฐไบ†่ดŸ่ฝฝๅ‡่กก๏ผˆไธไผšๅ‡บ็ŽฐๆŸไธช่Š‚็‚นๆœ‰ๅพˆๅคšๆ•ฐๆฎ๏ผŒ่€Œๅ…ถไป–่Š‚็‚นๆฒกๆœ‰ไป€ไนˆๆ•ฐๆฎ็š„ๆƒ…ๅ†ต๏ผ‰ใ€‚ๅŒๆ—ถไธบไบ†ไฟ่ฏไธŠๆฌกๅฎขๆˆท็ซฏ่ƒฝๅคŸ่ฎฟ้—ฎๆ‰€้œ€่ฆ็š„ๆ•ฐๆฎใ€‚็”ฑTiKV driverๆฅๅฐ†ไธŠๅฑ‚่ฏญๅฅๆ˜ ๅฐ„ๅˆฐๆญฃ็กฎ็š„่Š‚็‚นใ€‚

่ฟ™ๆ ท็š„่ฎพ่ฎกไฟ่ฏไบ†ๆ•ดไธช้›†็พค่ต„ๆบ็š„ๅ……ๅˆ†ๅˆฉ็”จๅนถไธ”ๅฏไปฅ้š็€ๆœบๅ™จๆ•ฐ้‡็š„ๅขžๅŠ ๆฐดๅนณๆ‰ฉๅฑ•ใ€‚

ไธ่ฟ‡่™ฝ็„ถ TiKV ๅฐ†ๆ•ฐๆฎๆŒ‰็…ง่Œƒๅ›ดๅˆ‡ๅ‰ฒๆˆไบ†ๅคšไธช Region๏ผŒไฝ†ๆ˜ฏๅŒไธ€ไธช่Š‚็‚น็š„ๆ‰€ๆœ‰ Region ๆ•ฐๆฎไป็„ถๆ˜ฏไธๅŠ ๅŒบๅˆ†ๅœฐๅญ˜ๅ‚จไบŽๅŒไธ€ไธช RocksDB ๅฎžไพ‹ไธŠ๏ผŒ่€Œ็”จไบŽ Raft ๅ่ฎฎๅคๅˆถๆ‰€้œ€่ฆ็š„ๆ—ฅๅฟ—ๅˆ™ๅญ˜ๅ‚จไบŽๅฆไธ€ไธช RocksDB ๅฎžไพ‹ใ€‚่ฟ™ๆ ท่ฎพ่ฎก็š„ๅŽŸๅ› ๆ˜ฏ้šๆœบ I/O ็š„ๆ€ง่ƒฝ่ฟœไฝŽไบŽ้กบๅบ I/O๏ผŒๆ‰€ไปฅ TiKV ไฝฟ็”จๅŒไธ€ไธช RocksDB ๅฎžไพ‹ๆฅๅญ˜ๅ‚จ่ฟ™ไบ›ๆ•ฐๆฎ๏ผŒไปฅไพฟไธๅŒ Region ็š„ๅ†™ๅ…ฅๅฏไปฅๅˆๅนถๅœจไธ€ๆฌก I/O ไธญใ€‚

Region ไธŽๅ‰ฏๆœฌไน‹้—ด้€š่ฟ‡ Raft ๅ่ฎฎๆฅ็ปดๆŒๆ•ฐๆฎไธ€่‡ดๆ€ง๏ผŒไปปไฝ•ๅ†™่ฏทๆฑ‚้ƒฝๅช่ƒฝๅœจ Leader ไธŠๅ†™ๅ…ฅ๏ผŒๅนถไธ”้œ€่ฆๅ†™ๅ…ฅๅคšๆ•ฐๅ‰ฏๆœฌๅŽ๏ผˆ้ป˜่ฎค้…็ฝฎไธบ 3 ๅ‰ฏๆœฌ๏ผŒๅณๆ‰€ๆœ‰่ฏทๆฑ‚ๅฟ…้กป่‡ณๅฐ‘ๅ†™ๅ…ฅไธคไธชๅ‰ฏๆœฌๆˆๅŠŸ๏ผ‰ๆ‰ไผš่ฟ”ๅ›žๅฎขๆˆท็ซฏๅ†™ๅ…ฅๆˆๅŠŸใ€‚

ๅฝ“ๆŸไธช Region ็š„ๅคงๅฐ่ถ…่ฟ‡ไธ€ๅฎš้™ๅˆถ๏ผˆ้ป˜่ฎคๆ˜ฏ 144MB๏ผ‰ๅŽ๏ผŒTiKV ไผšๅฐ†ๅฎƒๅˆ†่ฃ‚ไธบไธคไธชๆˆ–่€…ๆ›ดๅคšไธช Region๏ผŒไปฅไฟ่ฏๅ„ไธช Region ็š„ๅคงๅฐๆ˜ฏๅคง่‡ดๆŽฅ่ฟ‘็š„๏ผŒ่ฟ™ๆ ทๆ›ดๆœ‰ๅˆฉไบŽ PD ่ฟ›่กŒ่ฐƒๅบฆๅ†ณ็ญ–ใ€‚ๅŒๆ ท๏ผŒๅฝ“ๆŸไธช Region ๅ› ไธบๅคง้‡็š„ๅˆ ้™ค่ฏทๆฑ‚ๅฏผ่‡ด Region ็š„ๅคงๅฐๅ˜ๅพ—ๆ›ดๅฐๆ—ถ๏ผŒTiKV ไผšๅฐ†ๆฏ”่พƒๅฐ็š„ไธคไธช็›ธ้‚ป Region ๅˆๅนถไธบไธ€ไธชใ€‚

ๅฝ“ PD ้œ€่ฆๆŠŠๆŸไธช Region ็š„ไธ€ไธชๅ‰ฏๆœฌไปŽไธ€ไธช TiKV ่Š‚็‚น่ฐƒๅบฆๅˆฐๅฆไธ€ไธชไธŠ้ขๆ—ถ๏ผŒPD ไผšๅ…ˆไธบ่ฟ™ไธช Raft Group ๅœจ็›ฎๆ ‡่Š‚็‚นไธŠๅขžๅŠ ไธ€ไธช Learner ๅ‰ฏๆœฌ๏ผˆ่™ฝ็„ถไผšๅคๅˆถ Leader ็š„ๆ•ฐๆฎ๏ผŒไฝ†ๆ˜ฏไธไผš่ฎกๅ…ฅๅ†™่ฏทๆฑ‚็š„ๅคšๆ•ฐๅ‰ฏๆœฌไธญ๏ผ‰ใ€‚ๅฝ“่ฟ™ไธช Learner ๅ‰ฏๆœฌ็š„่ฟ›ๅบฆๅคง่‡ด่ฟฝไธŠ Leader ๅ‰ฏๆœฌๆ—ถ๏ผŒLeader ไผšๅฐ†ๅฎƒๅ˜ๆ›ดไธบ Follower๏ผŒไน‹ๅŽๅ†็งป้™คๆ“ไฝœ่Š‚็‚น็š„ Follower ๅ‰ฏๆœฌ๏ผŒ่ฟ™ๆ ทๅฐฑๅฎŒๆˆไบ† Region ๅ‰ฏๆœฌ็š„ไธ€ๆฌก่ฐƒๅบฆใ€‚

Leader ๅ‰ฏๆœฌ็š„่ฐƒๅบฆๅŽŸ็†ไนŸ็ฑปไผผ๏ผŒไธ่ฟ‡้œ€่ฆๅœจ็›ฎๆ ‡่Š‚็‚น็š„ Learner ๅ‰ฏๆœฌๅ˜ไธบ Follower ๅ‰ฏๆœฌๅŽ๏ผŒๅ†ๆ‰ง่กŒไธ€ๆฌก Leader Transfer๏ผŒ่ฎฉ่ฏฅ Follower ไธปๅŠจๅ‘่ตทไธ€ๆฌก้€‰ไธพๆˆไธบๆ–ฐ Leader๏ผŒไน‹ๅŽๆ–ฐ Leader ่ดŸ่ดฃๅˆ ้™คๆ—ง Leader ่ฟ™ไธชๅ‰ฏๆœฌใ€‚

Regionๆ‰ฉๅผ ๆ—ถๅฆ‚ๆžœๅญ˜ๅœจLeader็š„้—ฎ้ข˜๏ผŒๅฏไปฅๅƒ่ฟ™ไธชไพ‹ๅญไธ€ๆ ท่งฃๅ†ณ๏ผš

่Š‚็‚นAไธญไธ‰ไธชRegion๏ผŒๅ…ถไป–่Š‚็‚นไธคไธชRegionใ€‚ไธบไบ†็ผ“่งฃ่Š‚็‚นA็š„ๅŽ‹ๅŠ›๏ผŒๅฐ†่Š‚็‚นAไธญ็š„Region 1 ่ฝฌ็งปๅˆฐๆ–ฐๅปบ่Š‚็‚นEใ€‚ไฝ†ๆญคๆ—ถ็”ฑไบŽRegion1็š„leaderๅœจ่Š‚็‚นAไธญ๏ผŒๆ‰€ไปฅไผšๅ…ˆๆŠŠLeader่Š‚็‚นไปŽ่Š‚็‚นA่ฝฌๅˆฐ่Š‚็‚นBใ€‚ ไน‹ๅŽๅœจ่Š‚็‚นEไธญๅขžๅŠ ไธ€ไธชRegion 1็š„ๅ‰ฏๆœฌใ€‚ๅ†ไปŽ่Š‚็‚นAไธญ็งป้™คRegion 1็š„ๅ‰ฏๆœฌใ€‚ๆ‰€ๆœ‰่ฟ™ไธ€ๅˆ‡้ƒฝ่ขซPlacement Driver่‡ชๅŠจๆ‰ง่กŒ็š„ใ€‚ๅ”ฏไธ€่ฆๅš็š„ๅฐฑๆ˜ฏๅ‘็Žฐ็ณป็ปŸ็นๅฟ™ๆ—ถๅฐฑๆทปๅŠ ่Š‚็‚นใ€‚

Raft็š„ไผ˜ๅŒ–๏ผš

  • ๅˆๅง‹็š„Raft ๏ผš Leader ๆ”ถๅˆฐ client ๅ‘้€็š„ request โ†’ Leader ๅฐ† request append ๅˆฐ่‡ชๅทฑ็š„ log โ†’ Leader ๅฐ†ๅฏนๅบ”็š„ log entry ๅ‘้€็ป™ๅ…ถไป–็š„ follower โ†’ Leader ็ญ‰ๅพ… follower ็š„็ป“ๆžœ๏ผŒๅฆ‚ๆžœๅคงๅคšๆ•ฐ่Š‚็‚นๆไบคไบ†่ฟ™ไธช log๏ผŒๅˆ™ apply โ†’ Leader ๅฐ†็ป“ๆžœ่ฟ”ๅ›ž็ป™ client โ†’ Leader ็ปง็ปญๅค„็†ไธ‹ไธ€ๆฌก requestใ€‚

  • ๅˆฉ็”จๅผ‚ๆญฅapplyๆ”น่ฟ›Raft๏ผšLeader ๆŽฅๅ—ไธ€ไธช client ๅ‘้€็š„ request โ†’ Leader ๅฐ†ๅฏนๅบ”็š„ log ๅ‘้€็ป™ๅ…ถไป– follower ๅนถๆœฌๅœฐ append โ†’ Leader ็ปง็ปญๆŽฅๅ—ๅ…ถไป– client ็š„ requests๏ผŒๆŒ็ปญ่ฟ›่กŒๆญฅ้ชค 2 โ†’ Leader ๅ‘็Žฐ log ๅทฒ็ป่ขซ committed๏ผŒๅœจๅฆไธ€ไธช็บฟ็จ‹ apply โ†’ Leader ๅผ‚ๆญฅ apply log ไน‹ๅŽ๏ผŒ่ฟ”ๅ›ž็ป“ๆžœ็ป™ๅฏนๅบ”็š„ clientใ€‚

Placement Driver

Placement Driver็›‘ๆŽง็š„ๆ•ฐๆฎๆœ‰๏ผš - ๆ€ป็ฃ็›˜ๅฎน้‡ - ๅฏ็”จ็ฃ็›˜ๅฎน้‡ - ๆ‰ฟ่ฝฝ็š„ Region ๆ•ฐ้‡ - ๆ•ฐๆฎๅ†™ๅ…ฅ้€Ÿๅบฆ - ๅ‘้€/ๆŽฅๅ—็š„ Snapshot ๆ•ฐ้‡(Replica ไน‹้—ดๅฏ่ƒฝไผš้€š่ฟ‡ Snapshot ๅŒๆญฅๆ•ฐๆฎ) - ๆ˜ฏๅฆ่ฟ‡่ฝฝ - ๆ ‡็ญพไฟกๆฏ - ๆ ‡็ญพๆ˜ฏๅ…ทๅค‡ๅฑ‚็บงๅ…ณ็ณป็š„ไธ€็ณปๅˆ— Tag

ๆฏไธช TiKV ๅฎžไพ‹็š„ๆžถๆž„ๅฆ‚ไธ‹ๅ›พๆ‰€็คบ๏ผš

Placement Driverๆ˜ฏๆ•ดไธช็ณป็ปŸไธญ็š„ไธ€ไธช่Š‚็‚น๏ผŒๅฎƒไผšๆ—ถๅˆป็Ÿฅ้“็Žฐๅœจๆ•ดไธช็ณป็ปŸ็š„็Šถๆ€ใ€‚ๆฏ”ๅฆ‚่ฏดๆฏไธชๆœบๅ™จ็š„่ดŸ่ฝฝ๏ผŒๆฏไธชๆœบๅ™จ็š„ๅฎน้‡๏ผŒๆ˜ฏๅฆๆœ‰ๆ–ฐๅŠ ็š„ๆœบๅ™จ๏ผŒๆ–ฐๅŠ ๆœบๅ™จ็š„ๅฎน้‡ๅˆฐๅบ•ๆ˜ฏๆ€Žไนˆๆ ท็š„๏ผŒๆ˜ฏไธๆ˜ฏๅฏไปฅๆŠŠไธ€้ƒจๅˆ†ๆ•ฐๆฎๆŒช่ฟ‡ๅŽป๏ผŒๆ˜ฏไธๆ˜ฏไนŸๆ˜ฏไธ€ๆ ทไธ‹็บฟ๏ผŒ ๅฆ‚ๆžœไธ€ไธช่Š‚็‚นๅœจๅๅˆ†้’Ÿไน‹ๅ†…ๆ— ๆณ•่ขซๅ…ถไป–่Š‚็‚นๆŽขๆต‹ๅˆฐ๏ผŒ่ฎคไธบๅฎƒๅทฒ็ปๆŒ‚ไบ†๏ผŒไธ็ฎกๅฎƒๅฎž้™…ไธŠๆ˜ฏไธๆ˜ฏ็œŸ็š„ๆŒ‚ไบ†๏ผŒไฝ†ไนŸ่ฎคไธบๅฎƒๆŒ‚ไบ†ใ€‚ๅ› ไธบ่ฟ™ไธชๆ—ถๅ€™ๆ˜ฏๆœ‰้ฃŽ้™ฉ็š„๏ผŒๅฆ‚ๆžœ่ฟ™ไธชๆœบๅ™จไธ‡ไธ€็œŸ็š„ๆŒ‚ไบ†๏ผŒๆ„ๅ‘ณ็€็Žฐๅœจๆœบๅ™จ็š„ๅ‰ฏๆœฌๆ•ฐๅชๆœ‰ไธคไธช๏ผŒๆœ‰ไธ€้ƒจๅˆ†ๆ•ฐๆฎ็š„ๅ‰ฏๆœฌๆ•ฐๅชๆœ‰ไธคไธชใ€‚้‚ฃไนˆ็Žฐๅœจๅฟ…้กป้ฉฌไธŠ่ฆๅœจ็ณป็ปŸ้‡Œ้ข้‡ๆ–ฐ้€‰ไธ€ๅฐๆœบๅ™จๅ‡บๆฅ๏ผŒๅฎƒไธŠ้ขๆœ‰่ถณๅคŸ็š„็ฉบ้—ด๏ผŒ็Žฐๅœจๅชๆœ‰ไธคไธชๅ‰ฏๆœฌ็š„ๆ•ฐๆฎ้‡ๆ–ฐๅ†ๅšไธ€ไปฝๆ–ฐ็š„ๅคๅˆถ๏ผŒ็ณป็ปŸๅง‹็ปˆ็ปดๆŒๅœจไธ‰ไธชๅ‰ฏๆœฌใ€‚ๆ•ดไธช็ณป็ปŸ้‡Œ้ขๅฆ‚ๆžœๆœบๅ™จๆŒ‚ๆŽ‰ไบ†๏ผŒๅ‰ฏๆœฌๆ•ฐๅฐ‘ไบ†๏ผŒ่ฟ™ไธชๆ—ถๅ€™ๅบ”่ฏฅไผš่ขซ่‡ชๅŠจๅ‘็Žฐ๏ผŒ้ฉฌไธŠ่กฅๅ……ๆ–ฐ็š„ๅ‰ฏๆœฌ๏ผŒ่ฟ™ๆ ทไผš็ปดๆŒๆ•ดไธช็ณป็ปŸ็š„ๅ‰ฏๆœฌๆ•ฐใ€‚่ฟ™ๆ˜ฏๅพˆ้‡่ฆ็š„ ๏ผŒไธบไบ†้ฟๅ…ๆ•ฐๆฎไธขๅคฑ๏ผŒๅฟ…้กป็ปดๆŒ่ถณๅคŸ็š„ๅ‰ฏๆœฌๆ•ฐ๏ผŒๅ› ไธบๅ‰ฏๆœฌๆ•ฐๆฏๅฐ‘ไธ€ไธช๏ผŒ้ฃŽ้™ฉๅฐฑไผšๅ†ๅขžๅŠ ใ€‚่ฟ™ๅฐฑๆ˜ฏPlacement Driverๅš็š„ไบ‹ๆƒ…ใ€‚

ๅŒๆ—ถ๏ผŒPlacement Driver ่ฟ˜ไผšๆ นๆฎๆ€ง่ƒฝ่ดŸ่ฝฝ๏ผŒไธๆ–ญๅŽปmove่ฟ™ไธชdata ใ€‚ๆฏ”ๅฆ‚่ฏด่ดŸ่ฝฝๅทฒ็ปๅพˆ้ซ˜ไบ†๏ผŒไธ€ไธช็ฃ็›˜ๅ‡่ฎพๆœ‰ 100G๏ผŒ็Žฐๅœจๅทฒ็ป็”จไบ† 80G๏ผŒๅฆๅค–ไธ€ไธชๆœบๅ™จไธŠไนŸๆ˜ฏ 100G๏ผŒไฝ†ๆ˜ฏๅช็”จไบ† 20G๏ผŒๆ‰€ไปฅ่ฟ™ไธŠ้ข่ฟ˜ๅฏไปฅๆœ‰ๅ‡ ๅ G ็š„ๆ•ฐๆฎ๏ผŒๆฏ”ๅฆ‚ 40G ็š„ๆ•ฐๆฎ๏ผŒๅฏไปฅ move ่ฟ‡ๅŽป๏ผŒ่ฟ™ๆ ทๅฏไปฅไฟ่ฏ็ณป็ปŸๆœ‰ๅพˆๅฅฝ็š„่ดŸ่ฝฝ๏ผŒไธไผšๅ‡บ็Žฐไธ€ไธช็ฃ็›˜ๅทจๅฟ™ๆ— ๆฏ”๏ผŒๆ•ฐๆฎๅทฒ็ปๅคš็š„่ฃ…ไธไธ‹ไบ†๏ผŒๅฆๅค–ไธ€ไธชไธŠ้ข่ฟ˜ๆฒกๆœ‰ไธœ่ฅฟ๏ผŒ่ฟ™ๆ˜ฏ Placement Driver ่ฆๅš็š„ไธœ่ฅฟใ€‚

Multiversion concurrency control(MVCC)

MVCCๆŒ‡็š„ๆ˜ฏๅคš็‰ˆๆœฌๅนถๅ‘ๆŽงๅˆถ๏ผŒๅนถๅ‘่ฎฟ้—ฎ๏ผˆ่ฏปๆˆ–่€…ๅ†™๏ผ‰ๆ•ฐๆฎๅบ“ๆ—ถ๏ผŒๅฏนๆญฃๅœจไบ‹ๅŠกๅ†…ๅค„็†็š„ๆ•ฐๆฎๅšๅคš็‰ˆๆœฌ็š„็ฎก็†๏ผŒ็”จๆฅ้ฟๅ…็”ฑไบŽๅ†™ๆ“ไฝœ็š„ๅ ตๅกž๏ผŒ่€Œๅผ•ๅ‘่ฏปๆ“ไฝœๅคฑ่ดฅ็š„ๅนถๅ‘้—ฎ้ข˜ใ€‚

่ฎพๆƒณ่ฟ™ๆ ท็š„ๅœบๆ™ฏ๏ผŒไธคไธช Client ๅŒๆ—ถๅŽปไฟฎๆ”นไธ€ไธช Key ็š„ Value๏ผŒๅฆ‚ๆžœๆฒกๆœ‰ MVCC๏ผŒๅฐฑ้œ€่ฆๅฏนๆ•ฐๆฎไธŠ้”๏ผŒๅœจๅˆ†ๅธƒๅผๅœบๆ™ฏไธ‹๏ผŒๅฏ่ƒฝไผšๅธฆๆฅๆ€ง่ƒฝไปฅๅŠๆญป้”้—ฎ้ข˜ใ€‚ TiKV ็š„ MVCC ๅฎž็Žฐๆ˜ฏ้€š่ฟ‡ๅœจ Key ๅŽ้ขๆทปๅŠ  Version ๆฅๅฎž็Žฐ๏ผŒ็ฎ€ๅ•ๆฅ่ฏด๏ผŒๆฒกๆœ‰ MVCC ไน‹ๅ‰๏ผŒๅฏไปฅๆŠŠ TiKV ็œ‹ๅš่ฟ™ๆ ท็š„:

Key1 -> Value
    Key2 -> Value
    โ€ฆโ€ฆ
    KeyN -> Value

ๆœ‰ไบ† MVCC ไน‹ๅŽ๏ผŒTiKV ็š„ Key ๆŽ’ๅˆ—ๆ˜ฏ่ฟ™ๆ ท็š„๏ผš

Key1-Version3 -> Value
    Key1-Version2 -> Value
    Key1-Version1 -> Value
    โ€ฆโ€ฆ
    Key2-Version4 -> Value
    Key2-Version3 -> Value
    Key2-Version2 -> Value
    Key2-Version1 -> Value
    โ€ฆโ€ฆ
    KeyN-Version2 -> Value
    KeyN-Version1 -> Value
    โ€ฆโ€ฆ

ๅฏนไบŽๅŒไธ€ไธช Key ็š„ๅคšไธช็‰ˆๆœฌ๏ผŒๆˆ‘ไปฌๆŠŠ็‰ˆๆœฌๅท่พƒๅคง็š„ๆ”พๅœจๅ‰้ข๏ผŒ็‰ˆๆœฌๅทๅฐ็š„ๆ”พๅœจๅŽ้ข๏ผŒ่ฟ™ๆ ทๅฝ“็”จๆˆท้€š่ฟ‡ไธ€ไธช Key + Version ๆฅ่Žทๅ– Value ็š„ๆ—ถๅ€™๏ผŒๅฏไปฅๅฐ† Key ๅ’Œ Version ๆž„้€ ๅ‡บ MVCC ็š„ Key๏ผŒไนŸๅฐฑๆ˜ฏ Key-Versionใ€‚็„ถๅŽๅฏไปฅ็›ดๆŽฅ Seek(Key-Version)๏ผŒๅฎšไฝๅˆฐ็ฌฌไธ€ไธชๅคงไบŽ็ญ‰ไบŽ่ฟ™ไธช Key-Version ็š„ไฝ็ฝฎใ€‚

ไบ‹ๅŠก

TiKV ็š„ไบ‹ๅŠกๆจกๅž‹็ฑปไผผไบŽ Google ็š„Percolator๏ผŒ่ฟ™ๆ˜ฏไธ€ไธชไธบๅค„็†ๅคงๅž‹ๆ•ฐๆฎ้›†็š„ๆ›ดๆ–ฐ่€Œๆž„ๅปบ็š„็ณป็ปŸใ€‚Percolator ไฝฟ็”จๅขž้‡ๆ›ดๆ–ฐๆจกๅž‹ไปฃๆ›ฟๅŸบไบŽๆ‰นๅค„็†็š„ๆจกๅž‹ใ€‚

TiKV ็š„ไบคๆ˜“ๆจกๅž‹ๆไพ›๏ผš

  • ๅธฆ้”็š„ๅฟซ็…ง้š”็ฆป๏ผˆSnapshot isolation๏ผ‰SELECT ... FOR UPDATE๏ผŒ่ฏญไน‰็ฑปไผผไบŽSQL

  • ๅˆ†ๅธƒๅผไบ‹ๅŠกไธญ็š„ๅค–้ƒจไธ€่‡ดๆ€ง่ฏปๅ†™

TiKV ๆ”ฏๆŒๅˆ†ๅธƒๅผไบ‹ๅŠก๏ผŒ็”จๆˆท๏ผˆๆˆ–่€… TiDB๏ผ‰ๅฏไปฅไธ€ๆฌกๆ€งๅ†™ๅ…ฅๅคšไธช key-value ่€Œไธๅฟ…ๅ…ณๅฟƒ่ฟ™ไบ› key-value ๆ˜ฏๅฆๅค„ไบŽๅŒไธ€ไธชๆ•ฐๆฎๅˆ‡็‰‡ (Region) ไธŠ๏ผŒTiKV ้€š่ฟ‡ไธค้˜ถๆฎตๆไบคไฟ่ฏไบ†่ฟ™ไบ›่ฏปๅ†™่ฏทๆฑ‚็š„ ACID ็บฆๆŸ๏ผŒ่ฏฆ่ง TiDB ไน่ง‚ไบ‹ๅŠกๆจกๅž‹๏ผˆTiKV ็š„ไบ‹ๅŠก้‡‡็”จไน่ง‚้”๏ผŒไบ‹ๅŠก็š„ๆ‰ง่กŒ่ฟ‡็จ‹ไธญ๏ผŒไธไผšๆฃ€ๆต‹ๅ†™ๅ†™ๅ†ฒ็ช๏ผŒๅชๆœ‰ๅœจๆไบค่ฟ‡็จ‹ไธญ๏ผŒๆ‰ไผšๅšๅ†ฒ็ชๆฃ€ๆต‹๏ผŒๅ†ฒ็ช็š„ๅŒๆ–นไธญๆฏ”่พƒๆ—ฉๅฎŒๆˆๆไบค็š„ไผšๅ†™ๅ…ฅๆˆๅŠŸ๏ผŒๅฆไธ€ๆ–นไผšๅฐ่ฏ•้‡ๆ–ฐๆ‰ง่กŒๆ•ดไธชไบ‹ๅŠก๏ผ‰ใ€‚

ๅฝ“ไธšๅŠก็š„ๅ†™ๅ…ฅๅ†ฒ็ชไธไธฅ้‡็š„ๆƒ…ๅ†ตไธ‹๏ผŒ่ฟ™็งๆจกๅž‹ๆ€ง่ƒฝไผšๅพˆๅฅฝ๏ผŒๆฏ”ๅฆ‚้šๆœบๆ›ดๆ–ฐ่กจไธญๆŸไธ€่กŒ็š„ๆ•ฐๆฎ๏ผŒๅนถไธ”่กจๅพˆๅคงใ€‚ไฝ†ๆ˜ฏๅฆ‚ๆžœไธšๅŠก็š„ๅ†™ๅ…ฅๅ†ฒ็ชไธฅ้‡๏ผŒๆ€ง่ƒฝๅฐฑไผšๅพˆๅทฎ๏ผŒไธพไธ€ไธชๆž็ซฏ็š„ไพ‹ๅญ๏ผŒๅฐฑๆ˜ฏ่ฎกๆ•ฐๅ™จ๏ผŒๅคšไธชๅฎขๆˆท็ซฏๅŒๆ—ถไฟฎๆ”นๅฐ‘้‡่กŒ๏ผŒๅฏผ่‡ดๅ†ฒ็ชไธฅ้‡็š„๏ผŒ้€ ๆˆๅคง้‡็š„ๆ— ๆ•ˆ้‡่ฏ•ใ€‚

Last updated