# sc **Repository Path**: leesite/sc ## Basic Information - **Project Name**: sc - **Description**: spring boot - spring cloud 完整功能框架 - **Primary Language**: Java - **License**: GPL-2.0 - **Default Branch**: master - **Homepage**: None - **GVP Project**: No ## Statistics - **Stars**: 0 - **Forks**: 0 - **Created**: 2021-03-30 - **Last Updated**: 2021-05-10 ## Categories & Tags **Categories**: Uncategorized **Tags**: None ## README # **带你从零开始搭建完整spring boot,spring cloud分布式框架,实践分布式事务解决方案** ## 目标(√ 表示已完成) ### 一、springboot ``` 1.springboot多模块框架搭建 完成√; 2.框架全局异常处理(@RestControllerAdvice Throwable,BizException,Validator,Assert) 完成√; 3.框架全家异常处理(实现HandlerExceptionResolver + WebMvcConfigurationSupport) 完成√; 4.全局统一返回格式 完成√; 5.自定义线程池解决springboot线程池不可复用问题 完成√; 6.集成mybatis-plus,druid,配置代码生成工具,开启乐观锁,自动填充字段... 完成√; 7.集成dozer,bean拷贝工具,支持深拷贝及空字段过滤... 完成√; 8.AOP编写方法运行耗时监控注解版(@UsedTime) 完成√; 9.集成redis(redis启动监控,redis常用工具类封装 完成√; 10.实现分布式锁(要点:高并发下加锁解锁语句保证原子性,加锁失败自旋等待时间随机并设置等待超时时间,解锁要验证锁值防止解开其他锁) 完成√; 11.集成rabbitmq(同步转异步,流量消峰,解耦;三种模式配置:direct,topic,fanout)(见下三、分布式事务支持,使用独立消息服务实现最终一致性分布式事务) 完成√; 12.编写shell启动脚本启动项目; 13.配置多profile(dev,ga,docker),使用maven编译打包生成tar文件; 14.编写Dockerfile,使用docker部署启动项目; ``` ### 二、spring cloud ``` 1.eureka注册中心配置(自我保护,高可用,CAP原理:AP)完成√; 2.feign声明式远程调用 完成√; 3.zuul网关配置(基于robbin和hystrix通信注意配置2层请求超时时间); 4.robbin负载均衡 完成√; 5.配置中心 spring cloud config(配置文件加密,读取git文件,配置更新refresh); 6.总线 spring cloud bus(消息总线集成mq,微服务数据变更同步); 7.hystrix(各种解决服务雪崩配置:缓存,服务降级,请求合并,线程池/信号量隔离技术,熔断) ``` ### 三、分布式事务支持 ``` CAP(一致性,可用性,分区容错),BASE(基本可用,软状态,最终一致性*为了保证最终一致性,可以延时,失败就重试) ACID/DTP/XA协议/2CP/3CP/TCC(刚性事务强一致性锁定资源时间长不适合高并发,互联网项目) acid:刚性事务; DTP(2cp,3cp):刚性事务; TCC(hmily,tcc-transaction,seata):刚性事务; 1.使用java 实现的 mysql支持的XA协议实现2cp分布式事务; 2.使用atomiks实现2cp分布式事务; 3.使用hmily实现tcc分布式事务; 4.使用tcc-transaction实现tcc分布式事务; 5.使用seata实现2cp分布式事务,tcc分布式事务 6.使用本地消息表实现最终一致性分布式事务(关键:主动者和消息表同一个数据库,保证幂等性,定时器来保证消息100%可靠); 7.使用独立消息服务实现最终一致性(关键:使用定时器,接口实现幂等性,被动者不允许出现业务异常允许系统异常) 完成√; ``` ### 四、并发编程 ``` 1.synchronized 2.voliate happend before 原则 3.join 4.ThreadLocal 5.ReentrantLock,StampdLock Semaphore,CountDownlatch,CyclicBarrier,ComplateableFuture,fork/join 6.Timer 7.线程池 ``` ### 五、实践(包含用户,订单,商品,支付,积分等服务,搭建高可用的微服务,并使用docker k8s部署管理) ``` 1.实现场景:用户下订单进行支付,商品减库存,用户增加积分的分布式系统 1)实现方式1:使用TCC框架实现; 2)实现方式3:独立消息服务实现(确保被动者无业务异常<如,库存,账户,不适合作为被动者>); 2.将服务部署到私有git仓库,开启docker api,并生成docker镜像,使用docker composer进行服务编排,并使用k8s部署启动管理所有微服务 ```