ชื่อของโปรเจ็กต์ GoodKill ในแง่หนึ่งหมายถึงการขายแฟลชของสินค้า (ดูเหมือน Chinglish นิดหน่อย) และในทางกลับกันก็เข้าใจได้ว่าเป็น ทักษะที่ดี โปรเจ็กต์นี้หวังที่จะสร้างให้สมบูรณ์ กรอบโครงการและบูรณาการเทคโนโลยีที่ดีและทักษะการพัฒนา (ชอบเทคโนโลยีแบ็คเอนด์) เพื่อการเรียนรู้และทบทวนได้ง่าย
โปรเจ็กต์นี้เป็นโปรเจ็กต์การขายแฟลชจำลองที่ให้อินเทอร์เฟซคำขอการจำลองการขายแฟลชแบบรวมในทางเทคนิค โดยจะใช้เฟรมเวิร์กเลเยอร์การคงอยู่ของ SpringMVC + Mybatis ใช้ Dubbo3.x [1] + Feign เพื่อทำการเรียกอินเทอร์เฟซระหว่างบริการ และใช้ Nacos สำหรับ ศูนย์การค้นพบและกำหนดค่าบริการ การสนับสนุน ฐานข้อมูลแบ่งออกเป็นฐานข้อมูลและตาราง ธุรกรรมแบบกระจาย และเครื่องสถานะถูกใช้เพื่อทำการแปลงระหว่างสถานะข้อมูลให้เสร็จสมบูรณ์ (ใช้งานตาม Spring Statemachine)
เมื่อผสานรวมกับบริการ Spring AI การจำลองการขายแฟลชสามารถทำได้ผ่านหุ่นยนต์ AI
สาขา master
สร้างขึ้นตามระบบ Spring Cloud 2023.x + Spring Boot 3.x + JDK21 ล่าสุด ในปัจจุบัน มีเพียงอินเทอร์เฟซ API การขายแฟลชหลักเท่านั้นที่ยังคงอยู่ หากคุณต้องการใช้ Spring Boot 2.7.x + JDK11 คุณสามารถสลับไปใช้แท็ก v2.7.4 ได้ (รองรับฟังก์ชันการเข้าสู่ระบบ การลงทะเบียน และการจัดการพื้นหลังอย่างง่าย) ขณะนี้สาขาหลักกำลังได้รับการอัปเกรดและฟังก์ชันไม่เสถียรเพียงพอ หากคุณพบข้อผิดพลาดของโค้ด ขอแนะนำให้ใช้เวอร์ชันเก่า
ฟังก์ชันของโปรเจ็กต์นี้ค่อนข้างเป็นพื้นฐานและมีข้อบกพร่องหลายประการ สถานการณ์ Flash Sale จริงมีความซับซ้อนมากกว่าวิธีการนำไปใช้ในโปรเจ็กต์นี้มาก โปรเจ็กต์นี้ละเว้นรายละเอียดการใช้งานด้านเทคนิคบางอย่างในสถานการณ์จริงเท่านั้น การอ้างอิง หาก คุณคิดว่าโครงการนี้มีประโยชน์สำหรับคุณ โปรดให้ดาวและสนับสนุนมัน?
เอกสารแนบ: ลิงก์โครงการ Code Cloud
https://gitee.com/techa/goodsKill
. หากความเร็วของโคลนช้า ให้ใช้คลังสินค้า Code Cloud เพื่อดึงข้อมูลดังกล่าวเป็นครั้งคราว~
เครื่องมือหรือกรอบงานที่ใช้ | ชื่อ | เว็บไซต์อย่างเป็นทางการ |
---|---|---|
บูทสปริง | กรอบการบูตสปริง | https://spring.io/projects/spring-boot |
มายบาติส-พลัส | เครื่องมือเพิ่มประสิทธิภาพ MyBatis | https://mp.baomidou.com/ |
ZooKeeper | บริการประสานงานแบบกระจาย | http://zookeeper.apache.org/ |
เรดิส | ฐานข้อมูลแคชแบบกระจาย | https://redis.io/ |
คาฟคา | คิวข้อความ | http://kafka.apache.org/ |
RabbitMQ | คิวข้อความ | https://www.rabbitmq.com/ |
MongoDB | MongoDB | https://www.mongodb.com/ |
MySQL | ฐานข้อมูล MySQL | https://www.mysql.com/ |
การค้นหาแบบยืดหยุ่น | เครื่องมือค้นหาข้อความแบบเต็ม | https://www.elastic.co |
Sharding-JDBC | ฐานข้อมูลย่อยและส่วนประกอบของตารางย่อย | https://shardingsphere.apache.org |
สปริง คลาวด์ อาลีบาบา | ส่วนประกอบคลาวด์อาลีบาบา | https://github.com/alibaba/spring-cloud-alibaba |
อาปาเช่ ดับโบ | กรอบงานการโทรระยะไกลของบริการ RPC | https://github.com/apache/dubbo |
สปริงคลาวด์เกตเวย์ | ส่วนประกอบเกตเวย์ | https://spring.io/projects/spring-cloud-gateway |
ซีต้า | โซลูชันธุรกรรมแบบกระจาย | http://seata.io/zh-cn/index.html |
ฤดูใบไม้ผลิ SecurityOAuth2.0 | องค์ประกอบการอนุญาต OAuth2.0 | https://spring.io/projects/spring-security-oauth |
GraphQL | ภาษาแบบสอบถามสำหรับ API | https://docs.spring.io/spring-graphql/docs/current/reference/html |
สปริงสเตตแมชชีน | เครื่องสปริงสเตต | https://spring.io/projects/spring-statemachine |
สา-โทเค็น | กรอบงานการรับรองความถูกต้องของผู้มีอำนาจแบบน้ำหนักเบา | https://sa-token.cc/ |
ฟลายเวย์ | เครื่องมือควบคุมเวอร์ชันฐานข้อมูล | https://flywaydb.org/ |
มินิไอโอ | บริการจัดเก็บวัตถุ | https://min.io/ |
ฤดูใบไม้ผลิเอไอ | ส่วนประกอบเอไอ | https://spring.io/projects/spring-ai |
สินค้าฆ่า |--goodskill-admin ||เซิร์ฟเวอร์ตรวจสอบผู้ดูแลระบบ SpringBoot รองรับการค้นพบไมโครเซอร์วิสของ Spring Cloud|--goodskill-ai ||บริการแชทด้วยหุ่นยนต์ AI|--goodskill-gateway ||เกตเวย์ Microservice API การตรวจสอบสิทธิ์บริการแบบครบวงจร รองรับการโหลดเส้นทางแบบไดนามิก |--goodskill-order-provider ||ผู้ให้บริการสั่งซื้อ|--goodskill-seckill-provider ||ผู้ให้บริการ Seckill|--goodskill-spring-boot-starter ||การประกอบอัตโนมัติของการกำหนดค่าโครงการ|--goodskill-common ||บริการสาธารณะ (ปัจจุบันรวมถึงฟังก์ชันการอัปโหลดและดาวน์โหลด minio) |--goodskill-web ||ให้การเข้าถึงอินเทอร์เฟซจำลองการฆ่าแฟลช|--goodskill-job ||งานที่กำหนดเวลาไว้แบบยืดหยุ่น|--goodskill-seata ||ตัวอย่างโซลูชันธุรกรรมแบบกระจายที่รวม nacos+dubbo+shardingjdbc+seata| - -goodskill-auth || ล็อกอินและโมดูลการให้สิทธิ์ |--auth-service ||บริการอนุญาตการเข้าสู่ระบบของผู้ใช้ตามเฟรมเวิร์ก Sa-Token |--oauth2-auth-server ||เซิร์ฟเวอร์การอนุญาตการเข้าสู่ระบบ oauth2.0 บริการอนุญาตการเข้าสู่ระบบแบบกำหนดเอง |--oauth2-resource-server ||ทรัพยากร oauth2.0 ฝั่งเซิร์ฟเวอร์ บริการอนุญาตการเข้าสู่ระบบที่กำหนดเอง
ปัจจุบัน มีการนำโซลูชันการฆ่าแฟลชหลายตัวไปใช้ และอินเทอร์เฟซการทดสอบมีให้ผ่าน SeckillMockController
ที่อยู่เอกสาร Openapi เกตเวย์การรวม: http://localhost/doc.html#/home
(จำเป็นต้องเปิดใช้งานบริการเกตเวย์)
ที่อยู่การตรวจสอบแอปพลิเคชัน Spring Boot Admin: http://www.goodskill.com:19031
ชื่อผู้ใช้และรหัสผ่านเข้าสู่ระบบ: user/123456
สถานการณ์ที่ 1: การใช้งานการล็อกการซิงโครไนซ์แบบซิงโครไนซ์
สถานการณ์ที่ 2: การใช้งานการล็อกแบบกระจาย Redisson
สถานการณ์ที่ 3: การใช้งาน ActiveMQ (ล้าสมัย)
สถานการณ์ที่ 4: การใช้คิวข้อความ Kafka
สถานการณ์สมมติที่ 5: การอัพเดตฐานข้อมูลอะตอมมิก
สถานการณ์ที่ 6: การรอผลการประมวลผลการขายแฟลชแบบเรียลไทม์ (ล้าสมัย)
สถานการณ์ที่ 7: ZooKeeper ล็อคแบบกระจาย
สถานการณ์ที่ 8: ใช้ Redis เพื่อลดสินค้าคงคลังของผลิตภัณฑ์แฟลชเซลล์ ส่ง MQ แบบอะซิงโครนัสหลังจากการขายแฟลชสิ้นสุดลง และใช้ MongoDB เพื่อเชื่อมโยงข้อมูลให้เสร็จสมบูรณ์
สถานการณ์ที่ 9: การใช้งาน Spring Cloud Stream
สถานการณ์ที่ 10: การจำกัดปัจจุบันของ Sentinel + การอัพเดตอะตอมมิกของฐานข้อมูล (จำเป็นต้องกำหนดค่าด้วยคอนโซล Sentinel เพื่อกำหนดค่ากฎการควบคุมโฟลว์ของ limit
ชื่อทรัพยากร)
2021-04-14 21:58:59.857 INFO [goodskill-web,df43cc8f59291c48,df43cc8f59291c48] 15808 --- [ main] o.s.w.controller.SeckillMockController : 秒杀场景二(redis分布式锁实现)开始时间:Wed Apr 14 21:58:59 CST 2021,秒杀id:1000
2021-04-14 21:59:00.094 INFO [goodskill-web,144aa7910cca9520,2821cb8d62c5a908] 15808 --- [AClOSzbugzYng-1] o.s.w.s.c.SeckillMockResponseListener : 秒杀活动结束,秒杀场景二(redis分布式锁实现)时间:Wed Apr 14 21:59:00 CST 2021,秒杀id:1000
2021-04-14 21:59:00.101 INFO [goodskill-web,144aa7910cca9520,2821cb8d62c5a908] 15808 --- [AClOSzbugzYng-1] o.s.w.s.c.SeckillMockResponseListener : 最终成功交易笔数统计中。。。
2021-04-14 21:59:01.616 INFO [goodskill-web,144aa7910cca9520,2821cb8d62c5a908] 15808 --- [AClOSzbugzYng-1] o.s.w.s.c.SeckillMockResponseListener : 最终成功交易笔数统计中。。。
2021-04-14 21:59:03.129 INFO [goodskill-web,144aa7910cca9520,2821cb8d62c5a908] 15808 --- [AClOSzbugzYng-1] o.s.w.s.c.SeckillMockResponseListener : 最终成功交易笔数:10
2021-04-14 21:59:03.130 INFO [goodskill-web,144aa7910cca9520,2821cb8d62c5a908] 15808 --- [AClOSzbugzYng-1] o.s.w.s.c.SeckillMockResponseListener : 历史任务耗时统计:StopWatch '': running time = 36159894800 ns
---------------------------------------------
ns % Task name
---------------------------------------------
4492195700 012% 秒杀场景四(kafka消息队列实现)
3164155900 009% 秒杀场景八(秒杀商品存放redis减库存,异步发送秒杀成功MQ,mongoDb数据落地)
6219218300 017% 秒杀场景十(Sentinel限流+数据库原子性更新)
9189080600 025% 秒杀场景七(zookeeper分布式锁)
3135926500 009% 秒杀场景五(数据库原子性更新update set num = num -1)
3342791800 009% 秒杀场景九(基于springcloud stream rabbitmq)
3343433700 009% 秒杀场景一(sychronized同步锁实现)
3273092300 009% 秒杀场景二(redis分布式锁实现)
JDK: OpenJDK21
Sharding-JDBC: 5.5.0
SpringCloud: 2023.xx
SpringBoot: 3.3.x
SpringCloudAlibaba: 2023.xx
Apache Dubbo: 3.3.x
ใช้อิมเมจนักเทียบท่า
กระจกเงา | เวอร์ชัน | ท่าเรือ | ชื่อผู้ใช้และรหัสผ่าน |
---|---|---|---|
นาคอส | 2.3.2-บาง | 8848 | nacos:nacos (คอนโซล) |
เรดิส | ล่าสุด | 6379 | รหัสผ่าน:123456 |
คาฟคา | 3.1.1 | 9092 | ไม่มี |
คาฟคาผู้จัดการ | ล่าสุด | 9001:9000 | ไม่มี |
มองโก | 6.0.7 | 27017 | ไม่มี |
MySQL | 8.0.29 | 3306 | รูท: รหัสผ่าน 123 |
ผู้ดูแลสวนสัตว์ | 3.6.2 | 2181 | ไม่มี |
การค้นหาแบบยืดหยุ่น | 7.17.3 | 9200 9300 | ไม่มี |
คิบานะ | 7.17.3 | 5601 | ไม่มี |
RabbitMQ | ล่าสุด | 5672 15672 | ไม่มี |
มินิไอโอ | ล่าสุด | 9000 | รูท: รหัสผ่าน |
ซีต้า | 2.0.0 | 7091 8091 | ที่นั่ง:ที่นั่ง (คอนโซล) |
ดำเนินการในไดเรกทอรีรากของโครงการ goodsKill
mvn ติดตั้งใหม่ทั้งหมด หรือ #skip unit tests mvn clean install -DskipTests
พอร์ตเริ่มต้นจะเริ่มต้น nacos, redis, mysql, rabbitmq, kafka, Zookeeper, elasticsearch, seataServer หรือใช้คำสั่ง docker-compose [2] :
docker-compose -f goodskill-simple.yml up -d
ป้อนไดเร็กทอรี goodskill-web/src/main/sql
ค้นหาไฟล์ seckill.sql
สร้างคลัง seckill
ในฐานข้อมูล mysql ในเครื่อง และดำเนินการเริ่มต้นข้อมูล
เมื่อนักเทียบท่าเขียนเริ่มต้นอิมเมจ MySQL มันจะรันสคริปต์เริ่มต้นโดยอัตโนมัติ หากคุณได้ดำเนินการขั้นตอนก่อนหน้าแล้ว คุณสามารถข้ามขั้นตอนนี้ได้ |
กำหนดค่าโฮสต์
127.0.0.1 kafka
127.0.0.1 nacos
127.0.0.1 redis
127.0.0.1 mysql
127.0.0.1 zookeeper
127.0.0.1 mongo
127.0.0.1 elasticsearch
127.0.0.1 rabbitmq
127.0.0.1 logstash
##如果网关服务部署在远程机器,此处改为相应的远程机器ip
127.0.0.1 www.goodskill.com
ในศูนย์การกำหนดค่า Nacos ให้เพิ่มการกำหนดค่าสาธารณะด้วย DataId ของ goodskill-common-connection.yml
(การกำหนดค่าสาธารณะของมิดเดิลแวร์) และ goodskill-common.yml
(การกำหนดค่าสาธารณะของบริการ) กลุ่มคือ DEFAULT_GROUP
สำหรับรายละเอียด โปรดดูที่ goodskill-common-connection.yml
ในโปรเจ็กต์ ไดเรกทอรีราก goodskill-common-connection.yml
ไฟล์ goodskill-common.yml
วิธีการหลักรันคลาส OrderApplication
(บริการสั่งซื้อ)
วิธีการหลักรันคลาส SeckillApplication
(ผู้ให้บริการการจัดการ seckill)
วิธีการหลักรันคลาส SampleWebApplication
(จำลองบริการเว็บขายแฟลช)
ส่งคำขอจำลองการขายแฟลช: กิจกรรมการขายแฟลช ID 1000 ปริมาณผลิตภัณฑ์ 10 ดำเนินการซื้อ 20 รายการ ใช้ล็อคการซิงโครไนซ์แบบซิงโครไนซ์เพื่อดำเนินการ ตัวอย่างเช่น:
คุณสามารถใช้คำสั่งต่อไปนี้โดยตรงเพื่อส่งคำขอขายแฟลชจำลอง seckillId แต่ละรายการจะสอดคล้องกับรหัสผลิตภัณฑ์ที่ไม่ซ้ำกัน แต่ละครั้งที่อินเทอร์เฟซถูกดำเนินการ จะมีการดำเนินการเริ่มต้นสินค้าคงคลัง หลังจากดำเนินการอินเทอร์เฟซแล้ว ถูกเรียกซ้ำๆ
curl -X POST " http://www.goodskill.com:8080/sychronized "
-H " accept: */* " -H " Content-Type: application/json " -d
" { " requestCount " : 20, " seckillCount " : 10, " seckillId " : 1000} "
curl -X POST " http://www.goodskill.com:8080/redisson "
-H " accept: */* " -H " Content-Type: application/json " -d
" { " requestCount " : 20, " seckillCount " : 10, " seckillId " : 1000} "
curl --location --request POST ' http://www.goodskill.com:8080/limit '
--header ' User-Agent: apifox/1.0.0 (https://www.apifox.cn) '
--header ' Content-Type: application/json '
--data-raw ' {
"maxPoolSize": 10,
"seckillId": 1000,
"corePoolSize": 2,
"seckillCount": 100,
"requestCount": 120
} '
คำขอจะดำเนินการแบบอะซิงโครนัสตามค่าเริ่มต้น คุณสามารถดูบันทึกการดำเนินการได้บนคอนโซล หากจำนวนธุรกรรมที่สำเร็จขั้นสุดท้ายเท่ากับจำนวนรายการ 10 แสดงว่าไม่มีปัญหาขายเกินหรือขายเกิน
บริการหุ่นยนต์ขายแฟลชอย่างง่ายที่สร้างขึ้นจากการโทรบริการของ Spring AI Alibaba สามารถทำได้ผ่านบริการหุ่นยนต์ ในปัจจุบัน รองรับเฉพาะกิจกรรมเปิดการขายแฟลชและส่งออกการใช้เวลาของกิจกรรมเท่านั้น
เข้าสู่โมดูล goodskill-ai
และแทนที่การกำหนดค่า spring.ai.dashscope.api-key
ซึ่งสามารถรับได้ผ่านแพลตฟอร์ม Alibaba Cloud Bailian
วิธีการหลักรันคลาส AiBotApplication
และเข้าถึงหน้าแชท http://127.0.0.1:18077
นี่คือตัวอย่างการสนทนา
我: 帮我执行秒杀
AI: 当然可以帮助您执行秒杀活动啦!为了顺利进行,请告诉我以下几个信息:1.秒杀活动的ID是多少?2. 这次秒杀的商品数量是多少?3.您打算这次请求的次数是多少?有了这些信息,我就能帮您开始了!?
我: 秒杀活动id 1001,请求次数20,商品数量10个
AI: 秒杀活动已成功开启!我们现在等待10秒钟,然后我会为您获取任务的耗时统计信息。秒杀活动已成功启动,并在10秒后获得了任务耗时统计信息:总耗时:6.673773375秒具体耗时分布如下:- 秒杀活动id:1001,秒杀场景五(数据库原子性更新update setnum = num -1)耗时 3.528280125 秒,占比 53%-秒杀活动id:1001,秒杀场景五(数据库原子性更新updateset num = num-1)耗时3.14549325 秒,占比 47%希望这些信息对您有帮助!如果还有其他问题或需要进一步的帮助,请随时告诉我哦!?
เพิ่มขั้นตอนต่อไปนี้ในส่วนการเริ่มต้นอย่างรวดเร็วเพื่อเริ่มโครงการที่สมบูรณ์
เข้าสู่โมดูล goodskill-gateway
เริ่มต้นบริการเกตเวย์ผ่านวิธีการหลักของคลาส GatewayBootApplication
และเข้าถึงบริการต่างๆ อย่างสม่ำเสมอผ่านเกตเวย์
http://www.goodskill.com/api/order/**
สอดคล้องกับการเข้าถึงบริการ goodskill-order
http://www.goodskill.com/api/seata/**
สอดคล้องกับการเข้าถึงบริการ goodskill-seata
http://www.goodskill.com/api/seckill/**
สอดคล้องกับการเข้าถึงบริการ goodskill-seckill
http://www.goodskill.com/api/auth/**
สอดคล้องกับการเข้าถึงบริการ goodskill-auth
http://www.goodskill.com/api/web/**
สอดคล้องกับการเข้าถึงบริการ goodskill-web
ส่วนประกอบการจำกัดกระแส Sentinel
ได้รับการผสานรวมและรองรับการพุชกฎการจำกัดปัจจุบันผ่านศูนย์การกำหนดค่า nacos
หากต้องการใช้งาน คุณต้องเริ่มคอนโซล Sentinel
และเริ่มต้นด้วยพอร์ต 18088
สภาพแวดล้อมนักเทียบท่ายังไม่รองรับ
สำหรับวิธีการทดสอบธุรกรรมแบบกระจายของ Seata โปรดดูคำแนะนำในการรันตัวอย่างการทดสอบธุรกรรมแบบกระจายของ Seata
วิธีการหลักรันคลาส GoodskillAdminApplication
(การตรวจสอบตัวบ่งชี้สถานะสุขภาพไมโครเซอร์วิส)
การเริ่มต้นอิมเมจ docker es ล้มเหลว
ปัญหานี้มักเกิดขึ้นในสภาพแวดล้อม Linux รันคำสั่งต่อไปนี้ sysctl -w vm.max_map_count=262144
หรือแก้ไขไฟล์ /etc/sysctl.conf และเพิ่มการกำหนดค่าต่อไปนี้:
grep vm.max_map_count /etc/sysctl.conf
vm.max_map_count=262144
จะใช้เซิร์ฟเวอร์การอนุญาต OAuth2.0 ที่ปรับแต่งในโครงการนี้เพื่อการอนุญาตการเข้าสู่ระบบได้อย่างไร
ที่จะปรับปรุงให้ดีขึ้น -
ความเข้ากันได้ในปัจจุบันระหว่างกรอบงานต่างๆ ที่รวมอยู่ในโครงการคืออะไร?
เวอร์ชันของแต่ละเฟรมเวิร์กกระแสหลักที่โปรเจ็กต์นี้ใช้อยู่ในปัจจุบันนั้นค่อนข้างใหม่และยังไม่ได้รับการทดสอบอย่างสมบูรณ์ [3]
วิธีแก้ไขข้อผิดพลาด " no available service found in cluster 'default', please make sure registry config correct and keep your seata server running
รายงานในคอนโซลเริ่มต้นบริการ
เพียงเริ่มบริการ seata-server
(มีอยู่ในไฟล์ docker-compose.yml) คุณสามารถดูเว็บไซต์อย่างเป็นทางการของ Seata เพื่อเพิ่มการกำหนดค่าที่เกี่ยวข้องกับ nacos หากไม่ได้ใช้ธุรกรรมแบบกระจาย คุณสามารถละเว้นข้อผิดพลาดนี้ได้ และจะไม่ส่งผลกระทบต่อการทำงานปกติของบริการ
docker-compose ไม่สามารถดึงรูปภาพได้
hub.docker ถูกบล็อก สามารถใช้ Alibaba Cloud Image Accelerator ในประเทศจีนได้
ไม่สามารถเริ่มโครงการโดยใช้ JDK17 ขึ้นไป
เพิ่มพารามิเตอร์ jvm ต่อไปนี้เมื่อเริ่มต้น เช่น:
--add-opens java.base/java.lang=ALL-UNNAMED
--add-opens java.base/java.util=ALL-UNNAMED
--add-opens java.base/java.util.concurrent=ALL-UNNAMED
--add-opens java.base/java.math=ALL-UNNAMED
--add-opens java.base/sun.reflect.generics.reflectiveObjects=ALL-UNNAMED
ปัจจุบัน การควบคุมสถานะกิจกรรมการขายแฟลชจะขึ้นอยู่กับเครื่องสถานะ Spring Statemachine ข้อดีของการใช้เครื่องสถานะคือ:
การควบคุมสถานะกิจกรรมแบบรวมศูนย์ช่วยอำนวยความสะดวกในการรักษาสถานะแบบรวมศูนย์
ป้องกันไม่ให้สถานะทางธุรกิจถูกเปลี่ยนแปลงตามต้องการและรับประกันการอัปเดตสถานะที่ควบคุมได้
พื้นผิว | ฐานข้อมูล | ไม่ว่าจะแบ่งห้องสมุด | สนามห้องสมุดย่อย | ไม่ว่าจะแบ่งโต๊ะ | เขตข้อมูลตารางย่อย |
---|---|---|---|---|---|
สำเร็จ_ถูกฆ่า | MySQL | ใช่ (ในเซิร์ฟเวอร์เดียวกัน จะแบ่งออกเป็นสองไลบรารี: seckill และ seckill_01) | seckill_id | ใช่ (แบ่งออกเป็นสองตาราง: Success_killed_0 และ Success_kill_1) | ผู้ใช้_โทรศัพท์ |
- | ไม่มีตารางอื่นใดที่ถูกแบ่งออกเป็นฐานข้อมูลหรือตาราง ตามค่าเริ่มต้น seckill จะถูกใช้เป็นฐานข้อมูลหลัก |
แก้ไขปัญหาการเชื่อมต่อคอนเทนเนอร์ Docker ล้มเหลวกับ Kafka: https://www.cnblogs.com/hellxz/p/why_cnnect_to_kafka_always_failure.html