四、Spring Cloud 项目介绍和实例说明
Last updated
Was this helpful?
Last updated
Was this helpful?
在说明spring这套东西之前,重复说明下spring cloud != 微服务 ,微服务只是思想 。Spring Cloud 前期花了小部分时间看了官方的文档。Spring Cloud 是一系列框架的有序集合。学习的前提要学习spring boot。Netflix(以为是个电影公司) 开源了自己的多年来技术组件封装再封装。和spring boot 做了集成。包括最近阿里开源的一套 (Spring Cloud Alibaba),其实都是一样的原理。(后面不对阿里这套做说明,阿里如果非要使用都行吧)
进阶流程 spring boot\docker\docker-compose ==> spring cloud
Spring Cloud 在对微服务进行封装的同时,实际上是针对以下几个组件进行整合:服务发现注册、配置中心、消息总线、负载均衡、断路器、数据监控等。属于基于Java 全套的分布式解决方案。这套方案可以快速启动服务或构建应用、同时能够快速和云平台资源进行对接。上图中可以看出spring cloud 基本上是各个组件相互配合,完成的一套微服务架构。(后面会有更详细例子说明)
Eureka : 服务的注册与发现
Hystrix :监控服务之间的调用,提供熔断保护
Hystrix dashboard,Turbine :监控 Hystrix的熔断情况,并给予图形化的展示
Spring Cloud Config :统一的配置中心服务 (跟K8s中的configmap结合
Spring Cloud Bus : 配置文件发生变化的时候,负责通知各服务去获取最新的配置信息
Zuul :API网关的作用
Sleuth+Zipkin :记录请求数据
很屌的一点是这里的组件都是以插拔的形式提供出来,所以随意的拆解让你在后期架构上的演进更加平滑。具体每个对象请自行去查官方文档介绍。不再分解说明,自行根据文档玩转一遍。
说明:docker确实是个好东西,非常值得学习。docker配合spring cloud 至少在部署上减少你很多工作量。因为在开发spring cloud项目期间一般按 config ==> registry ==> Gateway ==> [services] ==> monitoring ==> 的顺序启动 ,结果就是搞死人、搞死人!
这里推荐intellj idea ,这个ide 适合现在全新的java开发 ,不是说eclipse不好它 ,他的操作更方便、效率更高推荐!!!
这里的新手代码可以没事自己跑起来感受下!
有学习价值的参考文档:
实际想通过通用的后台来说明怎么使用 spring cloud ,这里通用是指具有统一授权、认证后台管理系统,包含用户管理、资源权限管理、网关API管理等多个模块,支持多业务系统并行开发,可以作为后端服务的开发脚手架。但是这样不够典型。先上源码:
这个例子中,业务上分为了三个独立的服务,每个可以单独的测试、构建和单独部署,请仔细研究这个例子。独立服务之间关系如下:
Auth service: 提供针对OAuth2.0的认证和鉴权 Account service: 用户信息的管理 Notification service: 消息服务
说明:
这三个服务都有自己单独的数据库,相互都不能访问。
服务和服务之间是通过REST API 进行通信的。Feign 提供HTTP访问层工作。
这里spring cloud 提供了负载、服务注册、监控、配置等。大致的系统架构如下:
Config * :
Spring Cloud Config 现在能支持本地配置、Git 、Svn 。shared 目录中保存了配置资源文件:后期要使用
通过配hosts ,其他配置文件中要使用直接丢类似如下代码:
Auth Service :
想再重复说明下:鉴权认证这块使用OAuth2 是个非要好的方式,同时注意这块功能确实需要在架构设计之前必须考虑进去。
API Gateway * :
网关是用来给客户端暴露外部接口的,通过api网关来聚合api 。Spring cloud 中使用 @EnableZuulProxy 注解来进行配置。
Service Discovery * :
Dev /Prod * : 注意docker 的使用 ,普通基础镜像都丢到镜像中。方便业务调试。
其他有价值项目:
四套选择:
1.传统型的web开发(前后端不分离)
2.基于spring boot 前后端分离
3.基于api 的网关
4.基于大的架子的微服务(基于spring cloud 也可前后不分离丢到gateway 中)
项目前期业务落地之后,进阶的流程 : 1/2 ==> 3 ==> 4
可参考git 项目:
1.https://gitee.com/dafanshudl/bigfans-cloud
2.https://gitee.com/leecho/cola-cloud
如果要序列号,可以访问我的服务 : http://loltube.cn
在调试的时候用docker 把基础服务组件打到镜像中,所以说项目中的compose 文件很重要,配置文件修改成镜像地址,本地关注自己服务业务代码即可!
Eureka 用于服务发现 ,它属于客户端的服务发现。
Monitoring Dashboard * : 在这里的监控主要是通过Hystrix 将指标数据通过消息通道发送到Turbine 。