springCloud微服务主要组件:
- Eureka:注册中心,分为客户端,服务端
- Ribbon :负载均衡客户端,可以很好的控制htt和tcp的一些行为
- Feign:是一个声明式的伪Http客户端,它使得写Http客户端变得更简单,Feign默认集成了Ribbon,并和Eureka结合,默认实现了负载均衡的效果。(所以用Feign就够了,比Ribbon用法简单)
- Hystrix:断路器,当某个服务挂掉,访问不到时,较底层的服务如果出现故障,会导致连锁故障。当对特定的服务的调用的不可用达到一个阀值(Hystric 是5秒20次) 断路器将会被打开,直接返回错误提示,不会一直继续访问,等待相应。
个人理解:
ribbon(Feign)作用:比如之前有个订单服务orderServer端口为8181的模块注册到Eureka上,
以前用户下单都是调用的orderServer:8181模块的服务,处理业务逻辑的代码
如果现在下单用户比较多,一个订单服务处理不过来,就需要拷贝一份orderServer:8181修改端口为orderServer:8282也注册到Eureka,这样处理下单逻辑,只需要访问ribbon,通过ribbon来分权重,调用orderServer:8181还是调用orderServer:8282
(以前注册到Eureka的Application为
Application | AMIs | Availability Zones | Status |
---|---|---|---|
ORDERSERVER |
n/a (1) | (1) | UP (1) - DESKTOP-6R85L0K:orderServer :8181 |
,添加orderServer:8282服务后Application为
)
- 需要用的的组件上Spring Cloud Netflix的Eureka ,eureka是一个服务注册和发现模块。Eureka Server
//main启动类注解表明是eureka server @SpringBootApplication @EnableEurekaServer //application.yml //eureka注册中心端口 server: port: 8761 //通过eureka.client.registerWithEureka:false和fetchRegistry:false来表明自己是一个eureka server. //defaultZone为eureka客户端注册的地址 eureka: instance: hostname: localhost client: registerWithEureka: false fetchRegistry: false serviceUrl: defaultZone: http://${eureka.instance.hostname}:${server.port}/eureka/
- 其它组件都作为客户端注册到Eureka Server服务上。 Eureka Client
//main方法启动类加上 @SpringBootApplication @EnableEurekaClient //application.yml //eureka注册中心地址 eureka: client: serviceUrl: defaultZone: http://localhost:8761/eureka/ //当前服务端口和注册在eureka中心的服务名字,这个很重要,这在以后的服务与服务之间相互调用一般都是根据这个name server: port: 8763 spring: application: name: service-hi