1.eureka是干什么的?
上篇说了,微服务之间需要互相之间通信,那么通信就需要各种网络信息,我们可以通过使用硬编码的方式来进行通信,但是这种方式显然不合适,不可能说一个微服务的地址发生变动,那么整个系统的所有微服务都要重新部署,显然是不合适的,那么我们需要一个服务发现机制,服务消费者通过这种机制来获取服务提供者的网络信息,并且服务提供者的网络信息即使变化,服务消费者也不必改变配置。Eureka提供的就是这样一种服务注册与发现的功能,也就是所有的服务在启动的时候都需要把自己的网络信息告诉Eureka以供所有服务使用
服务提供者、服务消费者、Eureka三者之间的关系
(1)服务提供者在启动的时候,将自己的网络信息注册到Eureka,Eureka存贮这些信息
(2)服务提供者与Eureka之间定时的发送心跳告诉Eureka我还在,如果长时间没有发送心跳,那么就表示该服务已经停止,就会注销该服务
(3)服务消费者可以通过Eureka查询服务提供者的网络地址,通过该地址查询调用服务提供者的接口
2.编写Eureka server
我们都用maven来管理依赖
1.创建maven工程并添加依
我用的全是最新的版本,对于不同springcloud版本和SpringBoot的兼容不同,详细看5
1 <!--添加eureka-server依赖--> 2 <dependency> 3 <groupId>org.springframework.cloud</groupId> 4 <artifactId>spring-cloud-starter-netflix-eureka-server</artifactId> 5 </dependency><!--添加eureka-client依赖,这个依赖在这里可以不用加,如果但是如果是多个Eureka server 需要添加,因为Eureka之间需要互相注册--> 6 <dependency> 7 <groupId>org.springframework.cloud</groupId> 8 <artifactId>spring-cloud-starter-netflix-eureka-client</artifactId> 9 </dependency> 10 <!--引入SpringCloud的依赖--> 11 <dependencyManagement> 12 <dependencies> 13 <dependency> 14 <groupId>org.springframework.cloud</groupId> 15 <artifactId>spring-cloud-dependencies</artifactId> 16 <version>Finchley.SR1</version> 17 <type>pom</type> 18 <scope>import</scope> 19 </dependency> 20 </dependencies> 21 </dependencyManagement> 22 23 <!-- 注意: 这里必须要添加,否则各种依赖有问题 推测问题在于目前部分依赖没有上传到中央仓库 --> 24 <repositories> 25 <repository> 26 <id>spring-milestones</id> 27 <name>Spring Milestones</name> 28 <url>http://repo.spring.io/milestone</url> 29 <snapshots> 30 <enabled>false</enabled> 31 </snapshots> 32 </repository> 33 </repositories>
2.编写配置
1 server: 2 port: 8080 3 tomcat: 4 uri-encoding: utf-8 5 eureka: 6 client: 7 #是否将自己注册到Eureka Server,默认为true,由于当前应用就是Eureka,所以设置成false 8 register-with-eureka: false 9 #表示是否从Eueka Server获取注册信息,默认为true,由于当前是单节点的Eureka Server,没有其他Eureka Server ,故而设置为false 10 fetch-registry: false 11 service-url: 12 #这里是交互的地址,所有的服务注册与查询服务都需要通过这个地址,这里可以设置多个地址,用逗号隔开 13 defaultZone: http://localhost:8080/eureka/ 14 server: 15 enableSelfPreservation: false #关闭做我保护模式 16
3.编写启动类
@SpringBootApplication @EnableEurekaServer //启动一个服务注册中心提供给其他应用进行对话 public class TouristRegisterCenter {public static void main(String[] args) {SpringApplication.run(TouristRegisterCenter.class, args);} }
整个启动类只是加了一个@EnableEurekaServer 注解
4.启动
然后我们可以看见这样的页面就说明恭喜你成功了
但是注意看instances currently registered with Eureka 这里面是我们注册的服务,这是空的(废话,我还没注册呢),页面内容英语稍微好一点看看应该就明白了,实在不行就百度翻译吧
现在Eureka server已经有了,那么我们肯定要网上注册一点东西啊,接着我们直接copy上面这个然后做一个修改就OK了。上代码
5.将微服务注册到Eureka server
5.1 上面那个pom里面有这个依赖,如果直接copy的可以直接忽略,但是注册的时候主要用到的就是这个包
1 <!--添加eureka-server依赖--> 2 <dependency> 3 <groupId>org.springframework.cloud</groupId> 4 <artifactId>spring-cloud-starter-netflix-eureka-client</artifactId> 5 </dependency>
5.2修改配置文件
1 server: 2 port: 8081 3 tomcat: 4 uri-encoding: utf-8 5 6 7 spring: 8 application: 9 name: Tourist-user-server #注册到Eureka server 上的应用名称 10 11 12 eureka: 13 client: 14 service-url: 15 defaultZone: http://localhost:8080/eureka/ #Eureka server 注册地址 16 instance: 17 prefer-ip-address: true #表示将自己的IP注册到Eureka server ,该配置默认false,表示将所在计算机系统的hostname注册到Eureka server
关于配置或者代码里面细节的东西我都直接写在代码注释里了,毕竟方便看嘛
5.3 编写启动类
1 @SpringBootApplication 2 @EnableEurekaClient 3 public class TouristuserserviceApplication { 4 5 public static void main(String[] args) { 6 SpringApplication.run(TouristuserserviceApplication.class,args); 7 } 8 } 9
在这里就是把server中的@EnableEurekaServer 改成了@EnableEurekaClient ,声明这是一个Eureka client
6.启动查看
首先启动Eureka server ,启动成功之后再启动Eureka client
两个全部启动之后我们再访问Eureka server 看看是否注册进去了
OK!!!!成功注册上去了,大功告成
7.关于版本
关于springcloud版本
这只是springcloud版本,因为springcloud基于springBoot,所以springcloud与SpringBoot的版本最好对应,详情可以看一下GitHub上springcloud的信息,附上地址https://github.com/spring-projects/spring-cloud/wiki/Spring-Cloud-Finchley-Release-Notes
8.结束
其实关于Eureka server 总结下来就是
1.添加依赖
2.配置
3.在启动类添加注解,声明这是一个Eureka server
Eureka client 也就是微服务,注册的过程也很简单
1.添加依赖
2.增加配置,主要就是注册上去的名称和注册地址
3.在启动类上声明是一个Eureka client
然后就成了。。。。。。。。
这纯属自己学习,如果有什么不对的地方请大神们多多指教,小弟万分感谢