# cornerstone **Repository Path**: w3cnet/cornerstone ## Basic Information - **Project Name**: cornerstone - **Description**: 完整的微服务架构解决方案 - **Primary Language**: Java - **License**: MIT - **Default Branch**: master - **Homepage**: None - **GVP Project**: No ## Statistics - **Stars**: 0 - **Forks**: 55 - **Created**: 2019-03-20 - **Last Updated**: 2020-12-18 ## Categories & Tags **Categories**: Uncategorized **Tags**: None ## README # cornerstone 完整的微服务架构解决方案 ### config-repo:配置文件仓库 用于微服务的配置中心 ### base-service:单独的项目 |项目名称|作用|版本| |:--|:--|:--| | base-common | 基础工具包 | 1.0-SNAPSHOT | | cms-project | CMS独立项目 | 1.0-SNAPSHOT | | base-oauth2-rc | oauth2的client和resource-server统一配置组件 |1.0-SNAPSHOT| | base-security | 独立security配置组件 |1.0-SNAPSHOT| | base-cloud | 微服务基本依赖集合 |1.0-SNAPSHOT| | base-quartz | quartz相关工具类 |1.0-SNAPSHOT| 说明:`base-cloud`中没有代码,只是一个依赖集合,包含以下东西,以下依赖,有一些spring boot和cloud的可以无配置直接使用,有一些其他依赖需要注解、配置或javabean配置 ``` com.cs base-common org.springframework.cloud spring-cloud-starter-netflix-hystrix org.springframework.cloud spring-cloud-starter-netflix-eureka-client org.springframework.boot spring-boot-starter-web org.springframework.boot spring-boot-starter-test org.springframework.cloud spring-cloud-config-client org.springframework.cloud spring-cloud-bus org.springframework.cloud spring-cloud-stream-binder-rabbit org.springframework.boot spring-boot-starter-actuator org.projectlombok lombok com.github.xiaoymin swagger-bootstrap-ui io.springfox springfox-swagger2 org.redisson redisson com.codingapi.txlcn txlcn-tc com.codingapi.txlcn txlcn-txmsg-netty ``` ### micro-service:微服务基础服务群 *项目环境:spring boot 2.0.3.RELEASE, spring cloud Finchley.SR1, jdk8+, mysql5.5+, rabbitmq, redis,lcn* |服务类型|项目名称|作用|版本| |:--|:--|:--|:--| |基础服务|eureka-server|eureka注册中心|1.0-SNAPSHOT| |基础服务|remote-config-server|统一配置中心|1.0-SNAPSHOT| |基础服务|gateway-server|网关|1.0-SNAPSHOT| |基础服务|oauth2-server|授权认证中心|1.0-SNAPSHOT| |基础服务|tx-manager|LCN分布式事务管理服务器|1.0-SNAPSHOT| |业务服务|demo-store|商店demo|1.0-SNAPSHOT| |业务服务|demo-customer|顾客demo|1.0-SNAPSHOT| |业务服务|demo-quartz1|定时任务服务1|1.0-SNAPSHOT| |业务服务|demo-quartz2|定时任务服务2|1.0-SNAPSHOT| 启动顺序以及其他注意: 1. 启动前请检查redis,mysql,rabbitmq是否启动,建议使用docker启动 2. eureka-server-->remote-config-server必须的 3. 后面可以根据依赖关系启动 4. 如果需要使用分布式事务,请务必在第一步以后,启动tx-manager *注意*: 1. 除了`配置中心`和`eureka-server`以外,其他服务均使用配置中心的配置文件,所以他们两个一定要提前启动。 2. 在仓库中修改了配置文件以后,注意一定要提交,然后使用配置中心的`/actuator/bus-refresh`去做刷新配置的操作。 3. 配置刷新以后,如果只是普通参数,可以在`@RefreshScope`的作用刷新,如果是类似端口号一类的配置,需要重启对应服务 ## 分布式事务 分布式事务使用LCN技术,需要使用的话,引入`txlcn-tc`和`txlcn-txmsg-netty`依赖,并在启动类上注解`@EnableDistributedTransaction`,这样lcn已经可以使用了。 其次,在对应事务开始的方法上加上`@LcnTransaction`才能保证此次操作使用了lcn的事务。 ## 分布式调度 分布式调度使用了quartz和springcloud集成在一起,现在仍为初步集成,能够实现在集群环境下在各个服务器上运行的效果。 目前封装不是很充分,使用方式比较简陋,有待改善,且在动态控制定时任务时还存在一定问题。 另外,集群环境下的定时任务和单个项目的定时任务使用不冲突,单机定时任务就按照springboot的使用方式就可以。具体代码示例参看`demo-quartz1`和`demo-quartz2` ## 后续计划 micro-service: - [x] 增加redis分布式锁 - [x] 增加分布式事务 - [x] 增加定时任务 - [ ] 增加消息队列 - [ ] 增加ElasticSearch配置 - [ ] 增加链路追踪 - [ ] 增加工程全局监控 - [ ] 与docker部署结合 base-service: - [ ] 完善base-common - [ ] 完成cms-project工程