# Wu-Lazy-Cloud-Network ๆžถๆž„่ฏดๆ˜Ž ## ๐Ÿ—๏ธ ๆ•ดไฝ“ๆžถๆž„ ### ็ณป็ปŸๆžถๆž„ๅ›พ ``` โ”Œโ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ” โ”‚ Wu-Lazy-Cloud-Network โ”‚ โ”œโ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”ค โ”‚ ๅฎขๆˆท็ซฏ (Client) ๆœๅŠก็ซฏ (Server) โ”‚ โ”‚ โ”Œโ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ” โ”Œโ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ” โ”‚ โ”‚ โ”‚ Web UI โ”‚ โ”‚ Web UI โ”‚ โ”‚ โ”‚ โ”‚ (6004) โ”‚ โ”‚ (6001) โ”‚ โ”‚ โ”‚ โ””โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”˜ โ””โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”˜ โ”‚ โ”‚ โ”Œโ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ” โ”Œโ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ” โ”‚ โ”‚ โ”‚ Netty Client โ”‚โ—„โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ–บโ”‚ Netty Server โ”‚ โ”‚ โ”‚ โ”‚ (7001) โ”‚ โ”‚ (7001) โ”‚ โ”‚ โ”‚ โ””โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”˜ โ””โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”˜ โ”‚ โ”‚ โ”Œโ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ” โ”Œโ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ” โ”‚ โ”‚ โ”‚ HTTP Proxy โ”‚ โ”‚ HTTP Proxy โ”‚ โ”‚ โ”‚ โ”‚ (8002) โ”‚ โ”‚ (8001) โ”‚ โ”‚ โ”‚ โ””โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”˜ โ””โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”˜ โ”‚ โ”‚ โ”Œโ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ” โ”Œโ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ” โ”‚ โ”‚ โ”‚ SOCKS Proxy โ”‚ โ”‚ SOCKS Proxy โ”‚ โ”‚ โ”‚ โ”‚ (9002) โ”‚ โ”‚ (9001) โ”‚ โ”‚ โ”‚ โ””โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”˜ โ””โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”˜ โ”‚ โ””โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”˜ ``` ### ๆ ธๅฟƒ็ป„ไปถ #### 1. ้€šไฟกๅฑ‚ (Communication Layer) - **Netty Framework**: ๅŸบไบŽ Netty ็š„้ซ˜ๆ€ง่ƒฝ็ฝ‘็ปœ้€šไฟก - **TCP/UDP ๆ”ฏๆŒ**: ๆ”ฏๆŒๅคš็งไผ ่พ“ๅ่ฎฎ - **ๅฟƒ่ทณๆœบๅˆถ**: ไฟๆŒๅฎขๆˆท็ซฏไธŽๆœๅŠก็ซฏ็š„่ฟžๆŽฅ #### 2. ๅ่ฎฎๅฑ‚ (Protocol Layer) - **HTTP ไปฃ็†**: ๆ”ฏๆŒ HTTP/HTTPS ไปฃ็† - **SOCKS ไปฃ็†**: ๆ”ฏๆŒ SOCKS4/SOCKS5 ไปฃ็† - **่‡ชๅฎšไน‰ๅ่ฎฎ**: ๆ”ฏๆŒๆ‰ฉๅฑ•่‡ชๅฎšไน‰ๅ่ฎฎ #### 3. ไธšๅŠกๅฑ‚ (Business Layer) - **ๅ†…็ฝ‘็ฉฟ้€**: ็ฝ‘็ปœ็ซฏๅฃๆ˜ ๅฐ„ๅŠŸ่ƒฝ - **ๆต้‡็›‘ๆŽง**: ๅฎžๆ—ถๆต้‡็ปŸ่ฎกๅ’Œๅˆ†ๆž - **่ทฏ็”ฑ็ฎก็†**: ่™šๆ‹Ÿ่ทฏ็”ฑๅ’Œๆต้‡่ฝฌๅ‘ #### 4. ๆ•ฐๆฎๅฑ‚ (Data Layer) - **MySQL**: ไธปๆ•ฐๆฎๅบ“๏ผŒๅญ˜ๅ‚จ้…็ฝฎๅ’Œ็›‘ๆŽงๆ•ฐๆฎ - **H2**: ๅผ€ๅ‘็Žฏๅขƒๆ•ฐๆฎๅบ“ - **Lazy ORM**: ๆ•ฐๆฎๅบ“ๆ“ไฝœๆก†ๆžถ ## ๐Ÿ“ฆ ๆจกๅ—ๆžถๆž„ ### ๆจกๅ—ไพ่ต–ๅ…ณ็ณป ``` wu-lazy-cloud-network (็ˆถๆจกๅ—) โ”œโ”€โ”€ wu-lazy-cloud-heartbeat-common (ๅ…ฌๅ…ฑๆจกๅ—) โ”‚ โ”œโ”€โ”€ ๆŽฅๅฃๅฎšไน‰ โ”‚ โ”œโ”€โ”€ ๆžšไธพๅธธ้‡ โ”‚ โ”œโ”€โ”€ ้€‚้…ๅ™จ โ”‚ โ””โ”€โ”€ ๅทฅๅ…ท็ฑป โ”œโ”€โ”€ wu-lazy-cloud-heartbeat-server (ๆœๅŠก็ซฏๆ ธๅฟƒ) โ”‚ โ”œโ”€โ”€ ๆœๅŠก็ซฏไธšๅŠก้€ป่พ‘ โ”‚ โ”œโ”€โ”€ ็ฝ‘็ปœๅค„็† โ”‚ โ””โ”€โ”€ ็ฎก็†็•Œ้ข โ”œโ”€โ”€ wu-lazy-cloud-heartbeat-client (ๅฎขๆˆท็ซฏๆ ธๅฟƒ) โ”‚ โ”œโ”€โ”€ ๅฎขๆˆท็ซฏไธšๅŠก้€ป่พ‘ โ”‚ โ”œโ”€โ”€ ่ฟžๆŽฅ็ฎก็† โ”‚ โ””โ”€โ”€ ๆœฌๅœฐ็•Œ้ข โ”œโ”€โ”€ wu-lazy-cloud-heartbeat-dns (DNSๆจกๅ—) โ”‚ โ””โ”€โ”€ DNS่งฃๆžๅŠŸ่ƒฝ โ”œโ”€โ”€ wu-lazy-cloud-heartbeat-protocol-proxy (ไปฃ็†ๅ่ฎฎ) โ”‚ โ”œโ”€โ”€ HTTPไปฃ็† โ”‚ โ””โ”€โ”€ SOCKSไปฃ็† โ””โ”€โ”€ wu-lazy-cloud-heartbeat-start (ๅฏๅŠจๆจกๅ—) โ”œโ”€โ”€ wu-lazy-cloud-heartbeat-server-start โ”œโ”€โ”€ wu-lazy-cloud-heartbeat-client-start โ””โ”€โ”€ wu-lazy-cloud-heartbeat-server-cluster-start ``` ### ๆจกๅ—ๅŠŸ่ƒฝ่ฏดๆ˜Ž #### 1. wu-lazy-cloud-heartbeat-common **ๅŠŸ่ƒฝ**: ๅ…ฌๅ…ฑๅŸบ็ก€ๆจกๅ— - **ๆŽฅๅฃๅฎšไน‰**: ๅฎšไน‰็ณป็ปŸๆ ธๅฟƒๆŽฅๅฃ - **ๆžšไธพๅธธ้‡**: ็ณป็ปŸๅธธ้‡ๅฎšไน‰ - **้€‚้…ๅ™จ**: ๅ่ฎฎ้€‚้…ๅ™จ - **ๅทฅๅ…ท็ฑป**: ้€š็”จๅทฅๅ…ทๆ–นๆณ• **ๆ ธๅฟƒ็ฑป**: - `NettyMsg`: ็ฝ‘็ปœๆถˆๆฏๅŸบ็ฑป - `ChannelContext`: ้€š้“ไธŠไธ‹ๆ–‡ - `NettyTransferChannelContext`: ไผ ่พ“้€š้“ไธŠไธ‹ๆ–‡ #### 2. wu-lazy-cloud-heartbeat-server **ๅŠŸ่ƒฝ**: ๆœๅŠก็ซฏๆ ธๅฟƒๆจกๅ— - **็ฝ‘็ปœๆœๅŠก**: ๆไพ› TCP/UDP ๆœๅŠก - **ๅฎขๆˆท็ซฏ็ฎก็†**: ็ฎก็†่ฟžๆŽฅ็š„ๅฎขๆˆท็ซฏ - **็ซฏๅฃๆ˜ ๅฐ„**: ๅค„็†็ซฏๅฃๆ˜ ๅฐ„้€ป่พ‘ - **ๆต้‡็›‘ๆŽง**: ็›‘ๆŽง็ฝ‘็ปœๆต้‡ **ๆ ธๅฟƒ็ฑป**: - `NettyTcpServerSocketApplicationListener`: TCPๆœๅŠก็›‘ๅฌๅ™จ - `LazyServerPermeateServerMappingApplication`: ๆœๅŠก็ซฏๆธ—้€ๅบ”็”จ - `NettyServerVirtualRouteApplication`: ่™šๆ‹Ÿ่ทฏ็”ฑๅบ”็”จ #### 3. wu-lazy-cloud-heartbeat-client **ๅŠŸ่ƒฝ**: ๅฎขๆˆท็ซฏๆ ธๅฟƒๆจกๅ— - **่ฟžๆŽฅ็ฎก็†**: ็ฎก็†ไธŽๆœๅŠก็ซฏ็š„่ฟžๆŽฅ - **ๆœฌๅœฐๆœๅŠก**: ๆไพ›ๆœฌๅœฐๆœๅŠกๆŽฅๅฃ - **็ซฏๅฃ่ฝฌๅ‘**: ๅค„็†็ซฏๅฃ่ฝฌๅ‘้€ป่พ‘ **ๆ ธๅฟƒ็ฑป**: - `NettyClientSocketApplicationListener`: ๅฎขๆˆท็ซฏ่ฟžๆŽฅ็›‘ๅฌๅ™จ - `LazyClientPermeateClientMappingApplication`: ๅฎขๆˆท็ซฏๆธ—้€ๅบ”็”จ - `NettyClientVirtualRouteApplication`: ๅฎขๆˆท็ซฏ่™šๆ‹Ÿ่ทฏ็”ฑ #### 4. wu-lazy-cloud-heartbeat-protocol-proxy **ๅŠŸ่ƒฝ**: ไปฃ็†ๅ่ฎฎๆจกๅ— - **HTTPไปฃ็†**: HTTP/HTTPS ไปฃ็†ๆœๅŠก - **SOCKSไปฃ็†**: SOCKS4/SOCKS5 ไปฃ็†ๆœๅŠก - **ๅ่ฎฎๅค„็†**: ๅค„็†ๅ„็งไปฃ็†ๅ่ฎฎ **ๆ ธๅฟƒ็ฑป**: - `NettyHttpProxySocketApplicationListener`: HTTPไปฃ็†็›‘ๅฌๅ™จ - `NettySocketProxySocketApplicationListener`: SOCKSไปฃ็†็›‘ๅฌๅ™จ - `NettyTcpProxyFilter`: TCPไปฃ็†่ฟ‡ๆปคๅ™จ ## ๐Ÿ”„ ๆ•ฐๆฎๆตๆžถๆž„ ### ๅ†…็ฝ‘็ฉฟ้€ๆ•ฐๆฎๆต ``` ่ฎฟๅฎข่ฏทๆฑ‚ โ†’ ๆœๅŠก็ซฏ โ†’ ๅฟƒ่ทณ้€š้“ โ†’ ๅฎขๆˆท็ซฏ โ†’ ๆœฌๅœฐๆœๅŠก โ†‘ โ†“ ่ฎฟๅฎขๅ“ๅบ” โ† ๆœๅŠก็ซฏ โ† ๅฟƒ่ทณ้€š้“ โ† ๅฎขๆˆท็ซฏ โ† ๆœฌๅœฐๆœๅŠก ``` #### ่ฏฆ็ป†ๆต็จ‹ 1. **่ฎฟๅฎข่ฟžๆŽฅ** - ่ฎฟๅฎข่ฟžๆŽฅๅˆฐๆœๅŠก็ซฏ็š„่ฎฟๅฎข็ซฏๅฃ - ๆœๅŠก็ซฏๅˆ›ๅปบ่ฎฟๅฎข้€š้“ 2. **ๆ•ฐๆฎ่ฝฌๅ‘** - ๆœๅŠก็ซฏ้€š่ฟ‡ๅฟƒ่ทณ้€š้“ๅฐ†ๆ•ฐๆฎๅ‘้€็ป™ๅฎขๆˆท็ซฏ - ๅฎขๆˆท็ซฏๆŽฅๆ”ถๆ•ฐๆฎๅนถ่ฝฌๅ‘็ป™ๆœฌๅœฐๆœๅŠก 3. **ๅ“ๅบ”่ฟ”ๅ›ž** - ๆœฌๅœฐๆœๅŠกๅ“ๅบ”ๆ•ฐๆฎ - ๅฎขๆˆท็ซฏ้€š่ฟ‡ๅฟƒ่ทณ้€š้“่ฟ”ๅ›ž็ป™ๆœๅŠก็ซฏ - ๆœๅŠก็ซฏ้€š่ฟ‡่ฎฟๅฎข้€š้“่ฟ”ๅ›ž็ป™่ฎฟๅฎข ### ไปฃ็†ๆ•ฐๆฎๆต ``` ๅฎขๆˆท็ซฏๅบ”็”จ โ†’ ไปฃ็†ๅฎขๆˆท็ซฏ โ†’ ๅฟƒ่ทณ้€š้“ โ†’ ไปฃ็†ๆœๅŠก็ซฏ โ†’ ็›ฎๆ ‡ๆœๅŠกๅ™จ โ†‘ โ†“ ๅฎขๆˆท็ซฏๅบ”็”จ โ† ไปฃ็†ๅฎขๆˆท็ซฏ โ† ๅฟƒ่ทณ้€š้“ โ† ไปฃ็†ๆœๅŠก็ซฏ โ† ็›ฎๆ ‡ๆœๅŠกๅ™จ ``` #### ไปฃ็†็ฑปๅž‹ 1. **HTTPไปฃ็†** - ๆ”ฏๆŒ HTTP/HTTPS ๅ่ฎฎ - ๅฏ้…็ฝฎ่ฎค่ฏๆœบๅˆถ - ๆ”ฏๆŒๆต้‡็›‘ๆŽง 2. **SOCKSไปฃ็†** - ๆ”ฏๆŒ SOCKS4/SOCKS5 ๅ่ฎฎ - ๆ”ฏๆŒ TCP/UDP ไปฃ็† - ๆ”ฏๆŒๅคš็ง่ฎค่ฏๆ–นๅผ ## ๐Ÿ—„๏ธ ๆ•ฐๆฎๅบ“ๆžถๆž„ ### ๆ•ฐๆฎๅบ“่ฎพ่ฎก #### ๆ ธๅฟƒ่กจ็ป“ๆž„ 1. **ๅฎขๆˆท็ซฏ็ฎก็†่กจ** ```sql -- ๅฎขๆˆท็ซฏไฟกๆฏ่กจ CREATE TABLE lazy_netty_client ( id BIGINT PRIMARY KEY, client_id VARCHAR(100), client_name VARCHAR(200), client_ip VARCHAR(50), client_port INT, is_deleted TINYINT, create_time DATETIME, update_time DATETIME ); ``` 2. **็ซฏๅฃๆ˜ ๅฐ„่กจ** ```sql -- ๆœๅŠก็ซฏๆธ—้€ๅฎขๆˆท็ซฏๆ˜ ๅฐ„่กจ CREATE TABLE lazy_server_permeate_client_mapping ( id BIGINT PRIMARY KEY, client_id VARCHAR(100), visitor_port INT, real_host VARCHAR(100), real_port INT, is_deleted TINYINT, create_time DATETIME, update_time DATETIME ); ``` 3. **ๆต้‡็ปŸ่ฎก่กจ** ```sql -- ๆต้‡็ปŸ่ฎก่กจ CREATE TABLE lazy_netty_flow_statistics ( id BIGINT PRIMARY KEY, client_id VARCHAR(100), port INT, upload_bytes BIGINT, download_bytes BIGINT, create_time DATETIME ); ``` ### ๆ•ฐๆฎๅ…ณ็ณป ``` ๅฎขๆˆท็ซฏ่กจ (lazy_netty_client) โ†“ (1:N) ็ซฏๅฃๆ˜ ๅฐ„่กจ (lazy_server_permeate_client_mapping) โ†“ (1:N) ๆต้‡็ปŸ่ฎก่กจ (lazy_netty_flow_statistics) ``` ## ๐Ÿ”ง ้…็ฝฎๆžถๆž„ ### ้…็ฝฎๅฑ‚ๆฌก็ป“ๆž„ ``` application.yml (ไธป้…็ฝฎ) โ”œโ”€โ”€ spring.lazy.netty.server (ๆœๅŠก็ซฏ้…็ฝฎ) โ”‚ โ”œโ”€โ”€ mode: standalone/cluster โ”‚ โ”œโ”€โ”€ node-id: ่Š‚็‚นID โ”‚ โ”œโ”€โ”€ node-host: ่Š‚็‚นไธปๆœบ โ”‚ โ””โ”€โ”€ node-port: ่Š‚็‚น็ซฏๅฃ โ”œโ”€โ”€ spring.lazy.netty.client (ๅฎขๆˆท็ซฏ้…็ฝฎ) โ”‚ โ”œโ”€โ”€ client-id: ๅฎขๆˆท็ซฏID โ”‚ โ”œโ”€โ”€ inet-host: ๆœๅŠก็ซฏๅœฐๅ€ โ”‚ โ””โ”€โ”€ inet-port: ๆœๅŠก็ซฏ็ซฏๅฃ โ””โ”€โ”€ spring.lazy.netty.protocol.proxy (ไปฃ็†้…็ฝฎ) โ”œโ”€โ”€ authentication: ่ฎค่ฏๅผ€ๅ…ณ โ”œโ”€โ”€ socket-protocol-proxy: SOCKSไปฃ็† โ””โ”€โ”€ http-protocol-proxy: HTTPไปฃ็† ``` ### ้…็ฝฎไผ˜ๅ…ˆ็บง 1. **็Žฏๅขƒๅ˜้‡**: ๆœ€้ซ˜ไผ˜ๅ…ˆ็บง 2. **ๅ‘ฝไปค่กŒๅ‚ๆ•ฐ**: ๆฌก้ซ˜ไผ˜ๅ…ˆ็บง 3. **้…็ฝฎๆ–‡ไปถ**: ้ป˜่ฎคไผ˜ๅ…ˆ็บง 4. **้ป˜่ฎคๅ€ผ**: ๆœ€ไฝŽไผ˜ๅ…ˆ็บง ## ๐Ÿ”’ ๅฎ‰ๅ…จๆžถๆž„ ### ่ฎค่ฏๆœบๅˆถ 1. **Token่ฎค่ฏ** - ๅŸบไบŽ JWT ็š„ Token ่ฎค่ฏ - ๆ”ฏๆŒ Token ่ฟ‡ๆœŸๅ’Œๅˆทๆ–ฐ - ๅฏ้…็ฝฎ Token ้ชŒ่ฏๅผ€ๅ…ณ 2. **AppKey/AppSecret่ฎค่ฏ** - ๅฎขๆˆท็ซฏๅ’ŒๆœๅŠก็ซฏไน‹้—ด็š„่ฎค่ฏ - ๆ”ฏๆŒๅŠจๆ€ๅฏ†้’ฅ็ฎก็† - ้˜ฒๆญขๆœชๆŽˆๆƒ่ฎฟ้—ฎ 3. **ไปฃ็†่ฎค่ฏ** - HTTPไปฃ็†่ฎค่ฏ - SOCKSไปฃ็†่ฎค่ฏ - ๆ”ฏๆŒ็”จๆˆทๅๅฏ†็ ่ฎค่ฏ ### ็ฝ‘็ปœๅฎ‰ๅ…จ 1. **SSL/TLSๅŠ ๅฏ†** - ๆ”ฏๆŒ HTTPS ่ฎฟ้—ฎ็ฎก็†็•Œ้ข - ๅฏ้…็ฝฎ SSL ่ฏไนฆ - ๆ”ฏๆŒๅผบๅˆถ HTTPS ่ฎฟ้—ฎ 2. **ๆต้‡ๅŠ ๅฏ†** - ๆ”ฏๆŒๅฎขๆˆท็ซฏไธŽๆœๅŠก็ซฏไน‹้—ด็š„ๆต้‡ๅŠ ๅฏ† - ๅฏ้…็ฝฎๅŠ ๅฏ†็ฎ—ๆณ• - ้˜ฒๆญขๆ•ฐๆฎๆณ„้œฒ 3. **่ฎฟ้—ฎๆŽงๅˆถ** - ๅŸบไบŽ่ง’่‰ฒ็š„่ฎฟ้—ฎๆŽงๅˆถ (RBAC) - ๆ”ฏๆŒ็ป†็ฒ’ๅบฆๆƒ้™ๆŽงๅˆถ - ่ฎฐๅฝ•่ฎฟ้—ฎๆ—ฅๅฟ— ## ๐Ÿ“Š ็›‘ๆŽงๆžถๆž„ ### ็›‘ๆŽงๆŒ‡ๆ ‡ 1. **็ณป็ปŸ็›‘ๆŽง** - CPU ไฝฟ็”จ็އ - ๅ†…ๅญ˜ไฝฟ็”จ็އ - ็ฃ็›˜ I/O - ็ฝ‘็ปœ I/O 2. **ๅบ”็”จ็›‘ๆŽง** - ่ฟžๆŽฅๆ•ฐ็ปŸ่ฎก - ๆต้‡็ปŸ่ฎก - ๅ“ๅบ”ๆ—ถ้—ด - ้”™่ฏฏ็އ 3. **ไธšๅŠก็›‘ๆŽง** - ๅฎขๆˆท็ซฏๅœจ็บฟ็Šถๆ€ - ็ซฏๅฃๆ˜ ๅฐ„็Šถๆ€ - ไปฃ็†่ฟžๆŽฅ็Šถๆ€ - ๆต้‡ไฝฟ็”จๆƒ…ๅ†ต ### ็›‘ๆŽงๆ•ฐๆฎๆต ``` ๅบ”็”จๆŒ‡ๆ ‡ โ†’ ็›‘ๆŽงๆ”ถ้›†ๅ™จ โ†’ ๆ•ฐๆฎๅญ˜ๅ‚จ โ†’ ็›‘ๆŽง็•Œ้ข โ†‘ โ†“ ๅ‘Š่ญฆ่ง„ๅˆ™ โ† ๅ‘Š่ญฆๅผ•ๆ“Ž โ† ๆ•ฐๆฎๅˆ†ๆž โ† ็›‘ๆŽงๆ•ฐๆฎ ``` ## ๐Ÿš€ ้ƒจ็ฝฒๆžถๆž„ ### ๅ•ๆœบ้ƒจ็ฝฒ ``` โ”Œโ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ” โ”‚ ๅ•ๆœบๆœๅŠก็ซฏ โ”‚ โ”‚ โ”Œโ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ” โ”‚ โ”‚ โ”‚ Web UI (6001) โ”‚ โ”‚ โ”‚ โ”‚ TCP Server (7001) โ”‚ โ”‚ โ”‚ โ”‚ HTTP Proxy (8001) โ”‚ โ”‚ โ”‚ โ”‚ SOCKS Proxy (9001) โ”‚ โ”‚ โ”‚ โ””โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”˜ โ”‚ โ””โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”˜ ``` ### ้›†็พค้ƒจ็ฝฒ ``` โ”Œโ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ” โ”‚ ่ดŸ่ฝฝๅ‡่กกๅ™จ โ”‚ โ”‚ โ”Œโ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”ฌโ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”ฌโ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ” โ”‚ โ”‚ โ”‚ ่Š‚็‚น1 โ”‚ ่Š‚็‚น2 โ”‚ ่Š‚็‚น3 โ”‚ โ”‚ โ”‚ โ”‚ 6001 โ”‚ 6001 โ”‚ 6001 โ”‚ โ”‚ โ”‚ โ”‚ 7001 โ”‚ 7001 โ”‚ 7001 โ”‚ โ”‚ โ”‚ โ””โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”ดโ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”ดโ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”˜ โ”‚ โ””โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”˜ ``` ### Docker้ƒจ็ฝฒ ``` โ”Œโ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ” โ”‚ Docker Host โ”‚ โ”‚ โ”Œโ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ” โ”‚ โ”‚ โ”‚ wlcn-server โ”‚ โ”‚ โ”‚ โ”‚ (6001,7001,8001,9001)โ”‚ โ”‚ โ”‚ โ””โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”˜ โ”‚ โ”‚ โ”Œโ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ” โ”‚ โ”‚ โ”‚ wlcn-client โ”‚ โ”‚ โ”‚ โ”‚ (6004,8002,9002) โ”‚ โ”‚ โ”‚ โ””โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”˜ โ”‚ โ””โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”˜ ``` ## ๐Ÿ”„ ๆ‰ฉๅฑ•ๆžถๆž„ ### ๆ’ไปถๆœบๅˆถ 1. **ๅ่ฎฎๆ’ไปถ** - ๆ”ฏๆŒ่‡ชๅฎšไน‰ๅ่ฎฎๆ‰ฉๅฑ• - ๆ’ไปถ็ƒญๅŠ ่ฝฝ - ๅ่ฎฎ็‰ˆๆœฌๅ…ผๅฎน 2. **่ฟ‡ๆปคๅ™จๆ’ไปถ** - ๆ”ฏๆŒ่‡ชๅฎšไน‰่ฟ‡ๆปคๅ™จ - ่ฟ‡ๆปคๅ™จ้“พๅผๅค„็† - ๅŠจๆ€่ฟ‡ๆปคๅ™จ้…็ฝฎ 3. **็›‘ๆŽงๆ’ไปถ** - ๆ”ฏๆŒ่‡ชๅฎšไน‰็›‘ๆŽงๆŒ‡ๆ ‡ - ็›‘ๆŽงๆ•ฐๆฎๅฏผๅ‡บ - ๅ‘Š่ญฆ่ง„ๅˆ™่‡ชๅฎšไน‰ ### APIๆ‰ฉๅฑ• 1. **RESTful API** - ๆไพ›ๆ ‡ๅ‡†็š„ REST API - ๆ”ฏๆŒ JSON ๆ•ฐๆฎๆ ผๅผ - ๆ”ฏๆŒ API ็‰ˆๆœฌๆŽงๅˆถ 2. **WebSocket API** - ๅฎžๆ—ถๆ•ฐๆฎๆŽจ้€ - ๅŒๅ‘้€šไฟกๆ”ฏๆŒ - ่ฟžๆŽฅ็Šถๆ€็ฎก็† 3. **gRPC API** - ้ซ˜ๆ€ง่ƒฝ RPC ่ฐƒ็”จ - ๆ”ฏๆŒๆตๅผไผ ่พ“ - ่ทจ่ฏญ่จ€ๆ”ฏๆŒ --- **็‰ˆๆœฌ**: 1.3.1-JDK24 **ๆ›ดๆ–ฐๆ—ถ้—ด**: 2024ๅนด **็ปดๆŠค่€…**: ๅดไฝณไผŸ