关于微服务的几个问题?实在百度不到问题答案
对于一个微服务系统中,zuul是不是唯一的?按照我的理解,这东西是网关,网关应该就是唯一的,不会有多个。
第二个问题,ribbon要配置几个,是不是配置在zuul的服务上就行了,但看官方文档上有一个词叫 “Ribbon客户端” ,那岂不是说可以有多个?但我的想法上,这东西既然如果是放在zuul上,(zuul实际上已经支持负载均衡了,只不过是轮询方式的,暂时没找到配置负载的策略办法),那配一个应该就够了,就和nginx一样使用
如果你对这篇内容有疑问,欢迎到本站社区发帖提问 参与讨论,获取更多帮助,或者扫码二维码加入 Web 技术交流群。
绑定邮箱获取回复消息
由于您还没有绑定你的真实邮箱,如果其他用户或者作者回复了您的评论,将不能在第一时间通知您!
发布评论
评论(8)
zuul没用,我用的是eureka和ribbon,我想大概一样,就说说我的见解。
eureka可以单例,但是单例不会给你带来安全感,万一哪天eureka挂掉了,整个系统都无法调微服务。另外一个则是,eureka的多例可分区(region,不记得有否拼错),即你可以设置某服务调杭州服务器上的eureka,还是选择调深圳服务区上的eureka。
ribbon在上边一些童鞋的回复中已经说得很明白了,ribbon就是处理负载均衡的,ribbon是调用也就是客户端上边的负载均衡,当通过服务发现,从网关找到可调的几个微服务实例时,通过本地的ribbon负载均衡策略选择一个进行调用。
nginx也可以做负载均衡,理解上边跟ribbon反过来,本地调微服务只调一个地址,由nginx上的均稀策略最终路由到其中一个地址。
微服务不建议用nginx,一是因为springcloud里很多服务发现的客户端都已经集成了ribbon,二就是在spring cloud通过服务发现找来的地址列表都是肉网地址,如果都是nginx,网关貌似没有什么作用 了
上面这段话居然发不出,一直报存在违规内容,我X,这什么东西违规了?
第一个问题: zuul网关可以配置多个 可以使用 nginx 的负载 来访问不同的zuul
第二个问题:zuul和 Ribbon 是一对多的关系 ,zuul负载配置 应该和Ribbon 一样 可以配置也也可以自定义。
大概明白了,假设我有ABCDE多个服务,A服务要调用B服务,如果B有多个实例,就可以通过ribbon自动的进行负载,ribbon并不是要放到zuul上。这种是不依赖zuul的。其实我是服务调用这里搞混了,(比如,但如果系统有zuul做网关,A服务调B服务的时候,需要先去zuul,然后再去调用B服务,这个时候,就只要zuul配置了负载即可)
ribbon是服务之间内部的负载均衡 zuul是对外的负载均衡。
ribbon的场景是一个微服务调用另一个,会从注册中心拉取实例,可能会存在多个实例的时候,会通过负载均衡策略来决定调用哪一个实例
zuul的场景差不多,但策略有一点不同,具体不太记得了,好像是默认提供了一个根据区域来路由的策略
网关只是相对于微服务的资源路由,只要能够做到负载均衡,网关也是可以部署多个的,通过nginx之类的反向代理工具转发请求到网关,甚至nginx这类反向代理还是可以再部署多台。
zuul的负载均衡策略我已经找到了,有3种方式,第一种,使用注解
可以指定策略,第二种,new 一个
接口的实现的返回,这个接口的每一个子实现就是一个策略,第三种和第二种差不多,不过是自己重写了实现策略,还是通过new 一个 IRule的子实现,不过这个子实现是自己写的
不是我抬杠,我要知道我还问啥?
你这样问只能说明你还不知道他们的作用以及使用场景