1:之前是用web 现在用spring cloud 建立服务端 用到注解 @EnableEurekaServer
服务端本身是一个client register-with-eureka:false fetchRegistry:false 两个false 表明是server
2:建立客户端 用到的注解 @EnableEurekaClient 这里再用到@Value("${server.port}")
其中核心:spring:application:name:service-hi 这在以后的服务与服务之间相互调用一般都是根据这个name 。
插入依赖注入 控制反转的概念:
那到底是什么东西的“控制”被“反转”了呢?对应到前面的例子,“控制”是指选择GeLi角色扮演者的控制权;“反转”是指这种控制权从《墨攻》剧本中移除,转交到导演的手中。对于软件来说,即是某一接口具体实现类的选择控制权从调用类中移除,转交给第三方决定。
因为IoC确实不够开门见山,因此业界曾进行了广泛的讨论,最终软件界的泰斗级人物Martin Fowler提出了DI(依赖注入:Dependency Injection)的概念用以代替IoC,即让调用类对某一接口实现类的依赖关系由第三方(容器或协作类)注入,以移除调用类对某一接口实现类的依赖。“依赖注入”这个名词显然比“控制反转”直接明了、易于理解。
spring cloud 服务调用方式一 ribbon+restTemplate 用到的注解@Bean @LoadBalanced @EnableDiscoveryClient
//在工程的启动类中,通过@EnableDiscoveryClient向服务中心注册;并且向程序的ioc注入一个bean: restTemplate;并通过@LoadBalanced注解表明这个restRemplate开启负载均衡的功能。
ribbon是一个负载均衡客户端,可以很好的控制htt和tcp的一些行为。Feign默认集成了ribbon。
ribbon 已经默认实现了这些配置bean:
IClientConfig ribbonClientConfig: DefaultClientConfigImpl
IRule ribbonRule: ZoneAvoidanceRule
IPing ribbonPing: NoOpPing
ServerList ribbonServerList: ConfigurationBasedServerList
ServerListFilter ribbonServerListFilter: ZonePreferenceServerListFilter
ILoadBalancer ribbonLoadBalancer: ZoneAwareLoadBalancer
spring cloud 服务调用方式二 Feign 用到的注解 @FeignClient(value="SERVICE-HI",url="http://192.168.1.53:8763") @EnableFeignClients @EnableDiscoveryClient
1:feign采用的是接口加注解
2:feign 整合了ribbon
推荐使用feign
断路由 方式一:ribbon
断路由 用到的注解 @EnableHystrix(在入口填写) @HystrixCommand(fallbackMethod="hiError") hiError 为服务故障的方法
断路由 方式二:feign
用到的注解:@FeignClient(value="SERVICE-HI",fallback= SchedualServiceHiHystric.class)
测试:关掉client 出现sorry name
断路由 hystrix Dashboard 用到的注解 @EnableHystrixDashboard
依赖包:
启动信息 :http://localhost:8764/hystrix.stream