SpringCloud分布式(一) 服务发现eureka使用详解

1.什么是springcloud?

springCloud是基于SpringBoot的一整套实现微服务的框架。他提供了微服务开发所需的配置管理、服务发现、断路器、智能路由、微代理、控制总线、全局锁、决策竞选、分布式会话和集群状态管理等组件。最重要的是,跟spring boot框架一起使用的话,会让你开发微服务架构的云服务非常好的方便。 SpringBoot旨在简化创建产品级的 Spring 应用和服务,简化了配置文件,使用嵌入式web服务器,含有诸多开箱即用微服务功能。
SpringCloud的关键技术介绍:

  1. eureka 服务注册与发现
  2. zuul api网关 即为服务
  3. config 分布式统一配置中心
  4. Ribbon 负载均衡组件
  5. hystrix 熔断
  6. Feign 声明式服务调用

2.springcloud的优点是什么?

  1. 降低系统的耦合性
  2. 能独立上线,迅速响应需求
  3. 可以支持不同语言不同平台开发。

3.服务发现eureka?

eureka 是分布式注册中心,所有的服务的消费者与服务的提供者都在eureka上进行注册,这样就可以实现相互间的隔离。

4.案例

搭建eureka server
4.1在idea或者sts上建立一个springboot 项目,勾选eureka maven依赖。
4.2 在你的xxxApplication中增加@EnableEurekaServer注解
4.3 修改application.properties 或者aplication.yml配置文件
server.port=8080
spring.application.name=eurekaserver1

启动过程中可能会报错: Cannot execute request on any known server 这个是正常的。

这样一个简单的eurekaserver就启动起来了。
如何去验证它?
访问
http://127.0.0.1:8080/
如图所示:
在这里插入图片描述

服务的提供者

那么接下来我们再来创建一个服务的提供者
4.4同样在idea或者sts上建立一个springboot 项目,勾选【Eureka Discovery】和【Web】依赖。
4.5在XXXAplication中增加@EnableDiscoveryClient注解
4.6新建一个XyfController用于测试
4.7application配置文件
server.port=8081
spring.application.name=restservice1
eureka.client.serviceUrl.defaultZone=http://127.0.0.1:8080/eureka/

Controller文件:

@RestController
@RequestMapping("/xyf")
public class XyfController {

	@RequestMapping("/hello")
	public String hello()
	{
		return "hello";
	}
}

启动后尝试访问http://127.0.0.1:8081/xyf/hello
访问成功

服务的消费者

接下来再来创建一个服务的消费者
4.8同样在idea或者sts上建立一个springboot 项目,勾选【Eureka Discovery】和【Web】以及【Ribbon】依赖。
4.5在XXXAplication中增加@EnableDiscoveryClient注解
4.6在XXXApplication中加入一个提供RestTemplate的Bean的方法
4.7application配置文件
server.port=8082
spring.application.name=testweb1
eureka.client.serviceUrl.defaultZone=http://127.0.0.1:8080/eureka/
4.8编写TestController进行测试

@RestController
@RequestMapping("/test")
public class TestController {
	@Autowired
	private RestTemplate restTemplate;
	@RequestMapping(value="index",method=RequestMethod.GET)
	public String index()
	{
		return restTemplate.getForEntity("http://restservice1/xyf/hello",String.class).getBody();
	}
	
}

4.9编写完毕后启动服务的消费者访问
http://127.0.0.1:8082/test/index
我们通过服务的消费者的接口=>查询eureka服务器server中服务的提供者的位置=>返回服务消费者。
不能通过普通的HttpClient等发这种请求,只能通过消费者RestTemplate等内置接口来访问。

架构图:
在这里插入图片描述

需注意的地方:
EurekaServer的端口要固定,因为别人都向他注册;Web服务器的端口要固定,因为用户要访问他;服务提供者的端口可以随意,因为别人都不是直接和他打交道。设定:eureka.instance.instance-id=spring.application.name:{spring.application.name}:{random.int} 确保实例不重名。

發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章