不吹不擂!美团 T6 首发内部 SpringCloud 笔记详解,理论实战齐飞
今日分享开始啦,请大家多多指教~
什么是微服务架构
简单地说,微服务是系统架构上的一种设计风格,它的主旨是将一个原本独立的系统拆分成多个小型服务,这些小型服务都在独立的进程中运行,服务之间通过基于 HTTP 的 RESTful API 进行通信协作。被拆分成的每一个小型服务都围绕着系统中的某一项或者耦合较高的业务进行构建,并且每个服务都维护者自身的数据存储、业务开发、自动化测试以及独立部署。由于有了轻量级的通信协作基础,所有这些微服务可以使用不同的语言来编写。
SpringCloud 简介
SpringCloud 是一个基于 SpringBoot 实现的微服务框架开发工具。它为微服务架构中涉及的配置管理、服务治理、断路器、智能路由、微代理、分布式会话和集群状态管理等操作提供了一个简单的开发方式。
SpringCloud Config:配置管理工具,支持使用 Git 存储配置内容,可以使用它实现应用配置的外部化存储,并支持客户端配置信息刷新等。
SpringCloud Netflix:核心组件,对多个 NetflixOSS 开源套件进行整合。
Eureka:服务治理组件,包含服务注册中心、服务注册和发现机制的实现。
Hystrix:容错管理组件,实现断路器模式,帮助服务依赖中出现的延迟和为故障提供强大的容错能力。
Ribbon:负载均衡的服务调用组件。
Feign:基于 Ribbon 和 Hystrix 的声明式服务调用组件。
Zuul:网关组件,提供智能路由,访问过滤等功能。
SpringCloud Consul:服务发现和及配置管理工具。
SpringCloud Stream:通过 Redis、Rabbit、或者 Kakfa 实现的消费微服务,可以通过简单的声明式模型来发送和接受消息。
等等~~~
Eureka
搭建注册中心
创建一个基础的 SpringBoot 工程,命名为 eureka-server,并在 pom 文件中引入必要的依赖内容,代码如下:
在引导类上添加 @EnableEurekaServer 注解启动一个服务注册中心提供给其他应用进行对话
修改默认配置,端口号 ,微服务名称,注册中心地址
注册服务提供者
创建一个基础的 SpringBoot 工程,命名为 eureka-provider,并在 pom 文件中引入必要的依赖内容,代码同上
在引导类上添加 @EnableDiscoveryClient 注解,将此微服务添加到注册中心
修改默认配置:端口号,微服务名称,注册给 eureka
注册服务消费者
创建一个基础的 SpringBoot 工程,命名为 eureka-consumer,并在 pom 文件中引入必要的依赖内容,代码同上
在引导类上添加 @EnableDiscoveryClient 注解,将此微服务添加到注册中心
修改默认配置:端口号,微服务名称,注册给 eureka
测试:各一个项目都启动,
以上关于注册中心 eureka 就配置好了。
Feign
创建一个 SpringBoot 基础工程,取名 feigen-counsumer。并在 pom 文件中引入必要的依赖内容
在引导类上添加 @EnableFeignClients 注解开启 SpringCloud Feignd 的支持
定义 HelloService 接口,通过 @FeignClient 注解指定服务名绑定服务
创建一个 ConsumerController 来实现对 Feign 客户端的调用,使用 @Autowired 直接注入上面的 helloService 实例
修改默认配置:端口号,微服务名称,注册给 eureka
测试:
发送几次 get 请求 Http:localhost:9001/feign-consumer,正确返回“hello World”
Zuul
创建一个 SpringBoot 基础工程,取名 SpringCloud-Zuul。并在 pom 文件中引入必要的依赖内容
在引导类上添加 @EnableZuulProxy 注解开启 SpringCloud Zuul 的支持
创建 LoginFilter 继承自 ZuulFilter ,添加拦截器的业务代码
修改默认配置:端口号,微服务名称,注册给 eureka
测试:通过网关访问--URL 不含 token,包含 token,打开的界面不一致
个人总结
Eureka
注册中心:eureka-server
1.引入启动器
2 配置 spring.application.name=dynamic.eureka
3.在引导类上添加 @EnableEurekaServer
客户端:server-provider,server-consumer
1.引入启动器
2 配置 spring.application.name,eureka.service-url.defaultZone=http://localhost:10086/eureka
3.@EnableDiscoveryClient(启动 eureka 客户端)
Feign
Zuul
1.引入 Zuul 启动器
2.启动类上添加 @EnableZuulProxy 注解
3.创建过滤器,继承 ZuulFilter 基类,重写四个方法
4.配置路由 zuul.router. service-provider: /service-provider/**
今日份分享已结束,请大家多多包涵和指点!
评论