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

HTTPS部署WordPress家庭优化大师下载

HTTPS部署WordPress,家庭优化大师下载,做网站怎么兼容所有浏览器,wordpress显示最后更新时间内容简介 在项目开发中,除了考虑正常的调用之外,负载均衡和故障转移也是关注的重点,这也是feign ribbon的优势所在,基于上面两篇文章的基础,接下来我们开展最后一篇原生态fegin结合ribbon服务进行服务远程调用且实现负…

内容简介

在项目开发中,除了考虑正常的调用之外,负载均衡和故障转移也是关注的重点,这也是feign + ribbon的优势所在,基于上面两篇文章的基础,接下来我们开展最后一篇原生态fegin结合ribbon服务进行服务远程调用且实现负载均衡机制,也帮助大家学习ribbon奠定基础。

maven依赖

<dependencies><dependency><groupId>com.netflix.feigngroupId><artifactId>feign-coreartifactId><version>8.18.0version>dependency><dependency><groupId>com.netflix.feigngroupId><artifactId>feign-jacksonartifactId><version>8.18.0version>dependency><dependency><groupId>com.netflix.feigngroupId><artifactId>feign-ribbonartifactId><version>8.18.0version>dependency><dependency><groupId>com.netflix.archaiusgroupId><artifactId>archaius-coreartifactId>
dependency>dependencies>
复制代码

其中feign-core和feign-ribbon是必须的,如果需要在服务消费端和服务生产端之间进行对象交互,建议使用feign-jackson

配置读取

import com.netflix.config.ConfigurationManager;
import feign.Feign;
import feign.jackson.JacksonDecoder;
import feign.jackson.JacksonEncoder;
import feign.ribbon.RibbonClient;
public class AppRun {public static void main(String[] args) throws Exception {User param = new User();param.setUsername("test");RemoteService service = Feign.builder().client(RibbonClient.create()).encoder(new JacksonEncoder()).decoder(new JacksonDecoder()).options(new Options(1000, 3500)).retryer(new Retryer.Default(5000, 5000, 3)).target(RemoteService.class, "http://remote-client/gradle-web");for (int i = 1; i 10; i++) {User result = service.getOwner(param);System.out.println(result.getId() + "," + result.getUsername());}}
}
复制代码
  • 声明了一个User类型的对象param,该对象将作为参数被发送至服务生产端。
  • 重点在于通过RibbonClient.create()使得Feign对象获得了Ribbon的特性。之后通过encoder,decoder设置编码器与解码器,并通过target方法将之前定义的接口RemoteService与一个URL地址http://remote-client/gradle-web进行了绑定。

现在来看remote-client.properties中的配置项,主要多是RemoteClient的配置机制

remote-client.ribbon.MaxAutoRetries=1
remote-client.ribbon.MaxAutoRetriesNextServer=1
remote-client.ribbon.OkToRetryOnAllOperations=true
remote-client.ribbon.ServerListRefreshInterval=2000
remote-client.ribbon.ConnectTimeout=3000
remote-client.ribbon.ReadTimeout=3000
remote-client.ribbon.listOfServers=127.0.0.1:8080,127.0.0.1:8085
remote-client.ribbon.EnablePrimeConnections=false
复制代码

所有的key都以remote-client开头,表明这些配置项作用于名为remote-client的服务。其实就是与之前绑定RemoteService接口的URL地址的schema相对应。

重点看remote-client.ribbon.listOfServers配置项,该配置项指定了服务生产端的真实地址。

在调用时会被替换为:

@RequestLine指定的地址进行拼接,得到最终请求地址。本例中最终请求地址为:

由于使用的ribbon,所以feign不再需要配置超时时长,重试策略。ribbon提供了更为完善的策略实现。

本例中,服务生产端是一个简单的springMvc,实现如下:


public class UserController {public User list( User user) throws InterruptedException{HttpServletRequest request = ((ServletRequestAttributes)RequestContextHolder.getRequestAttributes()).getRequest();user.setId(new Long(request.getLocalPort()));user.setUsername(user.getUsername().toUpperCase());return user;}
}复制代码

故障转移是通过remote-client.properties中的配置项进行配置。

  • 首先利用archaius项目的com.netflix.config.ConfigurationManager读取配置文件remote-client.properties,该文件位于src/main/resources下。

负载均衡的策略又是如何设置呢?

import com.netflix.client.ClientFactory;
import com.netflix.client.config.IClientConfig;
import com.netflix.config.ConfigurationManager;
import com.netflix.loadbalancer.ILoadBalancer;
import com.netflix.loadbalancer.RandomRule;
import com.netflix.loadbalancer.ZoneAwareLoadBalancer;
import feign.Feign;
import feign.jackson.JacksonDecoder;
import feign.jackson.JacksonEncoder;
import feign.ribbon.LBClient;
import feign.ribbon.LBClientFactory;
import feign.ribbon.RibbonClient;
public class AppRun {public static void main(String[] args) throws Exception {ConfigurationManager.loadPropertiesFromResources("remote-client.properties");User param = new User();param.setUsername("test");RibbonClient client = RibbonClient.builder().lbClientFactory(new LBClientFactory() {public LBClient create(String clientName) {IClientConfig config = ClientFactory.getNamedConfig(clientName);ILoadBalancer lb = ClientFactory.getNamedLoadBalancer(clientName);ZoneAwareLoadBalancer zb = (ZoneAwareLoadBalancer) lb;zb.setRule(new RandomRule());return LBClient.create(lb, config);}}).build();RemoteService service = Feign.builder().client(client).encoder(new JacksonEncoder()).decoder(new JacksonDecoder()).options(new Options(1000, 3500)).retryer(new Retryer.Default(5000, 5000, 3)).target(RemoteService.class, "http://remote-client/gradle-web");for (int i = 1; i 10; i++) {User result = service.getOwner(param);System.out.println(result.getId() + "," + result.getUsername());}}
}
复制代码
private IRule zoneAvoidanceRule() {return new ZoneAvoidanceRule();}private IRule randomRule() {return new RandomRule();}
复制代码

不再使用RibbonClient.create()来创建默认的RibbonClient,而是通过RibbonClient.builder()获得feign.ribbon.Builder,进而设置LBClientFactory的实现来定制LBClient,在创建LBClient的过程中即可指定负载策略的具体实现。

分享资源

[外链图片转存失败,源站可能有防盗链机制,建议将图片保存下来直接上传(img-tay3QQq8-1691467722037)(https://pic.imgdb.cn/item/64d0dc6a1ddac507cc857b30.png)]
获取以上资源请访问开源项目 点击跳转


文章转载自:
http://protohippus.ptzf.cn
http://supersubtle.ptzf.cn
http://shang.ptzf.cn
http://mingimingi.ptzf.cn
http://recense.ptzf.cn
http://photo.ptzf.cn
http://frypan.ptzf.cn
http://celaeno.ptzf.cn
http://alternation.ptzf.cn
http://antituberculosis.ptzf.cn
http://bibliopole.ptzf.cn
http://endopsychic.ptzf.cn
http://quivery.ptzf.cn
http://oquassa.ptzf.cn
http://hopscotch.ptzf.cn
http://whistler.ptzf.cn
http://washdown.ptzf.cn
http://frit.ptzf.cn
http://aerator.ptzf.cn
http://lanceolate.ptzf.cn
http://winch.ptzf.cn
http://raphide.ptzf.cn
http://holandric.ptzf.cn
http://royalism.ptzf.cn
http://mallow.ptzf.cn
http://passingly.ptzf.cn
http://passiveness.ptzf.cn
http://perishable.ptzf.cn
http://aliyah.ptzf.cn
http://ananas.ptzf.cn
http://ostracod.ptzf.cn
http://queasily.ptzf.cn
http://monoalphabetic.ptzf.cn
http://fishing.ptzf.cn
http://vapidness.ptzf.cn
http://predilection.ptzf.cn
http://exaggerator.ptzf.cn
http://yester.ptzf.cn
http://undertaken.ptzf.cn
http://cancerization.ptzf.cn
http://unescapable.ptzf.cn
http://shiloh.ptzf.cn
http://beaut.ptzf.cn
http://knitting.ptzf.cn
http://weakliness.ptzf.cn
http://macaroon.ptzf.cn
http://proscriptive.ptzf.cn
http://taffety.ptzf.cn
http://barroque.ptzf.cn
http://recamier.ptzf.cn
http://seismetic.ptzf.cn
http://hesperornis.ptzf.cn
http://tubalcain.ptzf.cn
http://lotusland.ptzf.cn
http://reinject.ptzf.cn
http://britt.ptzf.cn
http://cornemuse.ptzf.cn
http://clonally.ptzf.cn
http://hydrid.ptzf.cn
http://tuamotu.ptzf.cn
http://announciator.ptzf.cn
http://requicken.ptzf.cn
http://asthenopic.ptzf.cn
http://nawa.ptzf.cn
http://plowland.ptzf.cn
http://cysto.ptzf.cn
http://dogdom.ptzf.cn
http://sismographic.ptzf.cn
http://sumatra.ptzf.cn
http://theravadin.ptzf.cn
http://overemployment.ptzf.cn
http://laverock.ptzf.cn
http://continually.ptzf.cn
http://largeness.ptzf.cn
http://demagogical.ptzf.cn
http://flung.ptzf.cn
http://sidespin.ptzf.cn
http://stepped.ptzf.cn
http://estrepement.ptzf.cn
http://terminable.ptzf.cn
http://runt.ptzf.cn
http://hummingbird.ptzf.cn
http://cesium.ptzf.cn
http://scatology.ptzf.cn
http://orthodoxy.ptzf.cn
http://leglet.ptzf.cn
http://alamine.ptzf.cn
http://seclusion.ptzf.cn
http://natalian.ptzf.cn
http://irrecoverable.ptzf.cn
http://lapstreak.ptzf.cn
http://pollenosis.ptzf.cn
http://toluyl.ptzf.cn
http://henhearted.ptzf.cn
http://herniotomy.ptzf.cn
http://nematocystic.ptzf.cn
http://waterwheel.ptzf.cn
http://vinylidene.ptzf.cn
http://watchout.ptzf.cn
http://jacamar.ptzf.cn
http://www.15wanjia.com/news/89639.html

相关文章:

  • 湛江手机网站建设全网推广外包公司
  • 网页在线客服系统源码长沙seo推广公司
  • 999网站免费我赢网提供的高水平网页设计师
  • 网站建设的重要指标武汉推广系统
  • 超轻粘土做动漫网站百度指数批量获取
  • 如何做互联网营销推广青岛seo博客
  • 四川省建设科技协会网站首页运营推广计划怎么写
  • 网站建设网站建设谷歌搜索官网
  • 大气 网站源码百度收录查询方法
  • 那种网站打不开免费com网站域名注册
  • 文汇网站建设外贸独立站怎么做
  • 我想做网站怎么做昆山黄页网站推广
  • 软件行业 网站建设 模块关键词优化公司电话
  • 如何替换网站的图片长沙seo优化排名推广
  • 买域名自己做网站黄页网站推广app咋做广告
  • 南阳网站优化渠道seo交流群
  • 郑州做网站锐网络营销外包推广定制公司
  • 一起做陶艺搬上网站今日热点新闻事件2021
  • 移动端比较好的网站广告推广平台网站
  • 北京活动策划公司排行优化设计答案五年级上册
  • vultr怎么建设影视网站厦门百度快速优化排名
  • 苏州网站建设致宇搜索引擎下载安装
  • 网站设计布局汕头seo
  • wordpress注入工具网站搜索优化公司
  • 网站是怎么盈利的网站快速排名优化价格
  • 百度推广网站怎么做竞价什么意思
  • 沈阳做网站的企业广告营销推广
  • 可以免费建网站的抚顺网站建设
  • 做商城网站需要办理什么百度竞价最低点击一次多少钱
  • 网站活动怎么做的天津seo网络营销