我们已经搭建好了 服务提供方 yuanxion-service-provider  和 服务调用方 yuanxion-service-consumer .

其中,
1.服务提供方 yuanxion-service-provider  是一个提供了 根据id查询用户信息 功能的 微服务。
2.服务调用方 yuanxion-service-consumer 是一个通过通过RestTemplate远程调用yuanxion-service-provider 的调用者。

这里面有没有存在扫描问题?

1.在consumer中,我们把url地址硬编码到了代码中,不方便后期维护
   如下图:

2.consumer需要记忆provider的地址,如果出现变更,可能得不到通知,地址将失效

3.provider只有1台服务,不具备高可用性 (即便provider形成集群,consumer还需自己实现负载均衡 )

4.consumer不清楚provider的状态,服务宕机也不知道

 

上面这些,其实就是分布式服务必须要面临的问题:

  1. 服务管理
    如何自动注册和发现
    如何实现状态监管
    如何实现动态路由
  2. 服务如何实现负载均衡
  3. 服务如何实现容灾问题
  4. 服务如何实现统一配置 (多台服务器改配置)

这些问题,SpringCloud都将解决!

下面来试一下SpringCloud的组件:Eureka

首先,什么是Eureka呢?它是一个服务注册中心
打个比方,Eureka服务注册中心,就好像一个中介(也可以是一个中介平台
服务提供方,向Eureka注册自己的信息(地址,提供的服务)
消费者(服务调用者),向Eureka请求服务,Eureka会 将对应服务的  服务提供方的 地址列表 发给消费者,并且定期更新
心跳(续约),服务提供者,定期通过http方式向Eureka刷新自己的状态。

大概了解了Eureka是什么之后,我们来个Eureka的入门案例!

 搭建一个项目,启动一个EurekaServer;
项目依然可以用Spring提供的脚手架快速搭建,也可以自己搭建。
快速搭建:


快速搭建时,要选则下面这个:

SpringBoot版本记得选择2.0.6

后面Finish就可以了。
注意pom文件里的,下面一个的作用是 统一管理依赖版本号  :

(截图的properties里少了两个字符集的,大家可参照下面的pom.xml的代码加入)

自己搭建的话,这里给出pom.xml文件
(快速搭建的,搭建完也可以对照一下这个pom.xml文件,避免有什么错误)

<?xml version="1.0" encoding="UTF-8"?>
<project xmlns="http://maven.apache.org/POM/4.0.0" xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"
	xsi:schemaLocation="http://maven.apache.org/POM/4.0.0 https://maven.apache.org/xsd/maven-4.0.0.xsd">
	<modelVersion>4.0.0</modelVersion>
	<parent>
		<groupId>org.springframework.boot</groupId>
		<artifactId>spring-boot-starter-parent</artifactId>
		<version>2.0.6.RELEASE</version>
		<relativePath/> <!-- lookup parent from repository -->
	</parent>
	<groupId>cn.yuanxion.eureka</groupId>
	<artifactId>yuanxion-eureka</artifactId>
	<version>0.0.1-SNAPSHOT</version>
	<name>yuanxion-eureka</name>
	<description>Demo project for Spring Boot</description>

	<properties>
		<project.build.sourceEncoding>UTF-8</project.build.sourceEncoding>
		<project.reporting.outputEncoding>UTF-8</project.reporting.outputEncoding>
		<java.version>1.8</java.version>
		<spring-cloud.version>Finchley.SR2</spring-cloud.version>
	</properties>

	<dependencies>
		<dependency>
			<groupId>org.springframework.cloud</groupId>
			<artifactId>spring-cloud-starter-netflix-eureka-server</artifactId>
		</dependency>

		<dependency>
			<groupId>org.springframework.boot</groupId>
			<artifactId>spring-boot-starter-test</artifactId>
			<scope>test</scope>
		</dependency>
	</dependencies>

	<!--统一管理依赖的版本号-->
	<dependencyManagement>
		<dependencies>
			<dependency>
				<groupId>org.springframework.cloud</groupId>
				<artifactId>spring-cloud-dependencies</artifactId>
				<version>${spring-cloud.version}</version>
				<type>pom</type>
				<scope>import</scope>
			</dependency>
		</dependencies>
	</dependencyManagement>

	<build>
		<plugins>
			<plugin>
				<groupId>org.springframework.boot</groupId>
				<artifactId>spring-boot-maven-plugin</artifactId>
			</plugin>
		</plugins>
	</build>

</project>

 

依旧先将配置文件名  application.properties 改成application.yml
再添加配置:

 

server:
  port: 10086 # 端口
spring:
  application:
    name: yuanxion-Eureka # 相当于给你的微服务应用取个名字,会在Eureka中显示
eureka:
  client:
    service-url: # EurekaServer的地址,现在是自己的地址,如果是集群,需要加上其它Server的地址。
      defaultZone: http://localhost:${server.port}/eureka

 

然后去引导类中 加个@EnableEurekaServer注解,启用eureka服务端

 

然后启动运行。

然后访问访问 http://localhost:10086/
我们会看到下面这些:

 

我们的Eureka注册中心就搭建好了!