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

佛山乐居装饰公司珠海优化seo

佛山乐居装饰公司,珠海优化seo,注册公司网站模板,市场seo是什么概述 本文介绍微服务的服务调用和负载均衡,使用spring cloud的loadbalancer及openfeign两种技术来实现。 本文的操作是在微服务的初步使用的基础上进行。 环境说明 jdk1.8 maven3.6.3 mysql8 spring cloud2021.0.8 spring boot2.7.12 idea2022 步骤 改造Eu…

概述

本文介绍微服务的服务调用和负载均衡,使用spring cloud的loadbalancer及openfeign两种技术来实现。

本文的操作是在微服务的初步使用的基础上进行。

环境说明

jdk1.8

maven3.6.3

mysql8

spring cloud2021.0.8

spring boot2.7.12

idea2022

步骤

改造Eureka为单节点

为了方便测试,把高可用Eureka还原为单节点Eureka。

修改eureka_server的application.yml

spring:application:name: eureka-server
server:port: 9000
eureka:instance:hostname: localhostclient:registerWithEureka: falsefetchRegistry: falseserviceUrl:defaultZone: http://${eureka.instance.hostname}:${server.port}/eureka/server:enable-self-preservation: falseeviction-interval-timer-in-ms: 4000

修改product-service服务和order-service服务的application.yml的Eureka配置如下

eureka:client:service-url:defaultZone: http://localhost:9000/eureka/

spring-cloud-loadbalancer

spring-cloud-loadbalancer和ribbon类似,之前的spring cloud版本eureka内部继承了ribbon ,但spring cloud版本升级后,不再内置ribbon(可查看依赖关系),spring cloud提供了自己的负载均衡的实现,可查看 官方文档

Spring Cloud provides its own client-side load-balancer abstraction and implementation. For the load-balancing mechanism, ReactiveLoadBalancer interface has been added and a Round-Robin-based and Random implementations have been provided for it. In order to get instances to select from reactive ServiceInstanceListSupplier is used. Currently we support a service-discovery-based implementation of ServiceInstanceListSupplier that retrieves available instances from Service Discovery using a Discovery Client available in the classpath.

服务调用

之前服务调用时,使用host:ip拼接成URL的方式进行调用,较为麻烦,使用@LoadBalanced注解后,可以使用微服务的服务名称来进行调用,更加方便。

在创建RestTemplate的时候,申明@LoadBalanced

使用restTemplate调用远程微服务:不需要拼接微服务的URL,用服务名称替换IP地址

修改OrderController.java,使用服务名称代替host:port的形式,避免了之前的使用实例元数据进行拼接。

修改前

product  = restTemplate.getForObject("http://"+host+":"+port+"/product/1", Product.class);

修改后

product  = restTemplate.getForObject("http://service-product/product/1", Product.class);

启动测试

启动eureka、product、order服务

浏览器访问

能访问到数据,说明服务调用成功了。

负载均衡

使用@LoadBalanced注解后,除了方便使用服务名称进行调用之外,更重要的是也实现了服务调用的负载均衡功能。准备两个商品服务,端口号分别为9001、9011,两个商品服务的作用:1.增加系统吞吐率  2.商品服务高可用。

服务架构及流程如下图:

修改product-service的controller

    @Value("${spring.cloud.client.ip-address}") //springcloud自动获取应用的ip地址private String ip;

启动product服务(9001端口)

修改product服务的yml,修改服务端口为9011

复制运行配置得到另一个proudct服务

启动product2服务(9011端口)

查看Eureka Web页面

http://localhost:9000/

看到SERVICE-PRODUCT,有2个在线状态的实例,端口分别是:9001和9011 

启动order服务

分别访问9001和9011

http://localhost:9001/product/1

http://localhost:9011/product/1

两个商品服务均正常

测试负载均衡

访问如下链接2次

http://localhost:9002/order/buy/1

发现实现 第一次访问9001商品服务,第二次访问了9011商品服务,说明实现了客户端的负载均衡

多次刷新访问http://localhost:9002/order/buy/1,发现9001和9011是交替出现,说明默认使用的负载均衡是轮询策略。

OpenFeign

此前的服务调用代码如下:

restTemplate.getForObject("http://service-product/product/1", Product.class);

如果请求参数过多是,拼接URL的方式显得麻烦,可以使用OpenFeign来解决。

OpenFeign 全称 Spring Cloud OpenFeign,它是 Spring 官方推出的一种声明式服务调用与负载均衡组件,它的出现就是为了替代进入停更维护状态的 Feign。

OpenFeign 是 Spring Cloud 对 Feign 的二次封装,它具有 Feign 的所有功能,并在 Feign 的基础上增加了对 Spring MVC 注解的支持。

OpenFeign的使用

order-service操作

1.导入依赖

        <dependency><groupId>org.springframework.cloud</groupId><artifactId>spring-cloud-starter-openfeign</artifactId></dependency>

2.配置调用接口

业务需求:order服务调用product服务

@FeignClient(name = "service-product")
public interface ProductFeignClient {/*** 配置需要调用的微服务接口* @return*/@RequestMapping(value = "/product/{id}", method = RequestMethod.GET)Product findById(@PathVariable("id") Long id);
}

 3.在启动类上激活feign

//激活feign
@EnableFeignClients
public class OrderApplication {

4.通过自动注入的接口调用远程微服务

修改之前的Controller代码

@RestController
@RequestMapping("/order")
public class OrderController {@Autowiredprivate RestTemplate restTemplate;@Autowiredprivate DiscoveryClient discoveryClient;@RequestMapping(value = "/buy/{id}", method = RequestMethod.GET)public Product findById(@PathVariable Long id){Product product = null;product  = restTemplate.getForObject("http://service-product/product/1", Product.class);return product;}}

修改之后的代码

@RestController
@RequestMapping("/order")
public class OrderController {@Autowiredprivate ProductFeignClient productFeignClient;@RequestMapping(value = "/buy/{id}", method = RequestMethod.GET)public Product findById(@PathVariable Long id){Product product = null;//调用微服务product = productFeignClient.findById(id);return product;}}

可以看出,OrderController通过注入ProductFeignClient接口实例,并调用接口方法实现了调用。 可以看出不需要自己构建http请求,就像是调用自身工程的方法调用。如果有多个参数可以传递对象参数,避免了拼接url的麻烦。

测试

启动服务

启动eureka、启动product(启动两个实例:9000和9011)、启动order

浏览器访问

分别访问,确保product服务能正常访问

http://localhost:9001/product/1

http://localhost:9011/product/1

访问order两次

http://localhost:9002/order/buy/1

多次访问,发现9001和9011交替出现,说明实现了负载均衡。

OpenFeign的配置

如果需要配置OpenFeign,在application.yml添加相关配置

配置案例如下:

feign:client:config:feignName: #FeginClient的名称connectTimeout: 5000 #建立链接的超时时长readTimeout: 5000 #读取超时时长loggerLevel: full #Fegin的日志级别errorDecoder: com.example.SimpleErrorDecoder #Feign的错误解码器retryer: com.example.SimpleRetryer #配置重试requestInterceptors: #添加请求拦截器- com.example.FooRequestInterceptor- com.example.BarRequestInterceptordecode404: false #配置熔断不处理404异常#日志配置  #NONE : 不输出日志(高)   #BASIC: 适用于生产环境追踪问题#HEADERS : 在BASIC的基础上,记录请求和响应头信息   #FULL : 记录所有service-product:logger-level: FULL #配置商品服务日志compression:request:enabled: true #开启请求压缩mime-types: text/html,application/xml,application/json #设置压缩的数据类型min-request-size: 2048 #设置触发压缩的大小下限response:enabled: true #开启相应压缩
logging:level:org.example.order.feign.ProductFeignClient: debug #配置具体接口的日志级别

总结

两种服务调用及负载均衡技术:@LoadBalanced方式和OpenFeign的方式。

1.@LoadBalanced方式是借助于RestTemplate方式进行,可以直接使用服务名称来调用,但需要拼接URL。

2.OpenFeign的方式是通过声明接口并注入接口进行调用,避免了拼接URL的麻烦。

完成!enjoy it!

http://www.tj-hxxt.cn/news/67862.html

相关文章:

  • 厦门网站建设报价怎么给自己的公司建立网站
  • 静态网站托管平台推广策划方案范文
  • 用什么程序做网站好网络营销师资格证报名
  • 安卓wordpress太原seo网站排名
  • 没有防盗链的网站电子商务营销方法
  • 阿里云网站备案登陆站长工具ip查询
  • 做端口映射 怎么访问网站佛山外贸seo
  • 潭州学院wordpress网站seo关键词排名
  • dw怎么做自我展示网站知识营销案例
  • 北京 设计网站如何创建一个个人网站
  • 网页设计免费教程重庆企业seo
  • 网站规划与建设重要性理解与体会百度24小时客服电话136
  • 自己做网站怎么选架构免费文件外链网站
  • 用wordpress做的商城上海企业网站seo
  • 独立站怎么运营营销课程培训都有哪些
  • 事业单位网站建设方案书首页排名seo
  • 设计网站 behanceseo网站排名
  • 专业网站制作公司咨询nba排名赛程
  • 网站建设专票是几个税点西安竞价托管公司
  • 溧阳建设集团有限公司网站广告营销策划方案模板
  • 网页设计软件列表html代码seo网站优化培训公司
  • 主流的网站开发技术新闻源软文发布平台
  • 网站如何做下一页珠海网站建设
  • 广州专门做网站的公司国际最新新闻热点事件
  • 网站的qq客服接口怎么做搜索网页
  • 网站做支付需要准备什么进一步优化落实
  • 浪网站制作做网站需要哪些技术
  • 诸暨网站开发汕头seo服务
  • 网站流量是如何计算的泰州seo网络公司
  • 怎么免费建立自己的网站步骤静态网页设计与制作