核心内容:
- 构建服务注册中心
- 服务注册于服务发现
- Eureka的基础架构
- Eureka的服务治理机制
- Eureka的配置
服务治理:主要是用来实现各个微服务实例的自动化注册与发现
服务注册:在服务治理框架中,通常会构建一个注册中心,每个服务单元向注册中心登记自己的提供的服务,将主机与端口号、版本号、通信协议等一些信息告诉给注册中心,注册中心按服务名分类组织服务清单。
eg:
另外,服务注册中心还需要以心跳的方式去监测清单中的服务是否可用,若不可用需要从服务清单中踢出
服务发现:由于在服务治理框架下运作,服务间的调用不再通过制定具体的实例地址来实现,而是通过向服务名发起请求调动实现。
步骤:1、调用方向服务注册中心获取所有服务的实例清单
2、轮询取出清单中的一个进行服务调用(负载均衡)
搭建服务注册中心:
1、添加依赖:
<dependencyManagement> <dependencies> <dependency> <groupId>org.springframework.cloud</groupId> <artifactId>spring-cloud-dependencies</artifactId> <version>Finchley.SR1</version> <type>pom</type> <scope>import</scope> </dependency> </dependencies></dependencyManagement> --springboot版本和springCloud版本需要配对哟
<dependency> <groupId>org.springframework.cloud</groupId> <artifactId>spring-cloud-starter-netflix-eureka-server</artifactId></dependency>
2、通过@EnableEurekaServer注解启动一个服务注册中心,提供给其他应用进行对话 3、添加配置
server.port=1111 eureka.instance.hostname=localhost eureka.client.register-with-eureka=false --由于该应用为注册中心,所以设置为false,代表不想注册中心注册自己 eureka.client.fetch-registry=false --由于注册中心的职责就是维护服务实例,它并不需要检索服务,所以也设置为false eureka.client.service-url.defaultZone=http://${eureka.instance.hostname}:${server.port}/eureka/ 4、启动项目访问:http://localhost:1111
注册服务提供者 把一个springBoot应用加入Eureka的服务治理体系中去1、新建一个module2、加入
<dependency> <groupId>org.springframework.cloud</groupId> <artifactId>spring-cloud-starter-netflix-eureka-client</artifactId></dependency>3、在启动类上加上@EnableEurekaClient注解4、添加配置文件
spring.application.name=hello-serviceeureka.client.service-url.defaultZone=http://localhost:1111/eureka/
高可用注册中心 在Eureka的服务治理设计中,所有节点既是服务提供方,也是服务消费方,服务注册中心也不例外。 Eureka Server的高可用实际上就是将自己作为服务,想其他服务注册中心注册自己(相互注册)搭建:
有了多个注册中心之后,修改服务提供者和服务消费者:
eureka.client.service-url.defaultZone=http://localhost:1111/eureka/,http://localhost:1112/eureka/
现在已经有了服务注册中心和服务消费者,现在需要一个服务提供者。服务发现的任务由Eureka的客户端完成,服务消费的任务由Ribbon完成和原来的hello-service基本一致,在依赖中加入
<dependency> <groupId>org.springframework.cloud</groupId> <artifactId>spring-cloud-starter-netflix-ribbon</artifactId></dependency>在配置类中加入RestTemplate,并加上@LoadBalanced用户负载均衡最后,调用hello-service里面的服务
@Autowired private RestTemplate restTemplate; @RequestMapping("/ribbon-consumer") public String helloConsumer(){ return restTemplate.getForEntity("http://hello-service/hello", String.class).getBody(); }
启动ribbon-consumer,请求两次/ribbon-consumer,可以看到在两个控制台一次打印信息
在ribbon-consumer还能看到被调用者信息
一、服务治理:Spring Cloud Eureka
原文地址:https://www.cnblogs.com/culture/p/9543882.html
时间: 2024-11-06 07:28:12