springCloud是基于SpringBoot的一整套实现微服务的框架。因为它不是一个组件,而是许多组件的集合。他提供了微服务开发所需的配置管理、服务发现、负载均衡、熔断器、断路器、智能路由、微代理、控制总线、全局锁、决策竞选、分布式会话和集群状态管理等组件
SpringCloud的版本命名比较特殊,是按照伦敦地铁站的站名 命名的
Eureka负责管理、记录服务提供者的信息。服务调用者无需自己寻找服务,而是把自己的需求告诉Eureka,然后Eureka会把符合你需求的服务告诉你。
同时,服务提供方与Eureka之间通过“心跳”机制进行监控,当某个服务提供方出现问题,Eureka自然会把它从服务列表中剔除。
这就实现了服务的自动注册、发现、状态监控。
•Eureka:就是服务注册中心(可以是一个集群),对外暴露自己的地址
•提供者:启动后向Eureka注册自己信息(地址,提供什么服务)
•消费者:向Eureka订阅服务,Eureka会将对应服务的所有提供者地址列表发送给消费者,并且定期更新
•心跳(续约):提供者定期通过http方式向Eureka刷新自己的状态
3.1.1 创建springboot项目
3.1.2 选择依赖
3.2.1添加依赖
3.2.2 启动类添加注解:开启Eureka
3.2.3 配置文件
3.2.4 启动服务,并访问:http://127.0.0.1:10086,出现下图界面,至此配置eureka成功
我们现在可以看到注册中心是空的:
下边我们创建服务提供方和服务消费方,并注册到注册中心
3.3.1创建普通springboot项目
3.3.2配置文件添加配置
3.3.3 编写测试代码
3.3.4运行测试访问
3.3.5注册到注册中心
3.3.5.1 pom文件
<dependency>
<groupId>org.springframework.cloud</groupId>
<artifactId>spring-cloud-starter-netflix-eureka-client</artifactId>
</dependency>
<!-- SpringCloud的依赖 -->
<dependencyManagement>
<dependencies>
<dependency>
<groupId>org.springframework.cloud</groupId>
<artifactId>spring-cloud-dependencies</artifactId>
<version>Finchley.RC1</version>
<type>pom</type>
<scope>import</scope>
</dependency>
</dependencies>
</dependencyManagement>
<!-- Spring的仓库地址 -->
<repositories>
<repository>
<id>spring-milestones</id>
<name>Spring Milestones</name>
<url>https://repo.spring.io/milestone</url>
<snapshots>
<enabled>false</enabled>
</snapshots>
</repository>
</repositories>
3.3.5.2启动类添加注解,开启Eureka客户端功能
3.3.5.3配置类配置Eureka注册信息
server:
port: 8082
spring:
datasource:
url: jdbc:mysql://localhost:3306/mydb1?useUnicode=true&characterEncoding=utf8
username: root
password: 123456
driver-class-name: com.mysql.jdbc.Driver
application:
name: service # 应用名称
main:
allow-bean-definition-overriding: true #当遇到同样名字的时候,是否允许覆盖注册
eureka:
client:
service-url: # EurekaServer地址
defaultZone: http://127.0.0.1:10086/eureka
instance:
prefer-ip-address: true # 当调用getHostname获取实例的hostname时,返回ip而不是host名称
ip-address: 127.0.0.1 # 指定自己的ip信息,不指定的话会自己寻找
3.4.1创建普通springboot项目
3.4.2启动类
3.4.3编写测试代码
3.3.4测试
3.4.5注册到注册中心
3.4.5.1pom文件添加配置与上文一致
3.4.5.2启动类添加注解,开启Eureka客户端功能
3.4.5.3配置类配置Eureka注册信息
server:
port: 8080
spring:
application:
name: consumer # 应用名称
eureka:
client:
service-url: # EurekaServer地址
defaultZone: http://127.0.0.1:10086/eureka
instance:
prefer-ip-address: true # 当其它服务获取地址时提供ip而不是hostname
ip-address: 127.0.0.1 # 指定自己的ip信息,不指定的话会自己寻找
3.4.5.4修改测试代码
@RestController
@RequestMapping("/consume")
public class ConsumerController {
@Autowired
private RestTemplate restTemplate;
@Autowired
private DiscoveryClient discoveryClient;
@GetMapping
public String consume(@RequestParam("id") String id) {
//1、 根据user-service获取user-serivce 的集群的信息
List<ServiceInstance> instances = discoveryClient.getInstances("service");
//2、由于我们没有集群,只有一个,所以直接取出第一个
ServiceInstance instance = instances.get(0);
//3、拼接URL
String url = "http://"+instance.getHost()+":"+instance.getPort()+"/user/"+id;
// 使用restTemplate发起请求
ResponseEntity<String> entity = restTemplate.getForEntity(url, String.class);
// 获取返回对象
String body = entity.getBody();
return body;
}
}
3.4.5.5运行测试
两个注册信息
服务消费方测试
至此Springcloud注册中心入门完成!
了解跟多查看专业文档:
方志朋Springcloud入门