Ribbon是SpringCloud (本地)客户端负载平衡器
一.原理负载均衡算法:总请求数%服务器数=服务下标
@ restcontrollerpublicclassribboncontroller {//可以获取注册中心的服务列表@ autowiredprivatediscoveryclientdiscoveryclient; @ autowiredprivaterestemplateresttemplate; @ beanpublicresttemplateresttemplate () { return new RestTemplate ); } private int reqCount=1; @requestmapping((/ribbonrember ) ) /服务地址stringinstancesurl=this.getinstance s ) ) if (实例URL!=' ' ) {//httpclient远程调用result=rest template.getforobject (instances URL,String.class ); } return result; }publicstringgetinstances((//相应服务服务器的远程呼叫地址listserviceinstancelist=discovery client.getinstance s (Allen-) ) String url=' '; if (! collectionutils.isempty(list ) (intserviceindex=req count % list.size ); reqCount; 服务实例=list.get (服务索引; url=instance.getUri ().toString ); } return url; (二) Ribbon与Nginx的区别1、Ribbon的本地负载均衡,在调用接口时,在eureka注册中心获取注册服务列表,按jvm本地缓存的原理,将rpc远程调用技术降级这意味着客户端是复杂且均衡的。
2、Nginx是服务器的负载均衡,客户端的所有请求都传递给Nginx,Nginx实现传输请求。 也就是说,服务器端的负载均衡。
3、应用场景:
ribbon本地负载均衡器适用于来自dubbo、springcloudnginx服务器负载均衡器等服务器rpc的远程调用,适用于tomcat等服务器端