当前位置: 首页 > news >正文

做网站要会没软件网站做m版

做网站要会没软件,网站做m版,网址大全怎么删除,学校门户网站建设工作服务调用Ribbon、Fegin Ribbon实现负载均衡的原理 1:LoadBalancerAutoConfiguration这个类,这个类主要做的就是把LoadBalancer拦截器封装到RestTemplte拦截器集合里面去。 2:然后在代码里面调用restTemplate.getForObject或者其他方法的时候&…

服务调用Ribbon、Fegin
Ribbon实现负载均衡的原理
1:LoadBalancerAutoConfiguration这个类,这个类主要做的就是把LoadBalancer拦截器封装到RestTemplte拦截器集合里面去。
2:然后在代码里面调用restTemplate.getForObject或者其他方法的时候,就会调用到这个拦截器。
3:在LoadBalancer拦截器类中,就会调用intercept方法,这个方法就会通过execute方法获取负载均衡器以及通过负载均衡算法和得到的servicename去获取一台具体的服务。然后通过http调用。
4:而且ribbon会定时的去更新Nocas中的服务注册中心将其保存在本地,而且在负载均衡真正调用之前的时候也会去更新。
Fegin
1:从@EnableFeginClients注解看,这个注解里面有一个Import注解@Import(FeginClientRegistrat.class);这个类的方法registerFeginClients方法就能扫描主启动类包同机以及下级包中所有符合@FeginClient的类注入到容器当中。
2:然后loadBalance通过jdk动态代理最总生成LoadBalanceFeginClient,这个类中的execute方法中最终去调用我们的ribbon实现负载均衡。

@SpringBootApplication
@EnableFeignClients/此注解/
public class  OrderFeignMain80 {public static void main(String[] args) {SpringApplication.run(OrderFeignMain80.class,args);}
}
//
// Source code recreated from a .class file by IntelliJ IDEA
// (powered by FernFlower decompiler)
//package org.springframework.cloud.openfeign;import java.lang.annotation.Documented;
import java.lang.annotation.ElementType;
import java.lang.annotation.Retention;
import java.lang.annotation.RetentionPolicy;
import java.lang.annotation.Target;
import org.springframework.context.annotation.Import;@Retention(RetentionPolicy.RUNTIME)
@Target({ElementType.TYPE})
@Documented
@Import({FeignClientsRegistrar.class})//此注解
public @interface EnableFeignClients {String[] value() default {};String[] basePackages() default {};Class<?>[] basePackageClasses() default {};Class<?>[] defaultConfiguration() default {};Class<?>[] clients() default {};
}

FeignClientsRegistrar类

public void registerFeignClients(AnnotationMetadata metadata, BeanDefinitionRegistry registry) {ClassPathScanningCandidateComponentProvider scanner = this.getScanner();scanner.setResourceLoader(this.resourceLoader);Map<String, Object> attrs = metadata.getAnnotationAttributes(EnableFeignClients.class.getName());AnnotationTypeFilter annotationTypeFilter = new AnnotationTypeFilter(FeignClient.class);//此方法Class<?>[] clients = attrs == null ? null : (Class[])((Class[])attrs.get("clients"));Object basePackages;if (clients != null && clients.length != 0) {final Set<String> clientClasses = new HashSet();basePackages = new HashSet();Class[] var9 = clients;int var10 = clients.length;for(int var11 = 0; var11 < var10; ++var11) {Class<?> clazz = var9[var11];((Set)basePackages).add(ClassUtils.getPackageName(clazz));clientClasses.add(clazz.getCanonicalName());}AbstractClassTestingTypeFilter filter = new AbstractClassTestingTypeFilter() {protected boolean match(ClassMetadata metadata) {String cleaned = metadata.getClassName().replaceAll("\\$", ".");return clientClasses.contains(cleaned);}};scanner.addIncludeFilter(new FeignClientsRegistrar.AllTypeFilter(Arrays.asList(filter, annotationTypeFilter)));} else {scanner.addIncludeFilter(annotationTypeFilter);basePackages = this.getBasePackages(metadata);}Iterator var17 = ((Set)basePackages).iterator();while(var17.hasNext()) {String basePackage = (String)var17.next();Set<BeanDefinition> candidateComponents = scanner.findCandidateComponents(basePackage);Iterator var21 = candidateComponents.iterator();while(var21.hasNext()) {BeanDefinition candidateComponent = (BeanDefinition)var21.next();if (candidateComponent instanceof AnnotatedBeanDefinition) {AnnotatedBeanDefinition beanDefinition = (AnnotatedBeanDefinition)candidateComponent;AnnotationMetadata annotationMetadata = beanDefinition.getMetadata();Assert.isTrue(annotationMetadata.isInterface(), "@FeignClient can only be specified on an interface");Map<String, Object> attributes = annotationMetadata.getAnnotationAttributes(FeignClient.class.getCanonicalName());String name = this.getClientName(attributes);this.registerClientConfiguration(registry, name, attributes.get("configuration"));this.registerFeignClient(registry, annotationMetadata, attributes);}}}}
http://www.yayakq.cn/news/398936/

相关文章:

  • 如何查看一个网站是用什么cms做的去掉自动升级wordpress失败提示
  • 域名注册后怎么建立自己的网站网站开发都用什么数据库
  • 国内服务器做网站要备案wordpress如何跳转外部链接
  • 网站推广策略100例论坛网站制作模板
  • 常州网站建设书生商友酒店网站建设策划方案
  • 纯文本网站建设谷歌sem推广
  • 处方药可以做网站宣传吗建设银行网站多少
  • 中咨建设监理有限公司网站宝塔怎么创建网站
  • 毕业设计代做网站都可信么网站建设项目建议书
  • 可以做简历的网站网站建设意义
  • 网站上的专题 怎么设计像百度重新提交网站
  • 建设银行徐州分行网站网站跟域名是什么关系
  • 高清图片素材网站免费如何提高网站首页权重
  • 网站建立时间查询平台连接
  • 怎么快速推广网站网站编辑如何做
  • 电子商务网站建设和运营微信网站如何制作软件
  • 天津网站建设q479185700惠厦门网站建设公司哪家好
  • windows2008网站提高手机性能的黑科技软件
  • 怎么注册网站卖东西他达拉非能治好性功能障碍吗
  • 好网站开发培训昆明网站建设 技术支持
  • 宿州网站开发建设网上购物有哪些网站?
  • 自己可以自己做公司的网站吗做网站彩票代理犯法吗
  • 网上销售网站建设杭州购物网站建设
  • 恒彩装饰公司口碑长沙排名优化公司
  • 推荐好的设计网站WordPress怎么可以上传图片
  • 网站设计评分标准上海网站定制设计图
  • 现在都不用dw做网站了吗怎样自己制作网站
  • 哪个网站做ppt模板赚钱上海网站开发团队
  • 推广网站的方法做网销的一天都在干嘛
  • 白城学做网站企业网站建设的注意事项