SpringCloud是一个基于SpringBoot的微服务框架,它为开发人员提供了快速构建分布式系统中常用的模块。
架构图
在微服务架构中,需要几个基础的服务治理组件,包括服务注册与发现、服务消费、负载均衡、熔断器、智能路由、配置管理等,由这几个基础组件相互协作,共同组建了一个简单的微服务系统。一个简单的微服务系统如下图:
服务列表
spring-cloud-dependencies -->统一依赖管理
spring-cloud-eureka -->服务注册与发现
spring-cloud-config -->服务配置中心
spring-cloud-provider -->服务提供者
spring-cloud-client-ribbon -->服务消费者
spring-cloud-client-feign -->服务消费者
spring-cloud-zipkin -->服务链路追踪
spring-cloud-zuul -->服务网关
spring-cloud-admin -->服务监控
大合照
下面,我来解释一下这些服务哈...
1.服务注册与发现
Eureka,是 Spring Cloud Netflix 一个高可用的组件,向Eureka注册的实例需要向注册中心发送心跳(没有心跳连不上就当你挂了)。因此需要Erureka Server充当注册中心,然后将很多个Erureka Client注册到Erureka Server中。
① 在pom文件配置
② 在SpringBoot启动类中需注解@EnableEurekaServer
③ 表明自己是一个 Eureka Server
ps:后续可以学习zookeeper,分布式协调技术,也是服务注册与发现模块。
2. 服务配置中心
在分布式系统中,由于服务数量巨多,为了方便服务配置文件统一管理,实时更新,所以需要分布式配置中心组件。Spring Cloud 有分布式配置中心组件 Spring Cloud Config,它支持配置服务放在远程 Git 仓库中。
① 在pom文件配置
② 在SpringBoot启动类中需注解@EnableConfigServer
③ 配置Git仓库
④ 启动服务配置中心,各个Config Client只需要在自己的yml中指定Config Server,就可以访问云配置中属于自己yml文件
ps:后续可以学习Apollo,也是开源配置管理中心。
3. 服务提供者
① 在pom文件配置
② 在SpringBoot启动类中需注解@EnableEurekaClient。服务提供者和服务消费者都需要此注解,表明都是Eureka的客户端,都是弟弟。
③ 在yml文件中:要有自己的名字(服务唯一标志),自己的端口,以及要指向的Eureka Server(服务消费者类似,以下不在赘述)
④ 启动服务提供者,可以使用此服务
4. 服务消费者(Ribbon)
服务与服务的通讯是基于 http restful 的。Spring cloud 有两种服务调用方式,这一种是 Ribbon + RestTemplate。
① 在pom文件配置
② 需要自己定义restTemplate,然后放在Spring的IoC容器中,并且添加@LoadBalanced注解之后可实现负载均衡的效果
③ 服务提供者和服务消费者都已经注册到Eureka Server中,服务消费者可以只根据服务的名字,就可以找到对应的服务提供者,服务消费者不用管服务提供者的ip和port,这些已交给服务注册中心了。
④ 启动服务消费者(Ribbon),可以使用此服务(port=8764)来调用服务提供者的服务(port=8763),因此实现了服务与服务的调用
5. 服务消费者(Feign)
Spring cloud 有两种服务调用方式,而这一种是 Feign,它集成了Ribbon,默认拥有负载均衡的效果。使用 Feign,只需要创建一个接口并注解。在实现熔断器时,只需要实现服务的接口。
① 在pom文件配置
② 在启动类中使用这两个注解
③ 接口:根据服务名字调用服务提供者,以及有熔断处理
④ 实现此接口的的实现类,拥有熔断处理方法
⑤ 配置熔断器仪表盘
⑥ 用仪表盘可以监控熔断情况
6. 服务网关
Zuul,主要功能是路由转发和过滤器。路由功能是微服务的一部分,根据api转发到相应的服务。Zuul 默认和 Ribbon 结合实现了负载均衡的功能。
① 在pom文件配置
② 在启动类中使用这个注解
③ 在yml中配置路由
④ 实现过滤器(eg:这里根据是否携带token参数进行过滤)
⑤ api网关演示
7. 服务链路追踪
ZipKin,是一个开放源代码的分布式跟踪系统,用于收集服务的定时数据,以解决微服务架构中的延迟问题,包括数据的收集、存储、查找和展现。每个服务向 ZipKin 报告计时数据,ZipKin 会根据调用关系通过 ZipKin UI 生成依赖关系图,显示了多少跟踪请求通过每个服务,该系统让开发者可通过一个 Web 前端轻松的收集和分析数据,例如用户每次请求服务的处理时间等,可方便的监测系统中存在的瓶颈。(几乎要在所有的pom文件添加ZipKin的依赖)
① 在pom文件配置
② 在启动类中使用这个注解
③ 启动链路追踪服务ZipKin
8. 服务监控
Spring Boot Admin 是一套功能强大的监控管理系统。用于各个微服务系统的健康状态、会话数量、并发数、服务资源、延迟等度量信息的收集。(几乎要在所有的pom文件添加Admin Client的依赖)
① 在Admin Server中pom文件配置
② 在启动类中使用这个注解
③ 启动服务监控
-END-
后续
个人博客地址:https://www.cnblogs.com/q964024886/
GitHub地址:https://github.com/wenhaixiong