school-springcloud-springboot是一个基于Springcloud的课程管理系统,它是什么系统其实不是很重要,关键是它利用Springboot的开发便利性巧妙地简化了分布式系统基础设施的开发,加入了Springcloud系列框架特有服务发现注册、配置中心、消息总线、负载均衡、断路器、数据监控等功能,可以让你真正的感受到微服务的魅力。所以Springcloud几乎是现在微服务开源界最好的产品了。与Dubbo比较起来,Springcloud的使用会让你更加的爱不释手。
一、运行工具、技术与环境
- 运行环境:JDK 8,gradle 4.0+
- 技术栈:SpringBoot 2.0+、Druid、Thymeleaf、Mybatis
- 微服务Springcloud技术栈:Spring Cloud Config、Spring Cloud Bus、Eureka、Hystrix、Zuul、Spring Cloud Gateway、Spring Cloud Sleuth、Ribbon、Feign、zipkin、hystrix-dashboard
- 工具:IntelliJ IDEA、谷歌浏览器、Mysql、RabbitMq
二、Springboot快速集成Springcloud关键的依赖
dependencies {
classpath("org.springframework.boot:spring-boot-gradle-plugin:2.0.3.RELEASE")
}
dependencyManagement {
imports {
mavenBom "org.springframework.cloud:spring-cloud-dependencies:Finchley.RELEASE"
}
}
三、各个module介绍
1、eureka-server:基于Eureka的注册中心,提供服务发现与注册。
2、zuul-server:基于zuul微服务网关服务器,提供动态路由与负载分配等等。
3、gateway-server:基于spring自家的Spring Cloud Gateway微服务网关,它是底层是webflux,也可以提供动态路由与负载分配等等。
4、config-server:配置中心服务端。
5、hystrix-dashboard:基于Hystrix的仪表盘组件的项目,可以通过网页实时浏览Hystrix的各项指标信息。
6、main-operation:提供CourseType的服务的项目,里面包括配置中心、feign等技术。
7、user-operation:提供User的服务的项目,包括Spring Cloud Sleuth、feign等技术。
8、zipkin-server:Zipkin分布式跟踪项目。
9、main-school:主操作项目。
四、架构图
从架构图中可以看出,微服务最大的魅力:整个系统虽然各个项目之间是解耦的,但是它们通过不同的方式有紧密得结合起来了。换句话说:整个系统各个模块的负责人只需维护各自模块,看起来没怎么联系,实际上是暗箱操作,整个系统密不可分,这就使得系统可以快速平稳得运行起来。对于开发者来说是好事,项目粒度降低,无需特别理会与其他模块关系,开发方便,再加上例如zipkin等对埋点进行监控,怎么说,高效,方便,一系列的词都可以用啦!(我就不细讲了,要是写起来需要好多好多文字,写不完,所以你们就仔细本项目的架构图吧)
关于上图说明:上图是我实际项目的机构图,我并不是每一个模块(小项目)都有配置中心客户端或者是断路器hystrix等等,比如我只在main-operation里面配置了config配置中心客户端,但是我没有在其他模块配置config配置中心客户端,为何这么做,只因为我想在尽量小的项目中学到更多的东西。
五、项目地址及注意
项目地址:
- 码云:https://gitee.com/smirk/upgrade-school-springcloud-springboot
- github:https://github.com/xiaoze-smirk/upgrade-school-springcloud-springboot
注意:若是该项目对初学者有困难的话,请先学习school-springcloud-springboot的简化版项目,地址如下:
- 码云:https://gitee.com/smirk/easy-springcloud
- github:https://github.com/xiaoze-smirk/school-springcloud-springboot
六、总结
这个项目花了我好几个月时间,途中放弃了好几次,幸好最后坚持了下来,这个项目教会了我特别多东西,特别是关于架构方面的知识,受益匪浅。Springcloud确实是一个系列的很强大的框架,我觉的我学会的不仅仅是知识,更是一些关于未来的一些思考,以及思想的转变,这东西在未来应该怎么做,如何做,才能更高效。当然,你若是喜欢这个项目,请拿去,我什么都不要。因为,你的受益,是我最大的动力!
更多博客,欢迎来小秋霖~~~
smirk小泽
2018 年 07月17日