常用组件有:
Eureka 注册中心,
ribbon负载均衡,请求重试,
hystrix :断路器。服务降级,熔断
feign, 集成了ribbon+hystrix,是用于服务之间的调用,并提供了声明式的客户端
zuul;API网关,提供微服务的统一入口,并提供统一的权限验证
config :配置中心,配置文件的统一管理
hystrix dashboard 和 turbine是提供一个hystrix的一个数据监控
**
SpringCloud和dubbo的对比 首先是前者是基于HTTP协议,Rest调用,并且是集成了很多的工具解决微服务中会出现的各种问题,dubbo是只解决远程调用的问题,基于长链接,java序列化调用,也就是pojo是一定要实现序列化接口,
此处插播几条接收参数的注解:
@RequestParam 他是接收表单参数,键值对参数,可以接受get或post提交的参数
@PathVariable 它是用来接胡搜请求路径上的参数
@RequestBody 他是可以接受post请求协议体中的数据,完整的接收协议体中的json数据

首先应该是要先启动 Eureka 的注册中心,添加Eureka依赖,配置yml.xml文件,指定Eureka服务名称,注意Eureka集群之间使用的就是host名称来区分,然后主启动类要声明注解@EnableEurekaServer表示为服务端,Eurake一般会开启双节点互相注册的方式防止其中一台宕机。
客户端进行注册时指定服务端的地址就可以了,
ribbon是提供了一个重试和负载均衡的一个功能,底层是使用的RestTemplate进行的RestApi调用,RestTemplate是SpringBoot所提供的一个Rest远程调用工具,
它的常用方法:
- getForObject() - 执行get请求
- postForObject() - 执行post请求
不使用ribbon的话,使用RestTemplate也是可以使用远程调用的,只不过ribbon封装了这个RestTemplate,
使用ribbon的情况下,主启动类中要在@Bean注解下的RestTemplate添加一个@LoadBalanced 的负载均衡注解,这个注解的作用是会把RestTemplate 实例进行封装,然后创建动态代理对象,把负载均衡的代码切入进去,把请求分发到集群的服务器中
他的重试的操作: 添加依赖,然后在yml中可以设置一些参数,比如更换实例的次数, 当前实例重试的次数(尝试失败就会更换下一个实例)
然后还有主程序中也可以在@bean RestTemplate 中设置请求通常的超时属性
————————————————————————————————————————————————————————————————————————————————-
首先也是先定义一个第三方接口,
item service商品服务的实现:
首先在yml中定义服务的名称:比如他是商品服务,我就可以起名Item-service, 当然这个名字还是非常随意的,然后要主启动类声明一个客户端注解,在Controller中的访问路径设置为服务的ID。
————————————————————————————————————————————————————————————————————————————————-
Hystrix 就是提高一个系统的容错性,添加了降级代码后如果请求失败就会执行降级代码。向客户端响应。
熔断呢就是它是有一个默认的配置就是,一台服务器发生故障的情况下,就有可能会造成一个雪崩效应。熔断呢就是可以快速的断开故障服务,
保护其他服务尽量不受到影响, 熔断条件默认是10秒内如果有二十次请求百分之五十都会失败的话,就会发生熔断,之后的请求都会走一个降级的代码,知道5秒后进入一个半开的状态并且尝试发送一次请求,请求成功,关闭断路器,恢复正常, 请求失败断路器继续保持打开状态
启用hystrix断路器需要再主启动类添加 @EnableCircuitBreaker注解 具体 controller方法名上添加注解指定降级的方法名称例如(@HystrixCommand(fallbackMethod =”getOrderFB”)),就ok
hystrix dashboard 断路器仪表盘可以对熔断降级进行一个监控
feign 声明式客户端接口
微服务应用中,ribbon 和 hystrix 总是同时出现,feign 整合了两者,并提供了声明式消费者客户端
zull的使用参考链接https://cloud.tencent.com/developer/article/1490917
