开发者学堂课程【精通 Spring Cloud Alibaba:为什么使用微服务网关】学习笔记,与课程紧密联系,让用户快速学习知识
课程地址:https://developer.aliyun.com/learning/course/634/detail/10111
为什么使用微服务网关
内容介绍:
一、 什么是微服务网关
二、 微服务网关的作用
一、 什么是微服务网关
在微服务架构中,不同的微服务可以有不同的网络地址,各个微服务之间通过互相调用完成用户请求,客户端可能通过调用N个微服务的接口完成一个用户请求。
比如:用户查看一个商品的信息,它可能包含商品基本信息、价格信息、评论信息、折扣信息、库存信息等等,而这些信息获取则来源于不同的微服务,诸如产品系统、价格系统、评论系统、促销系统、库存系统等等。
我们可以在客户端和服务端之间增加一个 API 网关,所有的外部请求先通过这个微服务网关,它只需跟网关进行交互,而由网关进行各个微服务的调用。
例子:基于 SpringCloud 第二代构建微服务电商项目
微服务会拆分成会员服务、SSO 服务、商品服务、支付服务、秒杀服务、交易服务、优惠券服务、消息服务、搜索服务等。想要进行服务必须要经过微服务网关 geteway ,再由 gateway 转发到服务。这样可以保证服务的安全性。
假设会员服务的地址为 192.168.110.110:8080 ,不能直接给客户端提供真实的地址,不然会不安全。
中间就要加一个反向代理服务器的操作,假设地址为192.168.110.113 此时客户端拿到的地址就为反向代理服务器的地址,再有服务器传给各种服务。这个服务器就是 Api 网关。
微服务中的架构模式采用前后分离,前端调用接口地址都能够被抓包分析到。
二、 微服务网关的作用
1. 统一入口:为全部微服务提供唯一入口点,网关起到内部和外部隔离,保障了后台服务的安全性。
2. 鉴权校验:识别每个请求的 权限,拒绝不符合要求的请求。
3. 动态路由:动态的将请求 路由 到不同的后端集群中。
4. 降低耦合度:减少客户端与服务的 耦合 ,服务可以独立发展。通过网关层来做映射。
它是系统的入口,封装了应用程序的内部结构,为客户端提供统一服务,一些与业务本身功能无关的公共逻辑可以在这里实现,诸如认证、鉴权、监控、缓存、负载均衡、流量管控、路由转发等等。
解决跨域问题:
传统的方式我们可以使用过滤器拦截用户会话信息,这个过程所有的服务器都必须要写入该验证会话登陆的代码。传统的方式过于繁琐。
只需要在类上加一个“@CrossOrigin”注解,就可以解决跨域问题。
@Configuration
public class GulimallCorsConfiguration {
@Bean
public CorsWebFilter corsWebFilter(){
// 跨域配置源
UrlBasedCorsConfigurationSourcesource=new UrlBasedCorsConfigurationSource();
// 跨域配置
CorsConfigurationcorsConfiguration=new CorsConfiguration();
// 1 配置跨域
// 允许所有头进行跨域
corsConfiguration.addAllowedHeader("*");
// 允许所有请求方式进行跨域
corsConfiguration.addAllowedMethod("*");
// 允许所有请求来源进行跨域
corsConfiguration.addAllowedOrigin("*");
// 允许携带 cookie 进行跨域
corsConfiguration.setAllowCredentials(true);
// 2 任意路径都允许第1步配置的跨域source.registerCorsConfiguration("/**",corsConfiguration);
return new CorsWebFilter(source);
}
}