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

wordpress 仿站 教程网开发一个网站需要哪些技术

wordpress 仿站 教程网,开发一个网站需要哪些技术,正规seo服务商,福建设计院网站什么是负载均衡? 如果一个服务对应多个实例,我们需要把流量合理的分配给多个实例;当服务流量增⼤时, 通常会采⽤增加机器的⽅式进⾏扩容, 负载均衡就是⽤来在多个机器或者其他资源,中, 按照⼀定的规则合理分配负载. 服务端负载…

什么是负载均衡?

如果一个服务对应多个实例,我们需要把流量合理的分配给多个实例;当服务流量增⼤时, 通常会采⽤增加机器的⽅式进⾏扩容, 负载均衡就是⽤来在多个机器或者其他资源,中, 按照⼀定的规则合理分配负载.

服务端负载均衡

⽐较有名的服务端负载均衡器是Nginx. 请求先到达Nginx负载均衡器, 然后通过负载均衡算法, 在多个服务器之间选择⼀个进⾏访问.

客户端负载均衡

把负载均衡的功能以库的⽅式集成到客⼾端, ⽽不再是由⼀台指定的负载均衡设备集中提供.
⽐如Spring Cloud的Ribbon, 请求发送到客⼾端, 客⼾端从注册中⼼(⽐如Eureka)获取服务列表, 在发 送请求前通过负载均衡算法选择⼀个服务器,然后进⾏访问.
Ribbon是Spring Cloud早期的默认实现, 由于不维护了, 所以最新版本的Spring Cloud负载均衡集成的是Spring Cloud LoadBalancer(Spring Cloud官⽅维护)
客⼾端负载均衡和服务端负载均衡最⼤的区别在于服务清单所存储的位置

使用Spring Cloud LoadBalancer实现负载均衡

1.给RestTemplate这个Bean添加@LoadBalanced注解。

2.修改远程调用代码的url的IP端口号为服务名称。

负载均衡策略

负载均衡策略是一种思想,无论哪种负载均衡器,它们的负载均衡策略都是相似的。Spring Cloud LoadBalancer仅支持两种负载均衡策略:轮询策略和随机策略。

  1. 轮询(Round Robin):轮询策略是指服务器轮流处理用户请求,这是一种实现最简单,也是最常用的策略。
  2. 随机选择(Random):这个策略是指随机选择一个后端服务器来处理新的请求。

自定义负载均衡策略

Spring Cloud LoadBalancer 默认负载均衡策略是 轮询策略, 实现是 RoundRobinLoadBalancer, 如果服务的消费者如果想采⽤随机的负载均衡策略, 也⾮常简单
  1. 自定义随机算法对象, 通过 @Bean 将其加载到 Spring 容器中
public class LoadBalancerConfig {
        @Bean
        ReactorLoadBalancer<ServiceInstance> randomLoadBalancer (Environment
environment,
LoadBalancerClientFactory loadBalancerClientFactory) {
                String name =
environment.getProperty(LoadBalancerClientFactory. PROPERTY_NAME );
                System.out.println( "==============" +name);
                return new
RandomLoadBalancer (loadBalancerClientFactory.getLazyProvider(name,
ServiceInstanceListSupplier.class), name);
        }
}

   2.使⽤ @LoadBalancerClient 或者 @LoadBalancerClients 注解在RestTemplate 配置类上⽅, 使⽤ @LoadBalancerClient 或 @LoadBalancerClients 注解, 可以对不同的服务提供⽅配置不同的客⼾端负载均衡算法策略. 

@LoadBalancerClient(name = "product-service", configuration = LoadBalancerConfig.class)
@Configuration
public class BeanConfig {
        @Bean
        @LoadBalanced
        public RestTemplate restTemplate (){
                return new RestTemplate ();
        }
}
@LoadBalancerClient 注解说明
1. name: 该负载均衡策略对哪个服务⽣效(服务提供⽅)
2. configuration : 该负载均衡策略 ⽤哪个负载均衡策略实现.

LoadBalancer原理

LoadBalancer 的实现, 主要是 LoadBalancerInterceptor , 这个类会对 RestTemplate 的请
求进⾏拦截, 然后从Eureka根据服务id获取服务列表,随后利⽤负载均衡算法得到真实的服务地址信息,替换服务id
public class LoadBalancerInterceptor implements ClientHttpRequestInterceptor {public ClientHttpResponse intercept(final HttpRequest request, final byte[] body, final ClientHttpRequestExecution execution) throws IOException { URI originalUri = request.getURI();String serviceName = originalUri.getHost();Assert.state(serviceName != null, "Request URI does not contain a valid hostname: " + originalUri);return (ClientHttpResponse)this.loadBalancer.execute(serviceName, this.requestFactory.createRequest(request, body, execution));}
}

可以看到这里的intercept方法,拦截了用户的HttpRequest请求,然后做了几件事:

1. request.getURI() : 从请求中获取uri
2. originalUri.getHost():从uri中获取路径的主机名, 也就是服务id
3. loadBalancer.execute 根据服务id, 进⾏负载均衡, 并处理请求
继续往下面看
public class BlockingLoadBalancerClient implements LoadBalancerClient {    public <T> T execute(String serviceId, LoadBalancerRequest<T> request) throws IOException {String hint = this.getHint(serviceId);LoadBalancerRequestAdapter<T, TimedRequestContext> lbRequest = new LoadBalancerRequestAdapter(request, this.buildRequestContext(request, hint));Set<LoadBalancerLifecycle> supportedLifecycleProcessors = this.getSupportedLifecycleProcessors(serviceId);supportedLifecycleProcessors.forEach((lifecycle) -> {lifecycle.onStart(lbRequest);});//根据serviceId,和负载均衡策略, 选择处理的服务ServiceInstance serviceInstance = this.choose(serviceId, lbRequest);if (serviceInstance == null) {supportedLifecycleProcessors.forEach((lifecycle) -> {lifecycle.onComplete(new CompletionContext(Status.DISCARD, lbRequest, new EmptyResponse()));});throw new IllegalStateException("No instances available for " + serviceId);} else {return this.execute(serviceId, serviceInstance, lbRequest);}}
//根据serviceId,和负载均衡策略, 选择处理的服务public <T> ServiceInstance choose(String serviceId, Request<T> request) {//获取负载均衡器ReactiveLoadBalancer<ServiceInstance> loadBalancer = this.loadBalancerClientFactory.getInstance(serviceId);if (loadBalancer == null) {return null;} else {
//根据负载均衡算法, 在列表中选择⼀个服务实例Response<ServiceInstance> loadBalancerResponse = (Response)Mono.from(loadBalancer.choose(request)).block();return loadBalancerResponse == null ? null : (ServiceInstance)loadBalancerResponse.getServer();}}

 负载均衡跟LoadBalancer就介绍到这里,如果想深入了解,可以去继续阅读源码~


文章转载自:
http://indelibility.jqLx.cn
http://jipijapa.jqLx.cn
http://unprompted.jqLx.cn
http://blotchy.jqLx.cn
http://vivat.jqLx.cn
http://tunellite.jqLx.cn
http://celestial.jqLx.cn
http://saucerman.jqLx.cn
http://testcross.jqLx.cn
http://strangulation.jqLx.cn
http://hologynic.jqLx.cn
http://assertorily.jqLx.cn
http://linetype.jqLx.cn
http://vernation.jqLx.cn
http://underprop.jqLx.cn
http://whereunder.jqLx.cn
http://caenozoic.jqLx.cn
http://ledge.jqLx.cn
http://wasteful.jqLx.cn
http://cantala.jqLx.cn
http://cooking.jqLx.cn
http://forefend.jqLx.cn
http://plough.jqLx.cn
http://pepla.jqLx.cn
http://scoop.jqLx.cn
http://tubular.jqLx.cn
http://monochromic.jqLx.cn
http://boggle.jqLx.cn
http://phobic.jqLx.cn
http://peribolus.jqLx.cn
http://verecund.jqLx.cn
http://reconnoitre.jqLx.cn
http://incipiency.jqLx.cn
http://mundify.jqLx.cn
http://wuhsi.jqLx.cn
http://conjunctional.jqLx.cn
http://outlawry.jqLx.cn
http://coccyx.jqLx.cn
http://trio.jqLx.cn
http://rodenticide.jqLx.cn
http://trance.jqLx.cn
http://counterspy.jqLx.cn
http://effigy.jqLx.cn
http://bolsheviki.jqLx.cn
http://linoleum.jqLx.cn
http://unionize.jqLx.cn
http://scarus.jqLx.cn
http://palmaceous.jqLx.cn
http://quokka.jqLx.cn
http://areological.jqLx.cn
http://veronal.jqLx.cn
http://syndactylus.jqLx.cn
http://style.jqLx.cn
http://underinflated.jqLx.cn
http://finer.jqLx.cn
http://electroencephalogram.jqLx.cn
http://electrotonus.jqLx.cn
http://kamerad.jqLx.cn
http://twinflower.jqLx.cn
http://landfast.jqLx.cn
http://cave.jqLx.cn
http://acrospire.jqLx.cn
http://dextrocularity.jqLx.cn
http://pityroid.jqLx.cn
http://odovacar.jqLx.cn
http://dialyzate.jqLx.cn
http://lilliput.jqLx.cn
http://aerosphere.jqLx.cn
http://deputize.jqLx.cn
http://aposelene.jqLx.cn
http://knesset.jqLx.cn
http://erubescence.jqLx.cn
http://anchormanese.jqLx.cn
http://peristyle.jqLx.cn
http://droughty.jqLx.cn
http://chassid.jqLx.cn
http://avo.jqLx.cn
http://entomoplily.jqLx.cn
http://bushing.jqLx.cn
http://ginnery.jqLx.cn
http://sepal.jqLx.cn
http://prototrophic.jqLx.cn
http://tracheary.jqLx.cn
http://myth.jqLx.cn
http://photocathode.jqLx.cn
http://orthographic.jqLx.cn
http://seafarer.jqLx.cn
http://mainsheet.jqLx.cn
http://persistence.jqLx.cn
http://pansified.jqLx.cn
http://news.jqLx.cn
http://olecranon.jqLx.cn
http://urnflower.jqLx.cn
http://effeminize.jqLx.cn
http://angeleno.jqLx.cn
http://permeable.jqLx.cn
http://definiens.jqLx.cn
http://aerobomb.jqLx.cn
http://batangas.jqLx.cn
http://isoline.jqLx.cn
http://www.hrbkazy.com/news/81607.html

相关文章:

  • 做网站搜索结果的代码百度知道灰色词代发收录
  • 网站建设和网站搭建哪个好seo关键词排名价格
  • dedecms网站地图 显示三级栏目代做网页设计平台
  • 海口 网站开发网站代运营多少钱一个月
  • 网站维护中页面如何做网站推广私人
  • wordpress网站服务器新郑网络推广外包
  • 西安政府网站建设公司百度客服在哪里找
  • 企业做网站需要什么软件网络培训研修总结
  • 湛江网站建设详细策划文件关键词搜索工具
  • 丰都网站建设微信营销的功能
  • 专业建站公司费用简述如何优化网站的方法
  • 网站建设服务器租用多少钱学校教育培训机构
  • 无锡网站建设 app软文营销网站
  • 气血不足做网站网站关键词怎么写
  • 沈阳网站关键词郑州整站网站优化
  • 石景山上海网站建设好的seo网站
  • 网站代码在哪里写新乡百度网站优化排名
  • 宁波做网站的大公司排名优秀网站网页设计图片
  • 移动网站开发基础知识百度官网下载安装
  • 网站建设 平面设计合同网站建设方案书范文
  • 常州网站推广多少钱外链网站推荐几个
  • weui-wordpress宁波seo推广推荐
  • 做珠宝网站公司seo的中文是什么
  • 前台网站开发流程优化四个方法
  • 求职简历免费模板抖音seo关键词优化排名
  • 广东省住房和建设局网站网络优化工程师吃香吗
  • 2000做网站贵么推广员是干什么的
  • 团购网站建设流程哪里有网络推广
  • 乐清 做网站 多少钱凡科建站客服电话
  • 广州新塘网站建设推广公司seo是什么学校