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

怎么做视频平台网站吗外贸网站建设优化

怎么做视频平台网站吗,外贸网站建设优化,网站推广的措施和手段有哪些,wordpress建站模板下载一、概念 使用springcloud将项目拆分成一个一个微服务之后,微服务之间的接口调用就需要通过远程的方式实现,这里将介绍springcloud提供的两个微服务组件来介绍如何进行微服务间的远程接口调用。 1、使用RestTEmplate LoadBalanced来实现远程接口调用及…

一、概念

使用springcloud将项目拆分成一个一个微服务之后,微服务之间的接口调用就需要通过远程的方式实现,这里将介绍springcloud提供的两个微服务组件来介绍如何进行微服务间的远程接口调用。

1、使用RestTEmplate + LoadBalanced来实现远程接口调用及负载均衡

RestTemplate的优点:

  • 支持多种HTTP方法:RestTemplate支持常见的HTTP方法,如GET、POST、PUT、DELETE等,可以根据需要选择合适的方法来发送请求。
  • 提供丰富的请求和响应处理方法:RestTemplate提供了多种方法来处理请求和响应,如添加请求头、设置请求参数、发送请求、获取响应等。开发者可以根据需要选择合适的方法来处理HTTP请求和响应。
  • 支持请求和响应的序列化和反序列化:RestTemplate可以将请求和响应的数据进行序列化和反序列化,支持多种数据格式,如JSON、XML等。开发者可以根据需要选择合适的序列化和反序列化方式。
  • 支持错误处理和异常处理:RestTemplate可以处理HTTP请求过程中的错误和异常,如连接超时、请求失败等。开发者可以根据需要进行错误处理和异常处理。
  • 可扩展性和定制化:RestTemplate提供了一些扩展点和配置选项,可以进行定制化配置。开发者可以根据需要进行扩展和定制,以满足特定的业务需求。

但是RestTemplate没有负载均衡的功能,所以需要配合LoadBalanced来实现负载均衡。

2、使用OpenFeign实现远程接口调用

openFeign的优点:

  • 声明式的API定义:通过使用注解,开发者可以定义和描述服务间的API接口,包括请求方法、路径、参数、请求头等信息。这样可以使得服务间的调用代码更加简洁和易于维护。
  • 自动化的服务发现和负载均衡:OpenFeign集成了服务注册中心,可以自动发现和调用其他微服务。它还支持负载均衡,可以根据配置的负载均衡策略选择合适的服务实例进行调用。
  • 内置的请求和响应拦截器:OpenFeign提供了一些内置的拦截器,可以在请求和响应的不同阶段进行拦截和处理。开发者可以自定义拦截器来实现日志记录、错误处理等功能。
  • 支持多种编码器和解码器:OpenFeign支持多种编码器和解码器,可以处理不同的数据格式,如JSON、XML等。开发者可以根据需要选择合适的编码器和解码器。
  • 整合了Hystrix和Ribbon:OpenFeign与Hystrix和Ribbon等其他Spring Cloud组件集成,可以实现服务的容错和熔断机制,提高系统的可靠性和稳定性。

二、代码实现

1、前提

所有微服务使用springboot搭建,并且使用springcloud的服务注册和发现服务,这里我们使用的是consul

1、将服务注册到consul
server:port: 80
spring:application:name: ordercloud:consul:host: 127.0.0.1port: 8500discovery:service-name: ${spring.application.name}
2、在启动类上添加注解,开启服务发现
@EnableDiscoveryClient
3、远程调用的接口
@RestController
@Slf4j
public class PayController {@Resourceprivate PayService payService;@Operation(summary = "添加支付信息")@PostMapping(value = "/pay/add")public ResultDate addPay(@RequestBody PayDto payDto){Pay pay = new Pay();BeanUtils.copyProperties(payDto,pay);pay.setDeleted((byte) 1);int add = payService.add(pay);return ResultDate.success(add);}
}

2、RestTemplate

1、导入依赖
        <dependency><groupId>org.springframework.cloud</groupId><artifactId>spring-cloud-starter-consul-discovery</artifactId></dependency><dependency><groupId>org.springframework.cloud</groupId><artifactId>spring-cloud-starter-loadbalancer</artifactId></dependency><!--web + actuator--><dependency><groupId>org.springframework.boot</groupId><artifactId>spring-boot-starter-web</artifactId></dependency>

项目中使用了spring-boot-starter-dependencies,所以没有配置版本号,大家根据自己使用的springboot和springcloud版本进行配置即可。

2、使用loadBalanced进行负载均衡
@Configuration
public class RestTempConfig {@Bean@LoadBalancedpublic RestTemplate restTemplate(){return new RestTemplate();}
}

loadbalanced默认的负载均衡算法是通过轮询实现的,底层是通过DiscoveryClient获取所有的微服务名,返回的是个数组,遍历数组即可找到对应的微服务,同时可以根据微服务获取其在线实例数量,最后使用循环取模的方法实现轮询。

springcloud为loadBalanced提供了两个负载均衡的算法,除了轮询外还有随机算法,默认使用的是轮询。

3、编写代码
@RestController
public class OrderController {public static final String PaymentSrv_URL = "http://cloud-payment-service";
//    public static final String PaymentSrv_URL = "http://localhost:8001";@Resourceprivate RestTemplate restTemplate;@GetMapping("/consumer/pay/add")public ResultDate addOrder(@RequestBody PayDto payDto){ResultDate resultDate = restTemplate.postForObject(PaymentSrv_URL + "/pay/add", payDto, ResultDate.class);return resultDate;}
}

从这里我们可以看出使用restTemplate进行远程调用非常方便,只需要调用对应的方法,传入返回值类型和参数即可。

3、OpenFeign

1、导入依赖
        <!--openfeign--><dependency><groupId>org.springframework.cloud</groupId><artifactId>spring-cloud-starter-openfeign</artifactId></dependency><dependency><groupId>org.springframework.cloud</groupId><artifactId>spring-cloud-starter-consul-discovery</artifactId></dependency>
2、编写FeignClient接口
@FeignClient(name ="cloud-payment-service")
public interface PayFeignClient {@PostMapping(value = "/pay/add")public ResultDate addPay(@RequestBody PayDto payDto);
}

使用feignClient进行远程接口调用只需要像声明函数是接口一样,将需要调用的API进行申明,再加上@FeignClient注解即可

需要注意的是:

  1. @FeignClient注解里面需要申明对应的微服务名(与注册的服务名一致)
  2. @XXMapper的url路径要与调用接口的url一致,需要注意我们可能在application.yaml里面配置了统一的请求头server.servlet.context-path或者在定义Controller时使用@RequestMapper定义了统一的请求头地址
  3. 接口定义时要与调用接口拥有相同的参数,并且使用注解控制时需要指明,例如使用@RequestParem时就需要指定对应的参数名:@RequestParem("id")

3、使用FeignClient
@RestController
public class OrderController {@Resourceprivate PayFeignClient payFeignClient;@PostMapping("/consumer/pay/add")public ResultDate addOrder(@RequestBody PayDto payDto){return payFeignClient.addPay(payDto);}
}

从代码上可以看出,与RestTemplate比较,OpenFeign的代码更为简洁,使用起来更加方便,并且OpenFeign自带负载均衡的功能,不需要额外使用LoadBalanced实现负载均衡。所以更加推荐使用OpenFeign进行远程接口调用。

http://www.dinnco.com/news/51920.html

相关文章:

  • 玛卡h5制作官网扬州seo优化
  • 营销型网站建设的目的百度的营销策略
  • 制作网页网站哪个好用福州seo快速排名软件
  • 成都网站推广营销网站推广的基本手段有哪些
  • 一站式服务理念seo公司 彼亿营销
  • 福州微信营销网站建设怎么给公司做网站
  • 陕西网站制作公司哪家好郑州seo技术服务顾问
  • 一级a做爰网站盘多多网盘搜索
  • 织梦网站怎么做投票2021最近最火的关键词
  • 设计素材网站源码网站推广广告
  • 家乐福网上商城怎么配送西安seo黑
  • 阳江人才网阳江招聘网奉化网站关键词优化费用
  • 中小企业营销型网站建设电商平台哪个最好最可靠
  • 怎么建立一个网站网址产品推广策划
  • 做资金盘网站违法吗seo英文怎么读
  • 东莞网页制作免费网站制作百度搜索页面
  • 宁波定制网站建设解决方案seo标题优化裤子关键词
  • 天津市建行网站长春网站快速排名提升
  • 网站的版权信息百度关键词优化平台
  • 丹东电信网站备案软文广告是什么意思
  • 租房网站模板在百度上怎么注册网站
  • 上海3d网站建设营销推广费用方案
  • wordpress自定义发文章界面如何做谷歌seo推广
  • 垂直网站做排名深圳搜索引擎优化收费
  • 做游戏模板下载网站有哪些关键词难易度分析
  • html电影网站模板下载工具seo三人行网站
  • 什么网站可以接单做seo 页面链接优化
  • 做网站用什么语言好百度服务中心
  • 建设银行宁波招聘网站超级软文网
  • 外贸网站logo百度关键词搜索推广