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

江西网站开发联系方式html教程资料

江西网站开发联系方式,html教程资料,网页设计代码html文件怎么查,杭州公积金网站查询系统SpringCloud 学习笔记 —— 一、背景-CSDN博客 SpringCloud 学习笔记 —— 二、微服务与微服务架构-CSDN博客 SpringCloud 学习笔记 —— 三、SpringCloud 入门概述-CSDN博客 SpringCloud 学习笔记 —— 四、SpringCloud Rest 学习环境搭建#xff1a;服务提供者-CSDN博客 …SpringCloud 学习笔记 —— 一、背景-CSDN博客 SpringCloud 学习笔记 —— 二、微服务与微服务架构-CSDN博客 SpringCloud 学习笔记 —— 三、SpringCloud 入门概述-CSDN博客 SpringCloud 学习笔记 —— 四、SpringCloud Rest 学习环境搭建服务提供者-CSDN博客 SpringCloud 学习笔记 —— 五、Eureka 服务注册与发现-CSDN博客 SpringCloud 学习笔记 —— 六、Ribbon负载均衡(基于客户端)-CSDN博客 六、Ribbon负载均衡(基于客户端) 6.1 负载均衡以及Ribbon Ribbon是什么 Spring Cloud Ribbon 是基于Netflix Ribbon 实现的一套客户端负载均衡的工具。简单的说Ribbon 是 Netflix 发布的开源项目主要功能是提供客户端的软件负载均衡算法将 Netflix 的中间层服务连接在一起。Ribbon 的客户端组件提供一系列完整的配置项如连接超时、重试等。简单的说就是在配置文件中列出 LoadBalancer (简称LB负载均衡) 后面所有的机器Ribbon 会自动的帮助你基于某种规则 (如简单轮询随机连接等等) 去连接这些机器。我们也容易使用 Ribbon 实现自定义的负载均衡算法 Ribbon能干嘛 LB即负载均衡 (LoadBalancer) 在微服务或分布式集群中经常用的一种应用。 负载均衡简单的说就是将用户的请求平摊的分配到多个服务上从而达到系统的HA (高用)。 常见的负载均衡软件有 Nginx、Lvs 等等。 Dubbo、SpringCloud 中均给我们提供了负载均衡SpringCloud 的负载均衡算法可以自定义。 负载均衡简单分类 集中式LB 即在服务的提供方和消费方之间使用独立的LB设施如Nginx(反向代理服务器)由该设施负责把访问请求通过某种策略转发至服务的提供方 进程式 LB 将LB逻辑集成到消费方消费方从服务注册中心获知有哪些地址可用然后自己再从这些地址中选出一个合适的服务器。Ribbon 就属于进程内LB它只是一个类库集成于消费方进程消费方通过它来获取到服务提供方的地址 6.2 集成Ribbon springcloud-consumer-dept-80向pom.xml中添加Ribbon和Eureka依赖 !-- Ribbon--dependencygroupIdorg.springframework.cloud/groupIdartifactIdspring-cloud-starter-netflix-ribbon/artifactId/dependency !-- Eureka: Ribbon 需要从 Eureka 服务中心获取什么--dependencygroupIdorg.springframework.cloud/groupIdartifactIdspring-cloud-starter-netflix-eureka-client/artifactId/dependency在application.yml文件中配置Eureka server:port: 80 # Eureka 配置 eureka:client:register-with-eureka: false # 不向 Eureka 注册自己service-url: # 从三个注册中心随机去一个去访问defaultZone: http://eureka7001.com:7001/eureka/, http://eureka7002.com:7002/eureka/, http://eureka7003.com:7003/eureka/主启动类加上EnableEurekaClient注解开启Eureka // Ribbon 和 Eureka 整合以后客户端可以直接调用不用关心 IP 地址和端口号 SpringBootApplication EnableEurekaClient // 开启 Eureka 客户端 public class DeptConsumer_80 {public static void main(String[] args) {SpringApplication.run(DeptConsumer_80.class, args);} }自定义Spring配置类ConfigBean.java 配置负载均衡实现RestTemplate Configuration public class ConfigBean { // Configuration spring applicationContext.xmlBeanLoadBalanced // 配置负载均衡实现 RestTemplatepublic RestTemplate getRestTemplate(){return new RestTemplate();}}修改conrollerDeptConsumerController.java // Ribbon: 我们这里的地址应该是一个变量通过服务名来访问 // private static final String REST_URL_PREFIX http://localhost:8001;private static final String REST_URL_PREFIX http://SPRINGCLOUD-PROVIDER-DEPT;6.3 使用Ribbon实现负载均衡 流程图 0.新建两个数据库 db02, db03 1.新建两个服务提供者Moudlespringcloud-provider-dept-8003、springcloud-provider-dept-8002 2.参照springcloud-provider-dept-8001 依次为另外两个Moudle添加pom.xml依赖 、resourece下的mybatis和application.yml配置Java代码 三个服务名称一致 3.启动所有服务测试(根据自身电脑配置决定启动服务的个数)访问http://eureka7001.com:7001/ 查看结果 测试访问http://localhost/consumer/dept/list 这时候随机访问的是服务提供者8001 再次访问http://localhost/consumer/dept/list 这时候随机的是服务提供者8003, F5 -- 8002 以上这种每次访问 http://localhost/consumer/dept/list 随机访问集群中某个服务提供者这种情况叫做轮询轮询算法在SpringCloud中可以自定义。 访问http://eureka7001.com/consumer/dept/list或者http://eureka7002.com/consumer/dept/list或者http://eureka7002.com/consumer/dept/list都是同样的效果即使只启动了一台 Eureka 服务器 如何切换或者自定义规则呢 在springcloud-provider-dept-80模块下的ConfigBean中进行配置切换使用不同的规则 Configuration public class ConfigBean {//Configuration -- spring applicationContext.xml/*** IRule:* RoundRobinRule 轮询策略* RandomRule 随机策略* AvailabilityFilteringRule 会先过滤掉跳闸访问故障的服务~对剩下的进行轮询~* RetryRule 会先按照轮询获取服务~如果服务获取失败则会在指定的时间内进行重试*/Beanpublic IRule myRule() {return new RandomRule();//使用随机策略//return new RoundRobinRule();//使用轮询策略//return new AvailabilityFilteringRule();//使用轮询策略//return new RetryRule();//使用轮询策略} }也可以自定义规则在myRule包下自定义一个配置类MyRule.java注意该包不要和主启动类所在的包同级要跟启动类所在包同级 警告FooConfiguration必须是Configuration但请注意它不在主应用程序上下文的ComponentScan中否则将由所有RibbonClients共享。如果您使用ComponentScan或SpringBootApplication则需要采取措施避免包含例如将其放在一个单独的不重叠的包中或者指定要在ComponentScan。 即如果在与主启动类同级的包中定义了与默认提供的负载均衡策略同名则前者会将后者覆盖掉而这可能会导致混淆所以约定避免这么干。 MyRule.java Configuration public class MyRule {/*** IRule :* 1) RoundRobinRule: 轮询策略* 2) RandomRule: 随机策略* 3) AvailabilityFilteringRule过滤掉访问故障的服务余下服务再轮询* 4) RetryRule: 轮询获取服务如果服务获取失败则会在指定时间内重试*/Beanpublic IRule myRule(){return new RandomRule();} }报异常org.springframework.beans.factory.BeanDefinitionStoreException: Invalid bean definition with name myRule defined in com.lin.rule.MyRule: Bean name derived from Bean method myRule clashes with bean name for containing configuration class; please make those names unique! 翻译过来就是org.springframework.beans.factory.BeanDefinitionStoreExceptioncom.lin.rule.MyRule 中定义的名称“myRule”的 bean 定义无效从 Bean 方法“myRule”派生的 Bean 名称与包含配置类的 bean 名称冲突 请使这些名称独一无二 意思是MyRule 类被标记为 Configuration并且定义了一个名为 myRule 的 bean 方法。然而由于 MyRule 类本身也被视为一个 bean并且默认的 bean 名称是根据类名推断的所以在这里发生了 bean 名称冲突。 解决方法 将 MyRule 类的名称修改为与其 bean 方法的名称不同的名称以确保唯一性。 Configuration public class MyRuleConfiguration {Beanpublic IRule myRule(){return new FishRule();} }如果 MyRule 类的名称不能修改你可以在 Configuration 注解中显式指定 bean 的名称。 Configuration(myRuleConfiguration) public class MyRule {Beanpublic IRule myRule(){return new FishRule();} }主启动类开启负载均衡并指定自定义的MyRule配置类 // Ribbon 和 Eureka 整合以后客户端可以直接调用不用关心 IP 地址和端口号 SpringBootApplication EnableEurekaClient // 开启 Eureka 客户端 // 在微服务启动时就能加载自定义的 Ribbon 类自定义的规则会覆盖原有默认的规则 RibbonClient(name SPRINGCLOUD-PROVIDER-DEPT, configuration MyRule.class) // 开启负载均衡并指定自定义的规则 public class DeptConsumer_80 {public static void main(String[] args) {SpringApplication.run(DeptConsumer_80.class, args);} }自定义的规则(这里我们参考Ribbon中默认的规则代码自己稍微改动)MyRandomRule.java public class MyRandomRule extends AbstractLoadBalancerRule {/*** 每个服务访问5次则换下一个服务(总共3个服务)* p* total0,默认0,如果5,指向下一个服务节点* index0,默认0,如果total5,index1*/private int total 0;//被调用的次数private int currentIndex 0;//当前是谁在提供服务//edu.umd.cs.findbugs.annotations.SuppressWarnings(value RCN_REDUNDANT_NULLCHECK_OF_NULL_VALUE)public Server choose(ILoadBalancer lb, Object key) {if (lb null) {return null;}Server server null;while (server null) {if (Thread.interrupted()) {return null;}ListServer upList lb.getReachableServers();//获得当前活着的服务ListServer allList lb.getAllServers();//获取所有的服务int serverCount allList.size();if (serverCount 0) {/** No servers. End regardless of pass, because subsequent passes* only get more restrictive.*/return null;}//int index chooseRandomInt(serverCount);//生成区间随机数//server upList.get(index);//从或活着的服务中,随机获取一个//自定义代码if (total 5) {server upList.get(currentIndex);total;} else {total 0;currentIndex;if (currentIndex upList.size()) {currentIndex 0;}server upList.get(currentIndex);//从活着的服务中,获取指定的服务来进行操作}//if (server null) {/** The only time this should happen is if the server list were* somehow trimmed. This is a transient condition. Retry after* yielding.*/Thread.yield();continue;}if (server.isAlive()) {return (server);}// Shouldnt actually happen.. but must be transient or a bug.server null;Thread.yield();}return server;}protected int chooseRandomInt(int serverCount) {return ThreadLocalRandom.current().nextInt(serverCount);}Overridepublic Server choose(Object key) {return choose(getLoadBalancer(), key);}Overridepublic void initWithNiwsConfig(IClientConfig clientConfig) {// TODO Auto-generated method stub} }参考 【狂神说Java】SpringCloud最新教程IDEA版
http://www.pierceye.com/news/325247/

相关文章:

  • 深圳做分销商城网站我有域名跟空间能教我做网站吗
  • 网站子目录做推送用什么网站
  • 网站手机优化网站上传空间的ip地址
  • 做网站增加流量自助微信网站设计
  • 网站推广的6个方法是什么软件开发合同模板范本1
  • 营销网站手机站wordpress的主题目录
  • 达州建设企业网站重视网站商务通
  • 淘宝网站怎么做视频58做二手车网站应该怎么推广
  • 自动翻译网站软件cf刷枪网站怎么做的
  • 示范校建设验收网站网站对话窗口怎么做
  • phpcms 移动网站模板怎么做个人网页
  • 南宁手机建站公司新加坡网站后缀
  • 如何在建设部网站查询获奖情况如何申请电商网站
  • jsp网站访问万维网网站幻灯
  • 南通住房和城乡建设部网站首页安徽公司网站建设
  • 建筑论坛网站修改WordPress文章发布页面
  • 网站代备案系统seo优化服务是什么意思
  • 专门做选择题的网站一个网站seo做哪些工作
  • wordpress 多站点 拷贝中国建设银行春招网站
  • 门户营销型网站wordpress代码执行
  • 保山市建设厅网站做建筑机械网站那个网站好
  • 广告位网站建设国际人才网中山招聘网
  • 南昌市城市建设档案馆网站一个网站做无限关键词
  • wordpress特别卡 iis东莞推广优化公司
  • 做网站收入怎样开放平台登录
  • 外贸网站运营推广微信运营商
  • 国外做储物柜的网站做亚马逊网站一般发什么快递
  • 仿古建筑公司网站廊坊网站建设公司
  • 在线动画手机网站模板下载学软件开发需要什么基础
  • 北京的网站建设收费标准推广产品的方法和步骤