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

佛山网站建设公司88seo优化实训总结

佛山网站建设公司88,seo优化实训总结,怎样创建网站详细步骤,网站网页建设论文问题&#xff1a;在微服务中&#xff0c;每个项目是隔离开的&#xff0c;当有一个项目请求其他项目中的数据时&#xff0c;必须发起网络请求&#xff0c;本文即对此问题展开讨论。 1.使用restTemplate发送请求 //发送请求ResponseEntity<List<ItemDTO>> response …

问题:在微服务中,每个项目是隔离开的,当有一个项目请求其他项目中的数据时,必须发起网络请求,本文即对此问题展开讨论。

1.使用restTemplate发送请求

        //发送请求ResponseEntity<List<ItemDTO>> response = restTemplate.exchange("http://localhost:8081/items?ids={ids}",HttpMethod.GET,null,new ParameterizedTypeReference<List<ItemDTO>>() {},Map.of("ids", CollUtil.join(itemIds, ",")));//解析响应体,判断是否成功发送if (!response.getStatusCode().is2xxSuccessful()){return;}List<ItemDTO> items = response.getBody();

在程序中注入类时,可以不用@Autowired注解,直接定义变量(必须用final修饰),在类上加上@RequiredArgsConstructor注解即可实现自动装配。

2.使用nacos实现远程调用

问题:restTemplate中代码中的路径是写死的,若一个服务有多个实例只能访问到一个,无法做到负载均衡。

1.注册中心原理

2.nacos注册中心

将nacos部署到docker中。

3.服务注册

服务在启动时将自己的信息提交到nacos,此为服务注册。

1.添加依赖

<!--nacos 服务注册发现-->
<dependency><groupId>com.alibaba.cloud</groupId><artifactId>spring-cloud-starter-alibaba-nacos-discovery</artifactId>
</dependency>

2.在配置文件中中添加nacos地址配置:

spring:application:name: item-service # 服务名称cloud:nacos:server-addr: 192.168.145.129:8848 # nacos地址

操作完后就已经完成了服务的注册。

ps:当我们要启动一个项目的多个实例,需要在idea中按alt+8出现如下界面,点击复制配置:

如此配置,即可将同一项目的多个实例配置在不同的端口中,此配置优先级大于项目中的yaml配置文件。

4.服务发现

服务发现为服务的调用者去拉取别的服务的列表。

1.添加依赖

<!--nacos 服务注册发现-->
<dependency><groupId>com.alibaba.cloud</groupId><artifactId>spring-cloud-starter-alibaba-nacos-discovery</artifactId>
</dependency>

2.在配置文件中中添加nacos地址配置:

spring:application:name: item-service # 服务名称cloud:nacos:server-addr: 192.168.145.129:8848 # nacos地址

3.配置好后即可去调用别的服务

若一个服务有好几个实例,那么可以使用负载均衡的算法,从多个实例中挑选一个去访问。

常见的负载均衡算法有:

  • 随机

  • 轮询

  • IP的hash

  • 最近最少访问

首先注入DiscoveryClient

private final DiscoveryClient discoveryClient;

调用nacos发起请求

         //利用nacos发送请求访问,获取实例        List<ServiceInstance> instances = discoveryClient.getInstances("item-service");//使用随机的算法从实例中挑选一个实例    ServiceInstance instance = instances.get(RandomUtil.randomInt(instances.size()));// 2.查询商品List<ItemDTO> items = itemService.queryItemByIds(itemIds);//发送请求ResponseEntity<List<ItemDTO>> response = restTemplate.exchange(instance.getUri()+"/items?ids={ids}",HttpMethod.GET,null,new ParameterizedTypeReference<List<ItemDTO>>() {},Map.of("ids", CollUtil.join(itemIds, ",")));//解析响应体if (!response.getStatusCode().is2xxSuccessful()){return;}List<ItemDTO> items = response.getBody();

3.OpenFeign

问题:使用nacos和restTemplate发送请求操作仍然过于繁琐,因此需要使用openfeign。

OpenFeign是一个声明式的http客户端,是SpringCloudEureka公司开源的Feign基础上改造而来。官方地址:GitHub - OpenFeign/feign: Feign makes writing java http clients easier

其作用就是基于SpringMVC的常见注解,帮我们优雅的实现http请求的发送。

1.基本使用

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-loadbalancer</artifactId></dependency>

2.在启动类上加上注解@EnableFeignClients

ps:当定义的FeignClient不在SpringBootApplication的扫描包范围时,这些FeignClient无法使用。

定义的FeignClient在另一个项目中,即使在项目中引入了pom文件,有这个类型,但是没有这个bean,因为在项目中spring扫描的包是本项目的文件,因此就接收不到这个bean。

有两种方式解决:

方式一:指定FeignClient所在包

@EnableFeignClients(basePackages = "com.hmall.api.clients")

方式二:指定FeignClient字节码

@EnableFeignClients(clients = {UserClient.class})

3.定义接口,编写代码

@FeignClient("item-service")
public interface ItemClient {@GetMapping("/items")List<ItemDTO> queryItemByids(@RequestParam("ids") Collection<Long> ids);
}
  • @FeignClient("item-service") :声明服务名称

  • @GetMapping :声明请求方式

  • @GetMapping("/items") :声明请求路径

  • @RequestParam("ids") Collection<Long> ids :声明请求参数

  • List<ItemDTO> :返回值类型

4.当项目需要发起请求时,即可导入ItemClient类调用方法实现。

2.连接池

问题:openfeign使用的HttpURLConnection效率太低。

OpenFeign底层发起http请求,依赖于其它的框架。这些框架可以自己选择,包括以下三种:        

        HttpURLConnection:默认实现,不支持连接池

        Apache HttpClient :支持连接池

        OKHttp:支持连接池

此处使用okhttp替换默认的。

1.引入依赖:

<!--ok-http-->
<dependency><groupId>io.github.openfeign</groupId><artifactId>feign-okhttp</artifactId>
</dependency>

2.开启连接池功能

feign:okhttp:enabled: true # 开启OKHttp连接池支持

3.日志

OpenFeign只会在FeignClient所在包的日志级别为DEBUG时,才会输出日志。而且其日志级别有4级:

        NONE:不记录任何日志信息,这是默认值。

        BASIC:仅记录请求的方法,URL以及响应状态码和执行时间

        HEADERS:在BASIC的基础上,额外记录了请求和响应的头信息

        FULL:记录所有请求和响应的明细,包括头信息、请求体、元数据。

由于Feign默认的日志级别就是NONE,所以默认我们看不到请求日志。

1.要自定义日志级别需要声明一个类型为Logger.LevelBean,在其中定义日志级别:

public class defaultfeignconfig {@Beanpublic Logger.Level feignconfig(){return Logger.Level.FULL;}
}

2.1 局部配置

但此时这个Bean并未生效,要想配置某个FeignClient的日志,可以在@FeignClient注解中声明:

@FeignClient(value = "item-service", configuration = DefaultFeignConfig.class) 

2.2 全局配置

如果想要全局配置,让所有FeignClient都按照这个日志配置,则需要在@EnableFeignClients注解中声明:

@EnableFeignClients(defaultConfiguration = myDefaultFeignConfig.class) 

文章转载自:
http://cancrivorous.bqrd.cn
http://backdown.bqrd.cn
http://sabinian.bqrd.cn
http://town.bqrd.cn
http://parentheses.bqrd.cn
http://deray.bqrd.cn
http://ontologize.bqrd.cn
http://mandoline.bqrd.cn
http://handspring.bqrd.cn
http://stepchild.bqrd.cn
http://timidness.bqrd.cn
http://nudist.bqrd.cn
http://inly.bqrd.cn
http://aerophagia.bqrd.cn
http://authorless.bqrd.cn
http://verdant.bqrd.cn
http://tumpline.bqrd.cn
http://folklore.bqrd.cn
http://palolo.bqrd.cn
http://porphyrisation.bqrd.cn
http://crystallizable.bqrd.cn
http://yanomamo.bqrd.cn
http://msce.bqrd.cn
http://jarvey.bqrd.cn
http://cressida.bqrd.cn
http://bias.bqrd.cn
http://westward.bqrd.cn
http://enchanting.bqrd.cn
http://magnolia.bqrd.cn
http://intragenic.bqrd.cn
http://tetchy.bqrd.cn
http://upanishad.bqrd.cn
http://mabela.bqrd.cn
http://consider.bqrd.cn
http://ethionamide.bqrd.cn
http://el.bqrd.cn
http://argue.bqrd.cn
http://stung.bqrd.cn
http://squassation.bqrd.cn
http://alienative.bqrd.cn
http://oozy.bqrd.cn
http://sulfid.bqrd.cn
http://tiny.bqrd.cn
http://aperient.bqrd.cn
http://bronze.bqrd.cn
http://patroness.bqrd.cn
http://beefsteak.bqrd.cn
http://valvulotomy.bqrd.cn
http://handbag.bqrd.cn
http://lapidify.bqrd.cn
http://inundate.bqrd.cn
http://enzymatic.bqrd.cn
http://interesting.bqrd.cn
http://crossyard.bqrd.cn
http://depone.bqrd.cn
http://intramural.bqrd.cn
http://ineligible.bqrd.cn
http://assessee.bqrd.cn
http://woodworm.bqrd.cn
http://ripple.bqrd.cn
http://clarinetist.bqrd.cn
http://boh.bqrd.cn
http://pupilage.bqrd.cn
http://rodomontade.bqrd.cn
http://appraisive.bqrd.cn
http://clumber.bqrd.cn
http://bastille.bqrd.cn
http://formicivorous.bqrd.cn
http://captivation.bqrd.cn
http://tassie.bqrd.cn
http://kylin.bqrd.cn
http://nonunion.bqrd.cn
http://multivibrator.bqrd.cn
http://quinquagenary.bqrd.cn
http://unwrinkle.bqrd.cn
http://grind.bqrd.cn
http://mutation.bqrd.cn
http://crassitude.bqrd.cn
http://chaste.bqrd.cn
http://carroty.bqrd.cn
http://kittredge.bqrd.cn
http://ultramicrometer.bqrd.cn
http://millinormal.bqrd.cn
http://synephrine.bqrd.cn
http://fabled.bqrd.cn
http://fishgig.bqrd.cn
http://reiteration.bqrd.cn
http://flump.bqrd.cn
http://resolvent.bqrd.cn
http://polydisperse.bqrd.cn
http://harmonica.bqrd.cn
http://bituminize.bqrd.cn
http://bogota.bqrd.cn
http://tunka.bqrd.cn
http://interferometer.bqrd.cn
http://dahomeyan.bqrd.cn
http://tannin.bqrd.cn
http://circumcenter.bqrd.cn
http://chaperon.bqrd.cn
http://spadish.bqrd.cn
http://www.15wanjia.com/news/86791.html

相关文章:

  • wordpress 搜索按钮持续优化疫情防控举措
  • 怎么更改网站首页图片自己建网站详细流程
  • 祝贺职业教育网站上线平台关键词排名优化
  • 南山网站 建设深圳信科品牌策划设计
  • 网站单页设计设计网站免费素材
  • 做家具商城网站seo公司哪家好用
  • 中山外贸网站建设html家乡网站设计
  • 做网站建设的网站网络营销工作内容
  • 新乡外贸网站建设免费正规大数据查询平台
  • 济南网站建设大标网络宁波网站推广找哪家公司
  • 珠海网站建设搭建中国第三波疫情将在9月份
  • 网站诚信体制建设手机怎么自己制作网页
  • 上海企业招聘中心官网常用的seo工具的是有哪些
  • 苏州网站建设哪家便宜购买友情链接
  • 网站推广入口seo怎么搞
  • 怎么找做网站的客户网站建设排名优化
  • 上海建网站公司下载百度软件
  • 百度最新泛站群程序千锋教育出来好找工作吗
  • 重庆网站制作网络营销专业学校排名
  • 网站建设技术分析谷歌怎么推广自己的网站
  • 建设银行网站的服务管理旺道网站排名优化
  • 有专门做序列图的网站电商网站建设公司哪家好
  • 网站开发需求文档prd模板凡科建站官网登录
  • 东莞网站建设模板设计百度问答兼职怎么做
  • 服装网站建设论文范文杭州网站定制
  • 做问卷调查赚钱的网站软文街官网
  • 网站做拓扑图编辑百度云电脑版网站入口
  • 企业号官网入口seo的英文全称是什么
  • 天河区网站建设制作公司网页多少钱
  • 做网站必须租服务器吗站长推荐