网关的高可用以及zuul在项目
1、比如说现在启动三个provider的服务,分别端口号从8084到8086
1.1、然后启动网关的服务:
这就是配置的高可用:拉到了三台服务,保证我们的请求能够交到对应的服务去处理的。保证这个服务不会被 挂掉。SpringCloud当中如果做高可用的话是很简单的。只要把服务注册到注册中心上的话,马上就可以做高可用了。
2、接下来:让一台服务器宕机的话:
2.1、这里还是可以访问的:它会切换从而达到高可用的效果。切换是有时间的。而不是再次访问的时候切换的。是自动切换的。这个地方相当于它的切换这里有个地方是fallback,这个函数就是失败后它去触发了这个fallback这样的回调。这时 会找可用的服务列表给它拉下来然后去用。
3、在网关里面,在实际应用中不是那么简单的。上面的网关部署到了zookeeper上,并且也实现了路由。如果想要让consumer消费端去调用微服务的provider端的数据该如何去调用呢?在正常的开发当中我们只用这个fegin框架来进行通信的,消费端是通过这个路由去调用这个provider端,而不是直接去调用。
步骤如下:
3.1、
3.2、然后通过网关去访问:这样的一个路由地址
3.3、所以改下下面的地址:
3.4、而下面写的地址写什么都可以,因为这个地址是暴漏给客户端来调用的。比如移动端,消费端,就是前端页面来调用的。
去访问这个地址会通过UserFeginController中注入的UserClient中的路由user-api-gateway到网关里面去。通过网关然后去分发到对应的服务器去处理。
网关控制了整个的入口和出口:中间多了一层网关。路由地址去转发到Service服务里面。相当于网关类似于中间人。
consumer有可能是终端,也有可能是提供于终端去调用的一个服务。的
3.5、启动下Consumer,并且也建立了服务列表:
3.6、通过客户端consumer去访问:
总结:只知道前端服务的接口就可以了,后端服务器的端口号是不需要知道的 通过这个网关user-api-gateway路由到了对应的服务器上去的。到底路由到 哪个服务器你是不知道的,因为你必须知道网关才可以得。这就很安全的。地址通过fegin找到网关,网关根据服务列表找到provider,通过serviceId得值 在zk上面去找这个provider下面的地址,如果这个地址是个列表就做负载均衡 如果是单个的话直接把其放到地址上面去处理就可以了。