微服务网关/nacos/feign总结
现在学习到的组件
1.nacos:注册中心,用于微服务之间交流的第三方管家,与生产者建立心跳契约对其监听,注册中心维护一张生产者的活跃表,会将活跃表实时更新并推送给消费者。
2.feign:nacos只是对生产者进行注册,而实际的转发并不是由nacos来完成的,简单来讲nacos的主要作用就是维护一张表,这张表只写了对应的生产者微服务的名称和一些基本信息,消费者能够知道对方的名字。并且nacos还可以配合负载均衡,为消费者选取出最适合分配到的生产者。
但是——消费者调用生产者的这一个网络连接过程并不是nacos组件完成的,而是使用feign完成的!!!
3.当我们拆分完微服务后,各个微服务的端口地址五花八门,而原本单体架构前端访问后端时再不使用荷载均衡时,只会访问一个后端端口,常见的如8080端口。
现在由于微服务的拆分,导致不同的服务端口不同,前端访问后端变得困难。
所以使用网关,网关对微服务的端口进行统一管理,而前端只需要访问网管即可,解放了前端的接口传递。
网关实际上就是一个单独模块,专用于转发接口调用。
4.完整流程
4.1前端调用端口8080的userController的search方法,接口对应为:localhost:8080/users/search。
假设现在user模块有多个微服务端口分别为:8083、8084、8085。
4.2localhost:8080/users/search被网关接收,网关解析到/users路径,网关配置文件中users对应微服务名称为user-service
4.3网关通过nacos注册中心中拉取user-service的微服务列表,并使用负载均衡选取合适的服务器,假设现在选取的是注册列表中的端口号为8084的服务器,从而网关会向下转发localhost:8084/users/search
4.4 8084端口的服务器完成接口调用工作,返回网管相应数据内容
4.5 网关返回前端数据内容
5.总结:
网关关注的是前端单端口请求与后端多端口接收的不匹配问题。
feign关注后端多端口之间的调用问题。
nacos关注如何解决后端多端口之间生产者与消费者之间互相无法discover的矛盾。