书接上回,原文再续,上次我们搭建了一个很简单的微服务的架子,这次我们来使用一下Eureka。
Eureka是用来做服务注册与发现的。一听到注册这俩字基本就说明这玩意要有个服务端,所以我们首先写一个Eureka服务端子工程,名为microservicecloud-eureka-server-6006,目录结构如下:
pom.xml内容如下:
4.0.0
com.sunsy.springcloud
microservicecloud
0.0.1-SNAPSHOT
microservicecloud-eureka-server-6006
org.springframework.cloud
spring-cloud-starter-eureka-server
org.springframework
springloaded
org.springframework.boot
spring-boot-devtools
application.yml内容如下(有一点需要注意,hostname可以写IP,但是由于我后边要搭建Eureka集群,而且是在本机这一台电脑上,所以如果hostname都写我自己的IP192.168.44.63的话搭建会失败,所以我在本机的hosts文件里给127.0.0.1配了euraka1、eureka2、eureka3三个hostname):
server:
port: 6006
eureka:
instance:
hostname: eureka1
client:
register-with-eureka: false #false不向注册中心注册自己
fetch-registry: false #false标识自己就是注册中心,不需要和client端一样检索服务
service-url:
defaultZone: http://${eureka.instance.hostname}:${server.port}/eureka/ #查询服务和注册服务的地址
最后是主启动类EurakaServer6006.java:
package com.sunsy.springcloud;
import org.springframework.boot.SpringApplication;
import org.springframework.boot.autoconfigure.SpringBootApplication;
import org.springframework.cloud.netflix.eureka.server.EnableEurekaServer;
@SpringBootApplication
@EnableEurekaServer
public class EurekaServer6006 {
public static void main(String[] args) {
SpringApplication.run(EurekaServer6006.class, args);
}
}
访问192.168.44.63:6006会进入如下界面,说明EurekaServer搭建启动成功:
服务中心已经搭建好了,我们就需要向服务端注册服务了,基于我们上一次的子工程microservicecloud-provider-dept,我们做一些小改动。
首先要在主启动类DeptProviderApp上加@EnableEurekaClient注解,告诉spring这是个EurekaClient,之后在application.yml里加入如下内容:
eureka:
client:
service-url:
defaultZone: http://192.168.44.63:6006/eureka
启动该子工程(别忘了把Server端也启动),再访问192.168.44.63:6006会进入如下界面,可以看到microservicecloud-dept服务已经注册到服务中心了:
但是看我右边的红色提示,如果我们想要自定义status中的服务名以及显示正确的IP,还需要做一点修改,在application.yml里作如下修改:
eureka:
client:
service-url:
defaultZone: http://192.168.44.63:6006/eureka
instance:
instance-id: dept-provider-8001 #自己命名instance-id,替代默认值
prefer-ip-address: true #把鼠标放在status上时会在浏览器的左下角显示真实的IP和端口号
修改后由于我们启动了热部署,所以保存修改服务自动重启,发现问题已解决。
最后我们来搭建Eureka集群,对microservicecloud-eureka-server-6006子工程中的application.yml做如下修改:
server:
port: 6006
eureka:
instance:
hostname: eureka1
client:
register-with-eureka: false #false不向注册中心注册自己
fetch-registry: false #false标识自己就是注册中心,不需要和client端一样检索服务
service-url:
#defaultZone: http://${eureka.instance.hostname}:${server.port}/eureka/ #查询服务和注册服务的地址
defaultZone: http://eureka2:6007/eureka/,http://eureka3:6008/eureka/
然后新建一个microservicecloud-eureka-server-6007子工程,复制一下microservicecloud-eureka-server-6006中的所有内容,然后修改application.yml,如下:
server:
port: 6007
eureka:
instance:
hostname: eureka2
client:
register-with-eureka: false #false不向注册中心注册自己
fetch-registry: false #false标识自己就是注册中心,不需要和client端一样检索服务
service-url:
#defaultZone: http://${eureka.instance.hostname}:${server.port}/eureka/ #查询服务和注册服务的地址
defaultZone: http://eureka1:6006/eureka/,http://eureka3:6008/eureka/
同理,建一个microservicecloud-eureka-server-6008子工程,和6007做相同处理,之后把这三个服务端以及microservicecloud-provider-dept都启动,访问192.168.44.63:6006(访问192.168.44.63:6007,192.168.44.63:6008也能看到大约类似的信息)可看到如下效果:
OK,至此一个简单的Eureka使用示例就完成了。github地址如下:https://github.com/ssystc/springcloud-demo
下次讲啥下次再说吧,溜了溜了....