作者:YOYO很快乐的傻瓜 | 来源:互联网 | 2023-09-13 10:25
在开发微服务项目中我们会遇到这个问题:外部的客户端需要调用很多微服务的接口,但是呢?微服务的接口比较多,调用起来很麻烦,很容易给开发人员带来混淆,比如我们直接按照简单的方式处理:直接客户端调用各个微服务,首先问题:需要多次调用微服务,给客户端带来一定的负责性;会存在一定的跨域问题;权限验证,需要多次,很麻烦等等问题吧。
客户直接访问a微服务、b微服务、c微服务、d微服务.......我们思考下:如果直接在客户端和微服务端增加一个类似于过滤器这样的组件会不会好点,只要我们在这个组件中满足条件,那么直接放行,直接调用相应的微服务,如果不满足条件,在进行其他业务的补充。
目前有一个组件微服务网关Zuul,就能起到这个作用。Zuul组件的核心是一系列的过滤器,那么我们就可以直接使用,可以配合eureka一起使用。
第一个作用:使用网关进行访问:给开发带来简便性
步骤:
1.加入依赖
2.配置文件
eureka:
client:
serviceUrl: #Eureka客户端与Eureka服务端进行交互的地址
defaultZone: http://127.0.0.1:6868/eureka/
instance:
prefer‐ip‐address: true
zuul:
routes: a: #微服务名称
path: /dd/** #配置请求URL的请求规则
serviceId: a #指定Eureka注册中心中的服务id
3.编写启动类:加入@EnableZuulProxy
@EnableZuulProxy
@SpringBootApplication
public class Application {
public static void main(String[] args) {
SpringApplication.run(Application.class);
} }
5.直接使用网关访问。
第二个作用;比如:权限的校验,一个是用户的账号--直接用来购买商品,一个是卖家账号--直接用来操作后台管理系统
如果一个账号要访问后台管理系统,首先我们要去对这个账号进行权限验证。
编写一个类继承ZuulFilter即可--大致的原理和fiter类似,所有建议大家自己尝试下即可