freego

command module
v1.1.11 Latest Latest
Warning

This package is not in the latest version of its module.

Go to latest
Published: Apr 8, 2026 License: MIT Imports: 11 Imported by: 0

README ยถ

FreeGo ้ซ˜ๆ€ง่ƒฝๆก†ๆžถ

Go Version License Go Report Card

๐Ÿš€ ไธ“ๆณจไบŽๆž่‡ดๆ€ง่ƒฝไผ˜ๅŒ–ไธŽๅผบๅฎ‰ๅ…จๅ–ๅ‘็š„ Go ่ฏญ่จ€ไผไธš็บงๆก†ๆžถ๏ผˆๅธธ่ง้‡‘่žๅœบๆ™ฏๅฏๅ‚่€ƒ README_SECURITY.md๏ผ‰

FreeGo ้ขๅ‘้ซ˜ๅนถๅ‘ไธŽๅผบๅฎ‰ๅ…จๅœบๆ™ฏ๏ผŒๆ ธๅฟƒ่ƒฝๅŠ›่š็„ฆๅœจๆœๅŠกๆŽฅๅ…ฅๅฑ‚ใ€ๆ•ฐๆฎ่ฎฟ้—ฎๅฑ‚ๅŠไธ‹ๆ–‡ๅทฅ็จ‹ๅŒ–้…ๅฅ—็ป„ไปถ๏ผš

  • API ๆก†ๆžถ๏ผšๆไพ› HTTP / WebSocket / RPCX ๆŽฅๅ…ฅไธŽ่ฟ‡ๆปคๅ™จ้“พ่ƒฝๅŠ›๏ผŒๅนถๆไพ›่ฎค่ฏใ€ๆŽˆๆƒใ€ๅฎŒๆ•ดๆ€งๆ ก้ชŒๅ’Œ้˜ฒ้‡ๆ”พ่ƒฝๅŠ›๏ผ›ๅฎ‰ๅ…จๆต็จ‹ไธŽๅจ่ƒๆจกๅž‹่ง README_SECURITY.mdใ€‚
  • ORM ๆก†ๆžถ๏ผš้ขๅ‘ MySQL / Mongo ็š„ๆžไฝŽๅๅฐ„็ƒญ็‚น่ทฏๅพ„ไธŽ้ข„ๅˆ†้…ๅ‹ๅฅฝๆ•ฐๆฎ่ฎฟ้—ฎ่ƒฝๅŠ›๏ผŒๅ…ผ้กพๅžๅไธŽๅ†…ๅญ˜ๆ•ˆ็އ๏ผˆไปฅ ormx ไธบๅ‡†๏ผ‰ใ€‚

ๅŒๆ—ถๆไพ›็ผ“ๅญ˜๏ผˆๅซๆœฌๅœฐไธŽ Redis๏ผ‰ใ€ๅˆ†ๅธƒๅผ้”ไธŽ้™ๆตใ€AMQP ๆถˆๆฏใ€็ป“ๆž„ๅŒ–ๆ—ฅๅฟ—ใ€YAML ้…็ฝฎ่ฃ…่ฝฝ็ญ‰ๅทฅ็จ‹ๅŒ–้…ๅฅ—่ƒฝๅŠ›๏ผŒไพฟไบŽๅœจ็”Ÿไบง็Žฏๅขƒๆ‹ผ่ฃ…ๆœๅŠกใ€‚ๅฏนๅค– HTTPS/TLS ไธ€่ˆฌ็”ฑๅๅ‘ไปฃ็†ๆˆ–็ฝ‘ๅ…ณ็ปˆๆญข๏ผ›ๆก†ๆžถไพง้‡ๅบ”็”จๅฑ‚่ทฏ็”ฑใ€่ฟ‡ๆปคๅ™จไธŽๅฏ†็ ๅญฆ่ƒฝๅŠ›๏ผˆ็ป†ๅˆ™่งๅฎ‰ๅ…จๆ–‡ๆกฃ๏ผ‰ใ€‚

๐Ÿ“š ็›ฎๅฝ•

๐Ÿš€ ๆก†ๆžถ็‰นๆ€ง

๐ŸŒ Server & API ๆก†ๆžถ
็‰นๆ€ง ๆ่ฟฐ ไผ˜ๅŠฟ
๐Ÿš€ ้ซ˜ๆ€ง่ƒฝ HTTP ้ซ˜ๆ€ง่ƒฝ HTTP ๅผ•ๆ“Ž๏ผŒๅ…ธๅž‹ๅœบๆ™ฏๅžๅๆ˜พ่‘—้ซ˜ไบŽ net/http๏ผˆๅŒๅœบๆ™ฏๅŽ‹ๆต‹๏ผ‰ ๅ•ๆœบ QPS 50,000+๏ผˆ่ง†็กฌไปถไธŽๅŽ‹ๆต‹๏ผ‰
๐Ÿ” ๅผบๅฎ‰ๅ…จๅ–ๅ‘ JWT + Ed25519/X25519 + AES-GCM๏ผˆๅบ”็”จๅฑ‚่ฝฝ่ท๏ผ‰ ่ƒฝๅŠ›ไธŽๅธธ่ง PCI DSS ๆŽงๅˆถๆ–นๅ‘ไธ€่‡ด๏ผ›TLS ่ง้ƒจ็ฝฒไพง
๐Ÿ”’ ้˜ฒ้‡ๆ”พๆ”ปๅ‡ป HMAC-SHA256 + ๆ—ถ้—ดๆˆณ็ญ‰ ไธป้“พ่ทฏๅ†…็ฝฎ้˜ฒ้‡ๆ”พไธŽๆ—ถ้—ด็ช—๏ผˆ่งๅฎ‰ๅ…จๆ–‡ๆกฃ๏ผ‰
๐Ÿ‘ฅ RBAC ๆƒ้™ๆŽงๅˆถ ่ง’่‰ฒๆƒ้™็ฎก็†็ณป็ปŸ ไผไธš็บง่ฎฟ้—ฎๆŽงๅˆถ
โšก ไธ‰็บง้™ๆต ็ฝ‘ๅ…ณ/ๆ–นๆณ•/็”จๆˆท้™ๆต ้˜ฒๆญข็ณป็ปŸ่ฟ‡่ฝฝ
๐Ÿ”ง ่ฟ‡ๆปคๅ™จ้“พ ๅฎŒๆ•ด็š„ไธญ้—ดไปถ็ณป็ปŸ ๆ”ฏๆŒ่‡ชๅฎšไน‰ๆ‰ฉๅฑ•
๐Ÿ—„๏ธ ORM ๆ•ฐๆฎๅบ“ๆก†ๆžถ
็‰นๆ€ง ๆ่ฟฐ ๆ€ง่ƒฝๆๅ‡
๐Ÿ’พ ้›ถๅ†…ๅญ˜ๆตช่ดน ็ฒพ็กฎๅฎน้‡้ข„ๅˆ†้… ๅ‡ๅฐ‘ 90%+ GC ๅŽ‹ๅŠ›๏ผˆๅ…ธๅž‹ๆ‰น้‡ๅœบๆ™ฏ๏ผŒไปฅๅฎžๆต‹ไธบๅ‡†๏ผ‰
โšก ๆžไฝŽๅๅฐ„ๅผ€้”€ ็›ธๅฏนๅ…ธๅž‹ๅๅฐ„ๅž‹ ORM๏ผŒ็ƒญ็‚น่ทฏๅพ„ๆ›ดๅฐ‘ไพ่ต–ๅๅฐ„๏ผ›ๅ…ƒๆ•ฐๆฎ/ๆ˜ ๅฐ„็ญ‰ไปๅฏ่ƒฝไฝฟ็”จๅๅฐ„๏ผˆไปฅ ormx ไธบๅ‡†๏ผ‰ ็›ดๆŽฅ่ฃ…้… + ็ฑปๅž‹็บฆๆŸ
๐Ÿง  ๆ™บ่ƒฝ้ข„ไผฐ ้€’ๅฝ’ OR ๆกไปถ็ฒพ็กฎ่ฎก็ฎ— ๅคๆ‚ๆŸฅ่ฏขๆ€ง่ƒฝไผ˜ๅŒ–
๐Ÿ”„ ้ซ˜ๅนถๅ‘ๆ”ฏๆŒ ๆ™บ่ƒฝ่ฟžๆŽฅๆฑ  + ๅŽŸๅญๆ“ไฝœ ๆ”ฏๆŒ 10,000+ ๅนถๅ‘
ๆ ธๅฟƒ็ป„ไปถๆžถๆž„
โ”Œโ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”
โ”‚                      FreeGo Framework                           โ”‚
โ”œโ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”ค
โ”‚              ไธ‰ๅคงๆœๅŠก็ซฏ๏ผˆHTTP ยท WebSocket ยท RPCX๏ผ‰                โ”‚
โ”‚  โ”Œโ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”   โ”‚
โ”‚  โ”‚  HTTP ยท WebSocket ยท RPCX                                  โ”‚   โ”‚
โ”‚  โ”‚  โ€ข ๅ•ๆœบ QPS: 50,000+๏ผˆHTTP ๅ…ธๅž‹ๅœบๆ™ฏ๏ผŒ่ง†็กฌไปถ๏ผ‰              โ”‚   โ”‚
โ”‚  โ”‚  โ€ข ๅ“ๅบ”ๅปถ่ฟŸ: ไบšๆฏซ็ง’็บง๏ผˆๅ…ธๅž‹ HTTP ่ทฏ็”ฑ๏ผ‰                   โ”‚   โ”‚
โ”‚  โ””โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”˜   โ”‚
โ”œโ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”ค
โ”‚                  Filter Chain (่ฟ‡ๆปคๅ™จ้“พ)                         โ”‚
โ”‚  โ”Œโ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”ฌโ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”ฌโ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”ฌโ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”ฌโ”€โ”€โ”€โ”€โ”€โ”€โ”   โ”‚
โ”‚  โ”‚ ้™ๆต่ฟ‡ๆปคๅ™จ  โ”‚ ๅ‚ๆ•ฐ่ฟ‡ๆปคๅ™จ  โ”‚ ไผš่ฏ่ฟ‡ๆปคๅ™จ  โ”‚ ๆƒ้™่ฟ‡ๆปคๅ™จ  โ”‚ ่‡ชๅฎšไน‰โ”‚   โ”‚
โ”‚  โ””โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”ดโ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”ดโ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”ดโ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”ดโ”€โ”€โ”€โ”€โ”€โ”€โ”˜   โ”‚
โ”œโ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”ค
โ”‚                 Security & Crypto (ๅฎ‰ๅ…จๅฑ‚)                       โ”‚
โ”‚  โ”Œโ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”ฌโ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”ฌโ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”ฌโ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”ฌโ”€โ”€โ”€โ”€โ”€โ”€โ”   โ”‚
โ”‚  โ”‚ JWT/RBAC   โ”‚ Ed25519    โ”‚ X25519     โ”‚ AES-GCM    โ”‚ HMAC/้‡ๆ”พ โ”‚
โ”‚  โ””โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”ดโ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”ดโ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”ดโ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”ดโ”€โ”€โ”€โ”€โ”€โ”€โ”˜   โ”‚
โ”œโ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”ค
โ”‚                Business Logic Layer (ไธšๅŠกๅฑ‚)                     โ”‚
โ”‚  โ”Œโ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”ฌโ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”ฌโ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”ฌโ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”ฌโ”€โ”€โ”€โ”€โ”€โ”€โ”   โ”‚
โ”‚  โ”‚ ่ฏทๆฑ‚ไธŠไธ‹ๆ–‡  โ”‚ ่ทฏ็”ฑ็ฎก็†    โ”‚ ไธญ้—ดไปถ็ฎก็†  โ”‚ ้”™่ฏฏๅค„็†    โ”‚ ็›‘ๆŽง โ”‚   โ”‚
โ”‚  โ””โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”ดโ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”ดโ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”ดโ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”ดโ”€โ”€โ”€โ”€โ”€โ”€โ”˜   โ”‚
โ”œโ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”ค
โ”‚                  ORM Layer (ๆ•ฐๆฎ่ฎฟ้—ฎๅฑ‚)                          โ”‚
โ”‚  โ”Œโ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”   โ”‚
โ”‚  โ”‚  FreeGo ORM                                              โ”‚   โ”‚
โ”‚  โ”‚  โ€ข ้›ถๅ†…ๅญ˜ๆตช่ดน โ€ข ๆžไฝŽๅๅฐ„็ƒญ็‚น โ€ข ็ฒพ็กฎๅฎน้‡้ข„ไผฐ                โ”‚   โ”‚
โ”‚  โ”‚  โ€ข ้ซ˜ๅนถๅ‘ไผ˜ๅŒ–๏ผŒๆ€ง่ƒฝๆ˜พ่‘—ๆๅ‡                                โ”‚   โ”‚
โ”‚  โ””โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”˜   โ”‚
โ”œโ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”ค
โ”‚                 Database Layer (ๆ•ฐๆฎๅบ“ๅฑ‚)                        โ”‚
โ”‚  โ”Œโ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”ฌโ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”ฌโ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”ฌโ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”ฌโ”€โ”€โ”€โ”€โ”€โ”€โ”   โ”‚
โ”‚  โ”‚   MySQL    โ”‚  MongoDB   โ”‚ Redis ็ผ“ๅญ˜ โ”‚ ้” / ้™ๆต  โ”‚ ๆ‰ฉๅฑ•  โ”‚   โ”‚
โ”‚  โ””โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”ดโ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”ดโ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”ดโ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”ดโ”€โ”€โ”€โ”€โ”€โ”€โ”˜   โ”‚
โ””โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”˜

ใ€ๆ€ง่ƒฝๆŒ‡ๆ ‡ๆ‘˜ๅฝ•ใ€‘๏ผˆๆฅ่‡ชไป“ๅบ“ๅ†… HTTP/ๅฎ‰ๅ…จ็›ธๅ…ณ benchmark๏ผ›่ฏทไปฅๆœฌๆœบ `go test -bench` ไธบๅ‡†๏ผ‰
โ€ข ECC ็™ปๅฝ•่ฎค่ฏ: 3,324 TPS       โ€ข AES ๆ•ฐๆฎๆŸฅ่ฏข: 65,928 TPS
โ€ข ๅ•ๆกๆŸฅ่ฏข: 130,901 ns/op       โ€ข ๆ‰น้‡ๆŸฅ่ฏข: 8,931,733 ns/op
โ€ข ORM ๆ‰น้‡็บฆ 6.82MB/op๏ผˆไธŽไธ‹่กจไธ€่‡ด๏ผ‰ โ€ข GC: 93,139 allocs/op๏ผˆไป“ๅบ“ benchmark ๆ‘˜ๅฝ•๏ผ‰
โ€ข ๅนถๅ‘่ฟžๆŽฅ: 10,000+           โ€ข CPU ไฝฟ็”จ: < 30%๏ผˆ่ง†่ดŸ่ฝฝ๏ผ‰

๐Ÿ”ง ๅฟซ้€Ÿๅผ€ๅง‹

๐Ÿ“ฆ ๅฎ‰่ฃ…
go get github.com/godaddy-x/freego
๐Ÿš€ ๅŸบ็ก€็คบไพ‹
package main

import (
    "github.com/godaddy-x/freego/node"
    "github.com/godaddy-x/freego/utils/jwt"
)

func main() {
    httpNode := &node.HttpNode{}

    // ้…็ฝฎ JWT ่ฎค่ฏ
    httpNode.AddJwtConfig(jwt.JwtConfig{
        TokenKey: "your-256-bit-secret-key",
        TokenExp: jwt.ONE_HOUR,
    })

    // ๆทปๅŠ ่ทฏ็”ฑ
    httpNode.GET("/health", func(ctx *node.Context) error {
        return ctx.Json(map[string]interface{}{"status": "ok"})
    })

    // ๅฏๅŠจๆœๅŠก
    httpNode.StartServer(":8080")
}

๐Ÿ” ๅฎ‰ๅ…จ็‰นๆ€ง

ๅคš้‡่ฎค่ฏไฝ“็ณป
  • JWT Token: ๆ— ็Šถๆ€่ฎค่ฏ๏ผŒๆ”ฏๆŒ็Ÿญ่ฟ‡ๆœŸๆ—ถ้—ด
  • HMAC-SHA256: ้˜ฒๆญข้‡ๆ”พๆ”ปๅ‡ปๅ’Œๆ•ฐๆฎ็ฏกๆ”น
  • Ed25519 / X25519: ็ญพๅไธŽๅฏ†้’ฅๅๅ•†๏ผˆๆŒ‰ Plan / ่ทฏ็”ฑๅฏ็”จ๏ผŒ่ฏฆ่ง README_SECURITY.md๏ผ‰
  • AES-GCM: ่ฎค่ฏๅŠ ๅฏ†๏ผŒๅ…ผ้กพๆœบๅฏ†ๆ€งไธŽๅฎŒๆ•ดๆ€ง๏ผˆๆŒ‰ Plan / ่ทฏ็”ฑๅฏ็”จ๏ผ‰
ๅฎ‰ๅ…จๆœบๅˆถ
  • ๆ—ถ้—ดๆˆณ้ชŒ่ฏ: ่ฏทๆฑ‚ๅœจๅ…ธๅž‹ ยฑ5 ๅˆ†้’Ÿ็ช—ๅฃๅ†…ๆœ‰ๆ•ˆ๏ผˆไปฅ่ทฏ็”ฑ/้…็ฝฎไธบๅ‡†๏ผ‰
  • ้šๆœบๆ•ฐ้˜ฒ้‡ๆ”พ: ๆฏไธช่ฏทๆฑ‚ไฝฟ็”จๅ”ฏไธ€ nonce
  • ไธšๅŠกๅฎŒๆ•ดๆ€ง: HMAC / ๅค–ๅฑ‚็ญพๅ็ญ‰ไธŽ Tokenใ€Secret ๆŒ‰้…็ฝฎ็ป„ๅˆๆ ก้ชŒ

๐Ÿ“ˆ ๆ€ง่ƒฝๅฏนๆฏ”

HTTP API ๆ€ง่ƒฝ
ๆต‹่ฏ•ๅœบๆ™ฏ TPS ๅ“ๅบ”ๆ—ถ้—ด ๅ†…ๅญ˜ๅˆ†้…
ECC ็™ปๅฝ•่ฎค่ฏ 3,324 0.37ms 14KB
AES ๆ•ฐๆฎๆŸฅ่ฏข 65,928 0.02ms 9.7KB

ไธŠ่กจไธŽๆžถๆž„ๅ›พๅ†…ๆ‘˜ๅฝ•ๅŒๆบ๏ผ›ๅค็Žฐ่ง http_test.goใ€http_security_test.go ็ญ‰ใ€‚

ORM ๆ‰น้‡ๆŸฅ่ฏขๆ€ง่ƒฝ (3000 ่กŒๆ•ฐๆฎ)
ๆก†ๆžถ ๅค„็†ๆ—ถ้—ด ๅ†…ๅญ˜ไฝฟ็”จ ็›ธๅฏนๆ€ง่ƒฝ ๅ†…ๅญ˜ๆ•ˆ็އ
sqlx 6.84ms 8.61MB ๅŸบๅ‡† โญโญโญโญ
ๅŽŸ็”Ÿ SQL 7.01ms 8.54MB +2.5% โญโญโญโญโญ
FreeGo ORM 8.93ms 6.82MB +30.7% โญโญโญโญโญ
GORM 9.25ms 9.19MB +35.3% โญโญโญ
Beego ORM 13.62ms 15.85MB +99.2% โญโญ
XORM 13.74ms 19.06MB +100.9% โญโญ

้กบๅบๆจกๅผๆต‹่ฏ•: 17 ไธชๅญ—ๆฎตๅฎŒๅ…จๅ…ฌๅนณๅฏนๆฏ”๏ผŒๆ›ด็œŸๅฎžๅๆ˜ ๅฎž้™…ไธšๅŠกๅœบๆ™ฏใ€‚ๅฎŒๆ•ด็ŽฏๅขƒไธŽๅค็Žฐๆญฅ้ชค่ง orm_performance_report.md๏ผ›Mongo ่ง mongodb_performance_report.mdใ€‚

๐Ÿ—„๏ธ ORM ็‰นๆ€ง

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

๐ŸŽฏ ้€‰ๆ‹ฉๆŒ‡ๅ—

้€‰ๆ‹ฉ FreeGo ็š„็†็”ฑ
้œ€ๆฑ‚ๅœบๆ™ฏ FreeGo ไผ˜ๅŠฟ ้€‚็”จ้กน็›ฎ
๐Ÿš€ ้ซ˜ๆ€ง่ƒฝ ่พƒ sqlx ็บฆ +30.7% ่€—ๆ—ถ๏ผŒๆ‰น้‡ๅœบๆ™ฏๅ†…ๅญ˜ๆ›ด็œ๏ผˆ่งไธŠ่กจ๏ผ‰ ้ซ˜ๅนถๅ‘ Web ๆœๅŠก
๐Ÿ”’ ๅผบๅฎ‰ๅ…จ / ๆ”ฏไป˜ๅœบๆ™ฏ ไธŽ PCI DSS ็ญ‰ๅธธ่งๅœบๆ™ฏ็š„่ƒฝๅŠ›้€‚้…ๅ–ๅ‘ไธ€่‡ด๏ผˆ่งๅฎ‰ๅ…จๆ–‡ๆกฃ๏ผ‰ ้‡‘่žใ€ๆ”ฏไป˜็ณป็ปŸ
๐Ÿ’พ ๅ†…ๅญ˜ไผ˜ๅŒ– ORM ๆ‰น้‡็บฆ 6.82MB๏ผŒ็›ธๅฏนๅŒ็ฑป ORM ๆ›ด็œๅˆ†้… ๅ†…ๅญ˜ๆ•ๆ„Ÿๅบ”็”จ
๐Ÿ—„๏ธ ๆ•ฐๆฎๅบ“ๅฏ†้›† ๆžไฝŽๅๅฐ„็ƒญ็‚น ORM๏ผŒๆ™บ่ƒฝๅฎน้‡้ข„ไผฐ ๆ•ฐๆฎๅฏ†้›†ๅž‹็ณป็ปŸ
ๅฟซ้€Ÿ้ƒจ็ฝฒ
# ็คบไพ‹๏ผšGo ็‰ˆๆœฌไธŽ go.mod ไธ€่‡ด๏ผ›้€‚็”จไบŽไฝ ็š„ๅบ”็”จไป“ๅบ“๏ผˆๆœฌไป“ๅบ“ไธบๅบ“ๆ—ถ้œ€่‡ชๅธฆ main ๅŒ…ๅ†ๆž„ๅปบ๏ผ‰
FROM golang:1.26-alpine
WORKDIR /app
COPY . .
RUN go build -o main .
CMD ["./main"]

๐Ÿ“ž ่”็ณปไธŽๆ”ฏๆŒ

ๆฌข่ฟŽ้€š่ฟ‡ Issues ๅ้ฆˆ้—ฎ้ข˜ไธŽๅปบ่ฎฎใ€‚

Documentation ยถ

The Go Gopher

There is no documentation for this package.

Directories ยถ

Path Synopsis
Package rabbitmq ๆไพ›RabbitMQๆถˆๆฏ้˜Ÿๅˆ—็š„Goๅฎž็Žฐ
Package rabbitmq ๆไพ›RabbitMQๆถˆๆฏ้˜Ÿๅˆ—็š„Goๅฎž็Žฐ
Package cache ๆไพ›Redis็ผ“ๅญ˜็ฎก็†ๅŠŸ่ƒฝ ๅŸบไบŽ go-redis v9 ๅบ“ๆไพ›้ซ˜ๆ€ง่ƒฝRedis็ผ“ๅญ˜ๆ“ไฝœ
Package cache ๆไพ›Redis็ผ“ๅญ˜็ฎก็†ๅŠŸ่ƒฝ ๅŸบไบŽ go-redis v9 ๅบ“ๆไพ›้ซ˜ๆ€ง่ƒฝRedis็ผ“ๅญ˜ๆ“ไฝœ
limiter
Package rate provides a rate limiter.
Package rate provides a rate limiter.
package ballast ๆไพ›ๅŸบไบŽ"ๅŽ‹่ˆฑ็Ÿณ"๏ผˆballast๏ผ‰็š„GCไผ˜ๅŒ–ๅทฅๅ…ท ้€š่ฟ‡้ข„ๅˆ†้…้•ฟๆœŸๆŒๆœ‰็š„ๅคงๅ—ๅ†…ๅญ˜๏ผŒ่ฐƒๆ•ดGoๅžƒๅœพๅ›žๆ”ถ็š„่งฆๅ‘้˜ˆๅ€ผ๏ผŒๅ‡ๅฐ‘GC้ข‘็އ ้€‚็”จไบŽๅ†…ๅญ˜ไฝฟ็”จ้ข‘็นๆณขๅŠจ็š„ๆœๅŠก๏ผŒ้œ€ๆ นๆฎๅฎž้™…ๅ†…ๅญ˜้œ€ๆฑ‚ๅˆ็†้…็ฝฎ
package ballast ๆไพ›ๅŸบไบŽ"ๅŽ‹่ˆฑ็Ÿณ"๏ผˆballast๏ผ‰็š„GCไผ˜ๅŒ–ๅทฅๅ…ท ้€š่ฟ‡้ข„ๅˆ†้…้•ฟๆœŸๆŒๆœ‰็š„ๅคงๅ—ๅ†…ๅญ˜๏ผŒ่ฐƒๆ•ดGoๅžƒๅœพๅ›žๆ”ถ็š„่งฆๅ‘้˜ˆๅ€ผ๏ผŒๅ‡ๅฐ‘GC้ข‘็އ ้€‚็”จไบŽๅ†…ๅญ˜ไฝฟ็”จ้ข‘็นๆณขๅŠจ็š„ๆœๅŠก๏ผŒ้œ€ๆ นๆฎๅฎž้™…ๅ†…ๅญ˜้œ€ๆฑ‚ๅˆ็†้…็ฝฎ
sdk
Package goquery implements features similar to jQuery, including the chainable syntax, to manipulate and query an HTML document.
Package goquery implements features similar to jQuery, including the chainable syntax, to manipulate and query an HTML document.
ormx
impl
Package impl ๅฎž็Žฐ gRPC CommonWorker๏ผšP=0 ๆ˜Žๆ–‡๏ผ›s=SHA256(่ง„่Œƒๅญ—ๆฎต)๏ผ›e=Ed25519(s)๏ผ›Cipher ไธบ *crypto.Ed25519Objectใ€‚
Package impl ๅฎž็Žฐ gRPC CommonWorker๏ผšP=0 ๆ˜Žๆ–‡๏ผ›s=SHA256(่ง„่Œƒๅญ—ๆฎต)๏ผ›e=Ed25519(s)๏ผ›Cipher ไธบ *crypto.Ed25519Objectใ€‚
pb
crypto
Ed25519 / X25519๏ผˆCurve25519๏ผ‰ๅฐ่ฃ…๏ผŒไพ่ต– github.com/godaddy-x/eccryptoใ€‚
Ed25519 / X25519๏ผˆCurve25519๏ผ‰ๅฐ่ฃ…๏ผŒไพ่ต– github.com/godaddy-x/eccryptoใ€‚
decimal
Package decimal implements an arbitrary precision fixed-point decimal.
Package decimal implements an arbitrary precision fixed-point decimal.
jwt
sdk
snowflake
Package snowflake provides a very simple Twitter snowflake generator and parser.
Package snowflake provides a very simple Twitter snowflake generator and parser.

Jump to

Keyboard shortcuts

? : This menu
/ : Search site
f or F : Jump to
y or Y : Canonical URL