一:springCloud服务发现者,服务消费者(方志朋《史上最简单的 SpringCloud 教程》专栏读后感)
- 注册服务中心
new–>project–>spring Initializr—>(next)…—>Dependencies(Cloud Discovery Eureka Server)
在入口类处加注解@EnableEurekaServer表明该服务器是一个服务注册中心
@SpringBootApplication
//服务注册中心
@EnableEurekaServer
public class EurekaApplication {public static void main(String[] args) {SpringApplication.run(EurekaApplication.class, args);}
}
配置application.yml
#服务器端口号
server:port: 8761
#向服务中心注册
eureka:client:service-url:defaultZone: http://localhost:8761#eureka.client.register-with-eureka:false(是否向自身注册),eureka.client.fetch-register:false表明该服务器是个eureka serverregister-with-eureka: falsefetch-registry: false
spring:application:name: eureka
- 服务提供者
(创建过程同上)
在入口类加入注解@EnableDiscoveryClient,@EnableEurekaClient表明这是一个eureka client
@SpringBootApplication
@EnableDiscoveryClient
@EnableEurekaClient
//注意:如果单独创建controller类,要放在该入口类的子包下,否则扫描不到
@RestController
public class EurekaClientApplication {public static void main(String[] args) {SpringApplication.run(EurekaClientApplication.class, args);}@Value("${server.port}")String port;@RequestMapping("/hi")public String home(@RequestParam(value = "name", defaultValue = "forezp") String name) {return "来自"+port+"的"+name+"人类,欢迎来到我们的时间";}}
server:port: 8762
eureka:client:service-url:defaultZone: http://localhost:8761/eurekainstance:hostname: clientName
spring:application:name: eureka-client
在pom.xml中加jar包
<dependency><groupId>org.springframework.cloud</groupId><artifactId>spring-cloud-starter-netflix-eureka-client</artifactId>
</dependency>
配置EurekaClientApplication下的小三角里的Edit Configurations–>single instance only(去掉对勾)
,改application.yml里的端口号,改为8763,启动
- 服务消费者(负载均衡)
restTemplate+ribbon实现负载均衡
在pom.xml配置加入以下配置
<dependency><groupId>org.springframework.cloud</groupId><artifactId>spring-cloud-starter-netflix-eureka-client</artifactId></dependency><dependency><groupId>org.springframework.boot</groupId><artifactId>spring-boot-starter-web</artifactId></dependency><!--ribbon:负载均衡客户端--><dependency><groupId>org.springframework.cloud</groupId><artifactId>spring-cloud-starter-netflix-ribbon</artifactId></dependency>
@SpringBootApplication
@EnableEurekaClient
//向服务中心注册
@EnableDiscoveryClient
@RestController
public class DemoApplication {public static void main(String[] args) {SpringApplication.run(DemoApplication.class, args);}//向程序的ioc注入一个bean@Bean//表明这个restTemplated开启负载均衡@LoadBalancedRestTemplate restTemplate(){return new RestTemplate();}
}
创建Service类
@Service
public class HelloService {@Autowiredprivate RestTemplate restTemplate;public String hiService(String name){return restTemplate.getForObject("http://EUREKA-CLIENT/hi?name="+name,String.class);}
}
创建Controller类
@RestController
public class HelloController {@Autowiredprivate HelloService helloService;@GetMapping(value = "/hi")public String hi(@RequestParam String name){return helloService.hiService(name);}}
分别开启服务注册中心,服务提供者(8762,8763),服务消费者,访问http://localhost:8764/hi?name=zy,不断刷新,就会发现页面交替出现,
来自8762的zy人类,欢迎来到我们的时间
来自8763的zy人类,欢迎来到我们的时间
说明已经达到了负载均衡
feign+rest实现负载均衡
在pom.xml加入如下配置
<dependency><groupId>org.springframework.cloud</groupId><artifactId>spring-cloud-starter-openfeign</artifactId>
</dependency>
在入口类加入注解@EnableFeignClients
//通过@FeignClient来指定调用哪个服务
@FeignClient(value = "eureka-client")
public interface SchedualServiceHi {@RequestMapping(value = "/hi",method = RequestMethod.GET)String sayHiFromClientOne(@RequestParam(value = "name")String name);
}
@RestController
public class HiController {@Autowiredprivate SchedualServiceHi schedualServiceHi;@RequestMapping(value = "/hi")public String sayHi(@RequestParam(value = "name")String name){return schedualServiceHi.sayHiFromClientOne(name);}
}
- 断路器
为什么要使用断路器?因为服务与服务之间可以互相调用,如果一个服务宕机,很有可能导致线程阻塞,线程资源被消耗完毕,从而导致雪崩。
一:springCloud服务发现者,服务消费者(方志朋《史上最简单的 SpringCloud 教程》专栏读后感)相关推荐
- 史上最简单的SpringCloud教程 | 第十篇: 高可用的服务注册中心(Finchley版本)
转载请标明出处: http://blog.csdn.net/forezp/article/details/81041101 本文出自方志朋的博客 个人博客纯净版:https://www.fangzhi ...
- 史上最简单的 SpringCloud 教程
关注公众号"风色年代"订阅更多精彩文章,本博大部分文章为转载并已标明原文出处,如有再转敬请保留,请自觉尊重原创作者的劳动成果! https://blog.csdn.net/fore ...
- 史上最简单的SpringCloud教程 | 第三篇: 服务消费者(Feign)
转:https://blog.csdn.net/forezp/article/details/69808079 最新版本: 史上最简单的SpringCloud教程 | 第三篇: 服务消费者(Feign ...
- 史上最简单的 SpringCloud 教程 | 第一篇: 服务的注册与发现Eureka(Finchley版本)
转载请标明出处: http://blog.csdn.net/forezp/article/details/81040925 本文出自方志朋的博客 个人博客纯净版:https://www.fangzhi ...
- 史上最简单的SpringCloud教程 | 第九篇: 服务链路追踪(Spring Cloud Sleuth)(Finchley版本)
转载请标明出处: http://blog.csdn.net/forezp/article/details/81041078 本文出自方志朋的博客 个人博客纯净版:https://www.fangzhi ...
- 史上最简单的 SpringCloud 教程 | 第一篇: 服务的注册与发现(Eureka)
最新Finchley版本请访问: https://www.fangzhipeng.com/springcloud/2018/08/30/sc-f1-eureka/ 或者 http://blog.csd ...
- 史上最简单的SpringCloud教程 | 第十篇: 高可用的服务注册中心
转自:https://blog.csdn.net/forezp/article/details/81041101 文章 史上最简单的 SpringCloud 教程 | 第一篇: 服务的注册与发现(Eu ...
- 史上最简单的SpringCloud教程 | 第四篇:断路器(Hystrix)--有BUG,注意看我的备注
转载请标明出处: http://blog.csdn.net/forezp/article/details/69934399 本文出自方志朋的博客 在微服务架构中,根据业务来拆分成一个个的服务,服务 ...
- 史上最简单的SpringCloud教程 | 第四篇:断路器(Hystrix)--里面有BUG,所以我转载改一下
017年04月09日 21:14:05 阅读数:271535 转载请标明出处: http://blog.csdn.net/forezp/article/details/69934399 本文出自方 ...
- 史上最简单的SpringCloud教程 | 第四篇:断路器(Hystrix)(Finchley版本)
转载请标明出处: http://blog.csdn.net/forezp/article/details/81040990 本文出自方志朋的博客 个人博客纯净版:https://www.fangzhi ...
最新文章
- Java中的main()方法详解
- python calu_Python基本数据类型
- Linux网络模式及远程连接出错排障
- HTML中transform菜鸟,HTML canvas
- jsf 配置_JSF Tomcat配置示例
- jsp压缩html,使用HtmlCompressor压缩JSP编译的Html代码
- GAN网络(Generative Adversarial Networks )
- 微软以75亿美元收购GitHub
- 文字处理技术:与布局相关的功能
- 使用swix反编译swf文件修改版权
- 【备忘】Java菜鸟到大牛学习路线之实战篇
- Windows Server 2012 修复ms17-010漏洞提示 此更新不适用于你的计算机
- css 清除表单样式,css form表单样式清除
- 网络安全笔记2——单钥密码体制
- leetcode第一题:滑雪问题
- 微信公众号-音频接口(上传、下载、辨音)
- 360oauth token是什么意思_京东开放服务平台(JOS)关于token问题汇总(一)
- STM32 OLED显示屏--SPI通信知识汇总
- 黄色——网页效果图设计之色彩索引
- rem等于多少px?