一、商品中台是基于Springboot+SpringCloud搭建的微服务项目,使用mybatis作为持久层框架,使用Eureka作为注册中心,使用Zuul实现网关及路由功能,使用Feign或者RestTemplate完成跨服务接口的调用,使用RabittMQ实现消息推送和异步事件补偿 ,使用maven进行项目管理,使用gitlab进行项目版本管理,使用Swagger UI作为线上api文档。
其他技术:
1、使用spring cache配置Redis进行数据缓存,并手动实现基于hash的商品缓存,这样方便sku修改后不同分公司的商品缓存一起修改;
2、使用Restful风格定义路由,规范了请求动作,并更易理解;
3、使用spring event实现事件和监听,用于系统内部的异步操作,实现业务解耦;
4、通过ThreadPoolExecutor来配置线程池,用于异步的多线程处理;
5、使用RabbitMQ与库存等服务进行异步消息通讯,用于接收库存变更信息并同步商品索引;
6、使用模块化的架构设计,降低各模块之间的耦合,尽量增加模块的重用性和内聚性;
7、使用TDD(测试驱动开发)的方式,进行高效开发,
8、使用druid数据库连接池进行高性能的数据库连接,使用G1垃圾回收器进行垃圾回收;
9、自定义日志格式,使用requestId替换线程号,方便线上日志查询;
10、自定义日期格式化、数值计算、数组转换等工具类并封装成公共模块,提高开发效率。
二、购物车服务是基于Springboot+SpringCloud搭建的微服务项目,使用mybatis作为持久层框架,使用Eureka作为注册中心,使用Zuul实现网关及路由功能,使用Feign或者RestTemplate完成跨服务接口的调用,使用RabittMQ实现消息推送和异步事件补偿 ,使用maven进行项目管理,使用gitlab进行项目版本管理,使用Swagger UI作为线上api文档。
三、库存服务是基于Springboot+SpringCloud搭建的微服务项目,库存操作都是通过lua脚本在redis中执行,通过安全队列保存修改的商品,消费者通过监听队列将redis的修改同步到mysql中,销售端的库存查询通过lua从redis查询,erp和wms的库存查询通过mysql查询。这样可以实现销售端的高效库存占用,同时保持数据的一致性。