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

滨州的网站建设成都百度竞价推广

滨州的网站建设,成都百度竞价推广,怎么自己做网站的推广,网站建设小白到精通需要文章目录负载均衡RibbonRibbon的作用代码实现生产者cloud1_provider实现配置文件在HiController中编写以下代码启动集群消费者cloud1_consumer实现引入依赖编写配置文件编写启动类#xff0c;并给RestTemplate配置LoadBalanced注解编写RestController来测试Feign负载均衡简介F… 文章目录负载均衡RibbonRibbon的作用代码实现生产者cloud1_provider实现配置文件在HiController中编写以下代码启动集群消费者cloud1_consumer实现引入依赖编写配置文件编写启动类并给RestTemplate配置LoadBalanced注解编写RestController来测试Feign负载均衡简介FeignFeign集成了RIbbon编码测试基于cloud1_consumer项目修改引入依赖启用FeignClient编写FeignService接口编写Controller测试使用Hystrix服务熔断分布式系统面临问题——服务雪崩什么是Hystrix断路器作用服务熔断HystrixCommand服务熔断与服务降级服务熔断代码案例引入依赖启用断路器编写带有短路方法的测试Controller服务降级代码案例基于之前搭建的cloud1_consumer项目修改引入依赖编写yml配置编写Feign接口编写降级回调工厂类 OrderServiceFallBackFactory编写测试ControllerHystrix流监控Dashboard代码案例生产侧被监测方依赖配置与代码监控客户端依赖配置与代码cloud1_hystrix_dashboard负载均衡Ribbon SpringCloudRibbon是基于NetflixRibbon实现的一套客户端负载均衡工具。主要功能是提供客户端的负载均衡算法。Ribbon客户端提供系列完整的配置如连接超市重试机制。简单说就是在配置文件中列出LoadBalancer后面的所有机器。Ribbon会自动帮助基于某种规则轮询、随机去连接机器。 Ribbon的作用 LBLoad Balance负载均衡在微服务或分布式集群中常用的一种应用负载均衡简单来说就是平摊用户请求到多个赴俄乌从而达到系统的HA高可用常见负载均衡软件Nginx、LVSDubbo、SpringCloud中均给我们提供了负载均衡。SpringCloud负载均衡算法可以自定义负载均衡简单分类 集中式Load Balance 即在服务端消费方和提供方之间使用独立的LB设施如Nginx由该服务负责把访问请求通过负载策略转发到服务提供方进程式Load Balance 将LB的逻辑集成到消费者消费者从服务注册中心获取到有哪些地址可用然后自己再根据这些地址选举出一个合适的服务器。Ribbon就属于进程式LB他是一个类库。集成于消费者进程消费者通过它来获取到服务提供者的地址。 代码实现 基于前面的代码来改造服务提供者的代码先搭建服务提供者的集群 生产者cloud1_provider实现 配置文件 spring:profiles:active: dev-9991--- server:port: 9991 spring:config:activate:on-profile: dev-9991application:name: cloud1-provider logging:level:com.hx: debug eureka:client:service-url:defaultZone: http://localhost:8881/eureka/,http://localhost:8882/eureka/instance:instance-id: cloud-prod-1# 配置主机地址hostname: localhost--- server:port: 9992 spring:config:activate:on-profile: dev-9992application:name: cloud1-provider logging:level:com.hx: debug eureka:client:service-url:defaultZone: http://localhost:8881/eureka/,http://localhost:8882/eureka/instance:instance-id: cloud-prod-2# 配置主机地址hostname: localhost在HiController中编写以下代码 Value(${server.port}) private String port;RequestMapping(/) public String hi() {return h1HI Spring Cloud 1 port /h1; }启动集群 消费者cloud1_consumer实现 引入依赖 注意这里不需要重复引入ribbon的依赖否则无法ribbon将获取不到实例 ?xml version1.0 encodingUTF-8?project xmlnshttp://maven.apache.org/POM/4.0.0 xmlns:xsihttp://www.w3.org/2001/XMLSchema-instancexsi:schemaLocationhttp://maven.apache.org/POM/4.0.0 http://maven.apache.org/xsd/maven-4.0.0.xsdparentartifactIdcloud1_parent/artifactIdgroupIdcom.hx/groupIdversion1.0-SNAPSHOT/version/parentmodelVersion4.0.0/modelVersionartifactIdcloud1_consumer/artifactIdnamecloud1_consumer/namepropertiesproject.build.sourceEncodingUTF-8/project.build.sourceEncodingmaven.compiler.source1.7/maven.compiler.sourcemaven.compiler.target1.7/maven.compiler.target/propertiesdependenciesdependencygroupIdorg.springframework.cloud/groupIdartifactIdspring-cloud-starter-netflix-eureka-client/artifactId/dependencydependencygroupIdorg.springframework.boot/groupIdartifactIdspring-boot-starter-web/artifactId/dependencydependencygroupIdcom.hx/groupIdartifactIdcloud1_api/artifactIdversion0.0.1-SNAPSHOT/version/dependency/dependencies /project编写配置文件 server:port: 7771 spring:application:name: cloud1-consumer logging:level:com.hx: debug eureka:client:service-url:defaultZone: http://localhost:8881/eureka/,http://localhost:8882/eureka/register-with-eureka: false # 消费者不需要注册自己instance:instance-id: cloud-prod-1# 配置主机地址hostname: localhost编写启动类并给RestTemplate配置LoadBalanced注解 SpringBootApplication EnableEurekaClient public class Cloud1ConsumerApp {public static void main(String[] args) {SpringApplication.run(Cloud1ConsumerApp.class,args);}// 配置负载均衡的restTemplateBeanLoadBalanced // ribbonpublic RestTemplate restTemplate(){return new RestTemplate();} }编写RestController来测试 RestController public class RestOrderController {Autowiredprivate RestTemplate restTemplate;private static final String ORDER_APP_URI http://CLOUD1-PROVIDER;RequestMapping(/)public String index() {return restTemplate.getForObject(ORDER_APP_URI.concat(/), String.class);}RequestMapping(/restOrder)public Order getOrder() {return restTemplate.getForObject(ORDER_APP_URI.concat(/getOrder), Order.class);} }Feign负载均衡 简介Feign Feign是声明式的web service客户端。让微服务之间的调用更简单类似controller调用service。SpringCloud继承了Ribbon和Eureka可以在使用Feign时提供负载均衡的http客户端。Feign旨在使得编写JavaHttp客户端简单容易。 只需要给一个接口然后添加注解就可以。 Feign集成了RIbbon 利用Ribbon维护了微服务列表信息通过轮询实现了客户端的负载均衡而与Ribbon不同的是通过Feign只需要定义服务绑定接口且以声明式的方法优雅简单的实现服务调用。 编码测试基于cloud1_consumer项目修改 引入依赖 dependencygroupIdorg.springframework.cloud/groupIdartifactIdspring-cloud-starter-feign/artifactIdversion1.4.7.RELEASE/version /dependency启用FeignClient SpringBootApplication EnableEurekaClient //EnableFeignClients EnableFeignClients(basePackages com.hx.service) public class Cloud1ConsumerApp {public static void main(String[] args) {SpringApplication.run(Cloud1ConsumerApp.class, args);}// 配置负载均衡的restTemplateBeanLoadBalanced // ribbonpublic RestTemplate restTemplate() {return new RestTemplate();} }编写FeignService接口 Service FeignClient(value CLOUD1-PROVIDER) public interface RestOrderService {GetMapping(/)String index();PostMapping(/getOrder)Order restGetOrder(); }编写Controller测试使用 RestController RequestMapping(/fg) public class RestOrderFeignController {Autowiredprivate RestOrderService restOrderService;RequestMapping(/)public String index() {return restOrderService.index();}RequestMapping(/restOrder)public Order getOrder() {return restOrderService.restGetOrder();} }Hystrix服务熔断 分布式系统面临问题——服务雪崩 复杂分布式体系结构中应用程序有数十个依赖关系每个依赖关系在某些时刻不可避免的失败。 多个微服务之间调用的时候假设A服务调用B、C服务微服务B和C又调用其他微服务这就是所谓的扇出。如果扇出的链路上某个微服务的调用响应超市或时间过长无响应对微服务A的调用就会占用越来越多的系统资源进而引发系统崩溃即服务雪崩。 对于高流量应用单一的后端依赖可能导致所有服务上的所有资源都在几十秒内饱和。更糟糕的是这些应用还可能导致服务之间的延迟增加备份队列线程和其他系统资源紧张导致整个系统发生更多的级联腹胀。这些都表示需要对故障和延迟进行隔离和管理以便单个依赖关系的失败不取消整个应用程序系统。 什么是Hystrix断路器 Hystrix是一个应用于处理分布式系统的延迟和容错开源库在分布式系统中许多依赖不可避免的调用失败eg超时、异常等。Hystrix能够保证在一个依赖出问题的情况下不会导致整体服务失败避免级联故障提高分布式系统的弹性。 断路器本身是一种开关当某个服务单元发生故障后通过断路器的故障监控向服务调用方返回一个服务预期的、可处理的备选响应而不是长时间的等待或者抛出无法处理的异常这样保证了服务调用方的线程不会被长时间占用。从而避免故障在分布式系统中的蔓延乃至雪崩。 作用 服务降级、服务熔断、服务限流、接近实时监控 服务熔断HystrixCommand 熔断机制是应对雪崩问题的一种微服务链路保护机制。 当扇出的某个微服务不可用或者响应时间太长会进行服务降级进而熔断该节点微服务调用快速返回错误的相应细腻些。当检测到该服务响应正常后恢复链路调用。在SpringCloud熔断机制通过Hystrix实现。Hystrix会监控微服务间调用的状况当失败的调用到达一定阈值缺省5s内20次失败就会启动熔断机制。 服务熔断与服务降级 服务熔断服务端编写某个服务超时或者异常引起熔断 服务降级客户端编写从整体的网站请求负载考虑当某个服务熔断或者关闭后服务将不再被调用。此时在客户端可以准备一个失败回调FallbackFactory。返回一个默认的缺省值整体服务水平下降。 服务熔断代码案例 引入依赖 dependencygroupIdorg.springframework.cloud/groupIdartifactIdspring-cloud-starter-netflix-hystrix/artifactIdversion2.1.0.RELEASE/version /dependency启用断路器 SpringBootApplication EnableDiscoveryClient // 服务发现不只是eureka //EnableCircuitBreaker // 启用断路器Hystrix EnableHystrix public class Cloud1ProdApp {public static void main(String[] args) {SpringApplication.run(Cloud1ProdApp.class);} }编写带有短路方法的测试Controller RestController RequestMapping(hystrix) public class Hi_HystrixController {Autowiredprivate OrderService orderService;HystrixCommand(fallbackMethod getOrderHystrix)RequestMapping(/order)public Order getOrder(String id) {if(StringUtils.isBlank(id)){throw new RuntimeException(参数ID不可以为空);}return orderService.getOrder(id);}/*** 注意这个熔断的方法里的参数列表要和上面的方法参数列表相同* 否则报错com.netflix.hystrix.contrib.javanica.exception.FallbackDefinitionException: fallback method wasnt found*/public Order getOrderHystrix(String id) {id UUID.randomUUID().toString();return orderService.getOrder(id).setId(请传入正确的ID);} }服务降级代码案例基于之前搭建的cloud1_consumer项目修改 引入依赖 dependencygroupIdorg.springframework.cloud/groupIdartifactIdspring-cloud-starter-openfeign/artifactId /dependency dependencygroupIdorg.springframework.cloud/groupIdartifactIdspring-cloud-starter-netflix-hystrix/artifactId /dependency编写yml配置 feign:hystrix:enable: true编写Feign接口 Service FeignClient(value CLOUD1-PROVIDER,fallbackFactory OrderServiceFallBackFactory.class) public interface RestOrderService {GetMapping(/)String index();PostMapping(/getOrder)Order restGetOrder();// 我们这次测试的接口 PostMapping(/hystrix/order)Order restGetOrderFall(); }编写降级回调工厂类 OrderServiceFallBackFactory Component public class OrderServiceFallBackFactory implements FallbackFactoryRestOrderService {Overridepublic RestOrderService create(Throwable cause) {return new RestOrderService() {Overridepublic String index() {return 降级;}Overridepublic Order restGetOrder() {return null;}Overridepublic Order restGetOrderFall() {return new Order().setId(没有找到可能是未传入ID).setCreateTime(SimpleDateFormat.getDateTimeInstance().format(new Date()));}};} }编写测试Controller RestController RequestMapping(/fgfall) public class RestOrderFeignController2 {Autowiredprivate RestOrderService restOrderService;RequestMapping(/order2)public Order getOrder() {return restOrderService.restGetOrderFall();} }注意这里高版本的springcloud2021版本不清楚为什么无法实现 Hystrix流监控Dashboard 代码案例 生产侧被监测方依赖配置与代码 dependencygroupIdorg.springframework.boot/groupIdartifactIdspring-boot-starter-actuator/artifactId /dependency#暴露全部的监控信息 management:endpoints:web:exposure:include: *Bean public ServletRegistrationBean hystrixMetricsStreamServlet(){ServletRegistrationBean registrationBean new ServletRegistrationBean(new HystrixMetricsStreamServlet());registrationBean.setLoadOnStartup(1);registrationBean.addUrlMappings(/actuator/hystrix.stream);registrationBean.setName(HystrixMetricsStreamServlet);return registrationBean; }监控客户端依赖配置与代码cloud1_hystrix_dashboard ?xml version1.0 encodingUTF-8?project xmlnshttp://maven.apache.org/POM/4.0.0 xmlns:xsihttp://www.w3.org/2001/XMLSchema-instancexsi:schemaLocationhttp://maven.apache.org/POM/4.0.0 http://maven.apache.org/xsd/maven-4.0.0.xsdparentartifactIdcloud1_parent/artifactIdgroupIdcom.hx/groupIdversion1.0-SNAPSHOT/version/parentmodelVersion4.0.0/modelVersionartifactIdcloud1_hystrix_dashboard/artifactIdnamecloud1_hystrix_dashboard/namepropertiesproject.build.sourceEncodingUTF-8/project.build.sourceEncodingmaven.compiler.source1.7/maven.compiler.sourcemaven.compiler.target1.7/maven.compiler.target/propertiesdependenciesdependencygroupIdorg.springframework.boot/groupIdartifactIdspring-boot-starter-web/artifactId/dependencydependencygroupIdorg.springframework.cloud/groupIdartifactIdspring-cloud-starter-netflix-hystrix/artifactId/dependencydependencygroupIdorg.springframework.cloud/groupIdartifactIdspring-cloud-starter-netflix-hystrix-dashboard/artifactId/dependency/dependencies /projectpackage com.hx;import org.springframework.boot.SpringApplication; import org.springframework.boot.autoconfigure.SpringBootApplication; import org.springframework.cloud.netflix.hystrix.EnableHystrix; import org.springframework.cloud.netflix.hystrix.dashboard.EnableHystrixDashboard;SpringBootApplication // 启用hystrix监控 EnableHystrixDashboard EnableHystrix public class DashboardApp {public static void main(String[] args) {SpringApplication.run(DashboardApp.class,args);} }
http://www.dnsts.com.cn/news/16993.html

相关文章:

  • 郑州市汉狮做网站四川电脑网站建设
  • 自助建立网站wordpress子菜单跳转
  • wordpress企业主题源码广州seo诊断
  • 客户做网站要退款服务器绑定网站打不开
  • 杭州网站建设开发网站开发的研究现状
  • 网站建设 管理厦门市建设执业资格注册管理中心网站
  • php开发网站优势新赣州网
  • 国内免费设计素材网站域名验证网站
  • 西安自适应网站建设郑州企业服务公司
  • 做动画合成的视频网站网站建设实训的心得的体会
  • 做网站只做前端可以用吗东莞网站建设规范
  • 大寺网站建设公司网站建设销售ppt模板
  • 三水营销网站开发wordpress 用户授权
  • 广州一流高校建设网站哪里网站备案快
  • 品牌手机网站开发专业放心的企业展厅设计
  • wordpress去除wordpress新闻西安seo管理
  • 自建公司网站前端开发需要的软件
  • 宝山青岛网站建设关于营销的最新的新闻
  • 莱芜哪里做网站桂林旅游网页设计
  • 专业网站开发哪家好南昌做网站建设哪家好
  • 微博网站开发平台wordpress 多人编辑
  • 建设淘宝客网站多少钱win10 wordpress安装教程视频
  • 资深的网站推广云服务平台
  • 广州网站建设联系信科海珠免费的网络推广
  • 重庆拓达建设集团网站南宁模板建站定制网站
  • 江阴建设局网站招考红桥天津网站建设
  • 深圳网站建设的我的家乡网页制作步骤
  • 鞍山网站建设联系方式宁夏建网站报价
  • ps制作网站北京网站建设 博客
  • 河北建设厅网站福田网站建设有限公司