-
Designed the “Flash Sale System” project.
-
Improving performance from 500 QPS to 10,000 QPS by employing Redis and RocketMQ.
-
Functions: commodity; promotion -> order -> pay;
-
Adopted DDD(Domain Driving Design): api - application - domain - infrastructure
- Split order service into promotion and order microservices according to DDD(Domain Driving Design) principles.
-
high-concurrency:
- Implemented cache preheating for active promotions. Completed lock and revert inventory service through Redis and Lua script.
- Peak-load shifting order service stress by asynchronously create order using RocketMQ. Implemented "Pay-Check&Cancel" by consuming delay message. And optimized optimistic-lock of updating inventory in MySQL database.
-
test: Postman; Jmeter
-
workflow: JIRA (canary mode)
- MySQL lock、Pessimistic Locking、 Optimistic Locking,to prevent oversell
- Database Event - Transaction, SpringBoot event management
- PostMan: API-testing tool
- Jmeter: concurrency testing tool
-
Redis + Lua script to achieve event, Redis cache preheat
-
RocketMQ
Idempotency, delay message, etc.
-
Junit5, Mockito: unit test
- Distrubuted Transaction
- Redis: distributed lock
- SnoFlake to generate OrderId
- Microservice find and register center: Consul,Feign declare, SpringCloud-Gateway
Java; SQL; JavaScript, HTML, CSS, Ajax, Axios;
Spring Boot, Spring Cloud, Restful API; Mircroservice, Consul, Sentinel(, Hystrix) ; JOOQ, (JPA, Hibernate, Mybatis); MySQL, Redis, Lua, RocketMQ, Eventual Consistency, Idempotent Message;
JIRA, Confluence, Bitbucket, Git/Github; Junit5, Mockito, Jmeter; Maven, Postman, MysqlWorkbench, RedisInsight, RocketMQ Dashboard; OOD, OOP, SOLID, Design Patterns, DDD; Agile, XML, JSON.