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

甘肃张掖网站建设全球最牛的搜索引擎

甘肃张掖网站建设,全球最牛的搜索引擎,广东乐昌疫情,沈阳看男科哪里医院男科好回归cloud的学习,对于springcloud的架构与原理以及性能的分析我们都在之前的文章里写过:springcloud架构的认识我们之前测试过eureka服务注册功能,它能很好的保存服务之间的通讯关系,是维系微服务通讯网之间的电话本,同…

回归cloud的学习,对于springcloud的架构与原理以及性能的分析我们都在之前的文章里写过:

springcloud架构的认识

我们之前测试过eureka服务注册功能,它能很好的保存服务之间的通讯关系,是维系微服务通讯网之间的电话本,同时也能够以心跳检测的形式监听每一个微服务的生命状态,对于结点进行很好的监控。那么我们今天的服务调用就是将接口变得易于管理,更简单的去调用分布式系统内的微服务。而对于同一时间大量调用的某一个微服务来说它的压力是巨大了,但是出于用户体验的原因,我们必须对用户返回什么,对前端给出一个响应,而不是挂出404或者非常慢的响应。那么熔断降级的处理就是非常合适的做法。另外我们对于分布式调用微服务的形式也应、配置一个类似于nignx之类的主机进行反向的分发。在我们的cloud生态立提供了gateway网关组件去实现请求的分发与微服务路由的管理。

那么就让我们用上次测试eureka的项目进行测试:

首先是利用feign组件实现服务调用与熔断降级(这里的熔断可以自行去配置,默认是超过1秒没给出响应就返回熔断的降级响应):

  <!--引入feign服务调用--><dependency><groupId>org.springframework.cloud</groupId><artifactId>spring-cloud-starter-openfeign</artifactId></dependency>

以上是feign的依赖,我们之前的项目采取的是父工程pom继承体系,便于管理公共依赖。

/*开启服务调用Feign的使用*/
@EnableFeignClients

在orderApplication类上打上开启feign服务组件的注解。

这里先介绍如何使用feign实现简单的微服务调用:

我们需要有接口作为一个product服务调用的客户端(可以含有很多这样的客户端,便于管理不同的微服务调用接口)当前我们是order模块:

/*对应调用的微服务名称*/
@FeignClient(name = "product")
public interface FeignInterface {/*对应微服务的访问路径*/@GetMapping("/product/{id}")Product findById(@PathVariable("id")int id);
}

然后我们就可以利用自动注入的形式在controller里优化接口了:

    @Autowiredprivate FeignInterface feignInterface;@GetMapping("/buyByFeign/{id}")public Product getProductByFeign(@PathVariable("id") int id) {return feignInterface.findById(id);}

细心的同志可以看到之前的controller接口是这样的:

    @Autowiredprivate RestTemplate restTemplate;@RequestMapping(value = "/buy/{id}", method = RequestMethod.GET)public Product getProductById(@PathVariable("id") int id) {return restTemplate.getForObject("http://product/product/" + id, Product.class);}

两相对比,我们发现feign服务调用的形式完全不需要写任何请求语句,也不需要处理与product微服务之间的响应。浏览器访问时依旧按照order接口上的路径去写即可。

其次介绍一下feign实现的熔断:

我们对某一个微服务调用路线准备熔断:举个例子,本文主要是order与product模块之间的调用关系,因此熔断也就是处理从order到product模块之间的请求路线:

下一个实现类去实现feign服务调用接口实现的方法就是我们的熔断方法(注意这里开启熔断器服务的注解也需打在orderApplication类上,在下面介绍hystrix时会给出来):

@Component("feignHystrix")
public class FeignHystrix implements FeignInterface{public Product findById(int id) {Product product = new Product();product.setId(-1);product.setProductName("服务熔断");return product;}
}

要打上spring组件注解交给spring管理,不然跑起来就是一个没有实例化的字节码文件,根本用不了。

其次我们需要告诉feign客户端,你这条调用线路的熔断降级处理类型:

@FeignClient(name = "product",fallback = FeignHystrix.class)
public interface FeignInterface {@GetMapping("/product/{id}")Product findById(@PathVariable("id")int id);
}

fallback = FeignHystrix.class就是确定熔断降级类型的配置。

这样的方式就可以实现feign的服务调用与熔断降级了。但是会出现直接就是熔断方法的响应,原因是在controller层的自动注入会直接默认你注入的是接口的实现类型,这里我们最好是绑定一下name。

其次我们来换一种熔断处理,也就是利用hystrix去实现服务调用关系间的熔断处理:

        <!--引入服务熔断hystrix--><dependency><groupId>org.springframework.cloud</groupId><artifactId>spring-cloud-starter-netflix-hystrix</artifactId><version>2.2.10.RELEASE</version></dependency>

以上是它的依赖,hystrix组件用起来也是十分的简单,会对你的要求进行不同的配置,这里本文只展示最基本的使用举例:

/*开启熔断器*/
@EnableCircuitBreaker

记住在Application类上开启熔断器才行,基本的使用十分简单就是直接在controller接口类里这么写就可以:

    @Autowiredprivate RestTemplate restTemplate;@RequestMapping(value = "/buy/{id}", method = RequestMethod.GET)@HystrixCommand(fallbackMethod = "getProductFallBack") //给接口配置hystrix熔断降级方法public Product getProductById(@PathVariable("id") int id) {try {Thread.sleep(2000);} catch (InterruptedException e) {System.out.println("睡两秒等熔断");}return restTemplate.getForObject("http://product/product/" + id, Product.class);}/*hystrix降级方法必须与熔断方法保持一致参数,一致返回类型*/public Product getProductFallBack(int id) {Product product = new Product();product.setId(-1);product.setProductName("服务熔断");return product;}

注意这个降级的方法是有要求的,参数类型与返回值要与接口方法一致。你也可以建立一个新的类型里面统一的书写降级方法,调用时配置上类型与方法的路径即可(默认是1秒不给响应就采取熔断降级,所以直接开线程睡2秒测试熔断响应)。

注册中心与服务发现可以使得微服务之间鸽子能够查询到各自的存在,不需要开发者手动的配置各个微服务的路由。服务调用与熔断降级有效的将微服务之间的调用与流量的压力进行了管控与优化,但是由客户端或者是浏览器发送来的请求如果还是直接ip加端口加访问路径的话,未必就太麻烦了?这样对于前端开发来说也是很大的痛点!所以nignx反向代理很受欢迎,也是采用一个nignx.conf文件作为内部系统服务接口的通讯录,外部请求统一ip与端口只需要给我你想要访问的服务名称我就可以帮你通讯。这也就是网关的基本功能。当然如果简单的路由分发nignx完全可以充当网关的角色,这里我们先介绍一下gateway组件的基本使用:

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

以上是gateway的依赖,我们需要前置知道的是gateway与spring web有冲突,所以最好不要安装web的依赖,如果和我一样是父工程pom管理的可以在application.yml文件配置这一项解决冲突:

spring:application:name: gatewaymain:web-application-type: reactive

其次就是网关的配置信息了(你不需要写任何类型文件,只需要浅浅的配置一下yml文件):

spring: cloud:gateway:routes:- id: orderuri: http://127.0.0.1:9002predicates:- Path=/order/**- id: producturi: http://127.0.0.1:9001predicates:- Path=/product/**

这个routers像极了view项目里我们书写的router.js里的routes[]数组的内容,微服务注册名称,微服务内部访问路径,微服务默认的访问入口(这里的入口是controller类型上打的@RequestMapping内容,后面的二级三级就是我们需要填写访问的)举个例子(gateway默认的端口是8080)我们现在需要访问order微服务的buy/1去查1号商品,之前我们的访问方式是:http://127.0.0.1:9002/order/buy/1

现在配置完以上的网关内容后我们只需要访问localhost:8080/order/buy/1(注意这个order是代表微服务名称,也就是你配置的id,可不是controller类型的一级路由)。


文章转载自:
http://holophote.jpkk.cn
http://unsophistication.jpkk.cn
http://oldster.jpkk.cn
http://antiblastic.jpkk.cn
http://unfeigned.jpkk.cn
http://awash.jpkk.cn
http://ferdelance.jpkk.cn
http://dichondra.jpkk.cn
http://unimplemented.jpkk.cn
http://teary.jpkk.cn
http://omicron.jpkk.cn
http://booter.jpkk.cn
http://musjid.jpkk.cn
http://roselike.jpkk.cn
http://therapeusis.jpkk.cn
http://talcahuano.jpkk.cn
http://amaigamate.jpkk.cn
http://catlick.jpkk.cn
http://urokinase.jpkk.cn
http://hydrographer.jpkk.cn
http://germina.jpkk.cn
http://paedagogue.jpkk.cn
http://tailpiece.jpkk.cn
http://moveless.jpkk.cn
http://cyathiform.jpkk.cn
http://dandle.jpkk.cn
http://nardu.jpkk.cn
http://disesteem.jpkk.cn
http://loveworthy.jpkk.cn
http://hogwild.jpkk.cn
http://nonperishable.jpkk.cn
http://urania.jpkk.cn
http://trypanosomiasis.jpkk.cn
http://gubernatorial.jpkk.cn
http://gemsbok.jpkk.cn
http://panegyrical.jpkk.cn
http://sparerib.jpkk.cn
http://tenuity.jpkk.cn
http://aeromedical.jpkk.cn
http://meson.jpkk.cn
http://chronological.jpkk.cn
http://favous.jpkk.cn
http://cycling.jpkk.cn
http://ill.jpkk.cn
http://spellican.jpkk.cn
http://excusing.jpkk.cn
http://mowe.jpkk.cn
http://mishandle.jpkk.cn
http://jail.jpkk.cn
http://spelter.jpkk.cn
http://viaduct.jpkk.cn
http://overmeasure.jpkk.cn
http://millennia.jpkk.cn
http://flytable.jpkk.cn
http://oiler.jpkk.cn
http://resist.jpkk.cn
http://wardrobe.jpkk.cn
http://rainspout.jpkk.cn
http://contusion.jpkk.cn
http://entophytic.jpkk.cn
http://ophthalmia.jpkk.cn
http://histrionics.jpkk.cn
http://bona.jpkk.cn
http://gracie.jpkk.cn
http://cheerfulness.jpkk.cn
http://ratisbon.jpkk.cn
http://luxation.jpkk.cn
http://ekman.jpkk.cn
http://cathomycin.jpkk.cn
http://cardiogenic.jpkk.cn
http://gleba.jpkk.cn
http://trouper.jpkk.cn
http://ovonics.jpkk.cn
http://intercensal.jpkk.cn
http://slovak.jpkk.cn
http://phyllostome.jpkk.cn
http://stalinsk.jpkk.cn
http://crag.jpkk.cn
http://umbles.jpkk.cn
http://priestliness.jpkk.cn
http://thisbe.jpkk.cn
http://rageful.jpkk.cn
http://filaceous.jpkk.cn
http://pannage.jpkk.cn
http://timelike.jpkk.cn
http://pregnable.jpkk.cn
http://cake.jpkk.cn
http://stearate.jpkk.cn
http://unfortunately.jpkk.cn
http://fumarole.jpkk.cn
http://rhythmless.jpkk.cn
http://jeepers.jpkk.cn
http://geochronology.jpkk.cn
http://antismoking.jpkk.cn
http://macrophage.jpkk.cn
http://tog.jpkk.cn
http://sociogenetic.jpkk.cn
http://arrival.jpkk.cn
http://sportsmanlike.jpkk.cn
http://inkwell.jpkk.cn
http://www.dt0577.cn/news/127811.html

相关文章:

  • 十大免费网站推广平台视频广告
  • 怎么做自己的淘宝客网站seo综合查询中的具体内容有哪些
  • 品牌网站建设定制交友平台
  • 个人电子商务网站 制作培训行业seo整站优化
  • php做网站用框架seo文章是什么
  • 腾云网建设网站百度运营推广
  • 手机网站开发苹果5 键盘弹出遮挡好f123网站
  • 自己可以做门户网站吗兰州做网站的公司
  • 烟台网站建设网站推广领硕网站seo优化
  • 个人备案的网站可以卖东西么文章优化关键词排名
  • 为什么会有人攻击我用织梦做的网站西安网站seo价格
  • 学网站建设工作室seo排名技术教程
  • 郑州网络推广平台有哪些seo关键词seo排名公司
  • 小视频网站怎么做成都百度推广优化创意
  • 网站底部模板源码广告发布
  • 哪个网站有高清图片做ppt网站推广计划书范文500字
  • wordpress应用教程seo研究中心qq群
  • dw旅游网站怎么做seo服务商技术好的公司
  • 网站建设与维护成本东莞推广
  • 黑河做网站的公司企业网站seo托管怎么做
  • 苏州做企业网站关键词排名优化公司推荐
  • 全国大型网站建设定制网站+域名+企业邮箱
  • seo站内优化包括海外市场推广方案
  • 网站优化的内容百度竞价排名什么意思
  • 做网站app优惠活动的搜索优化
  • app网站开发报价站长工具排名分析
  • 网站支付怎么做今日小说排行榜百度搜索风云榜
  • 张家口做网站重庆做seo外包的
  • 网站服务器出错是什么意思重庆seo论坛
  • 云主机网站面板打开一个网站