0、為什麼需要eureka 當我們從當體系統拆分為多個獨立服務項目之後,如果aaa.com/uer、aaa.com/order;;相互之間調用,如果只是一個服務一個實例,那還可以直接通過固定地址(如http://111.111.11.1:7119/user/getuser/1)直接訪問; 但是,我們 ...
0、為什麼需要eureka
當我們從當體系統拆分為多個獨立服務項目之後,如果aaa.com/uer、aaa.com/order;;相互之間調用,如果只是一個服務一個實例,那還可以直接通過固定地址(如http://111.111.11.1:7119/user/getuser/1)直接訪問;
但是,我們一個服務有很多個實例,這樣你就不能寫死地址了吧,多個之間你得挑出一個來調用吧(負載均衡),還有多個實例有的停止了,有的新加入了,這你得心跳檢測健康監測吧等等;這些,都是從單體系統拆分後面臨的實際問題,你可以自己一個一個去剋服和實現;當遇到了spring cloud,哈哈,你有福了,spring cloud eureka正是為你解決以上問題而來;
eureka服務發現組件包含eureka server(服務註冊中心)和eureka client(服務註冊與發現);本身通過心跳檢測(預設30S)進行服務的註冊與發現與健康檢查
一、eureka集成
1、eureka server
1.1、添加依賴:
<dependency> <groupId>org.springframework.cloud</groupId> <artifactId>spring-cloud-starter-netflix-eureka-server</artifactId> </dependency>
1.2、配置文件增加配置
eureka: instance: hostname: localhost prefer-ip-address: true client: registerWithEureka: false fetchRegistry: false serviceUrl: defaultZone: http://${eureka.instance.hostname}:${server.port}/eureka/ server: enable-self-preservation: false spring: application: name: eurka-server
1.3、啟動類增加 @EnableEurekaServer 註解
@SpringBootApplication @EnableEurekaServer public class application { public static void main(String[] args) { SpringApplication.run(application.class); } }
一個eureka server就完成了,啟動運行
還沒有服務實例,因為我們還沒添加,好,下麵我們來添加eureka client
2、eureka client
2.1、添加依賴
<dependency> <groupId>org.springframework.cloud</groupId> <artifactId>spring-cloud-starter-netflix-eureka-client</artifactId> </dependency>
2.2、修改配置文件
server: port: 8763 spring: application: name: user eureka: client: serviceUrl: defaultZone: http://localhost:8761/eureka/ instance: prefer-ip-address: true
2.3、啟動類中增加 @EnableEurekaClient 註解
@SpringBootApplication @EnableEurekaClient @EnableHystrixDashboard public class application { public static void main(String[] args) { SpringApplication.run(application.class); } }
完成
我們在controller裡面添加一個方法進行測試
@RestController @RequestMapping("/user") public class UserController { @Autowired private ServiceUtil serviceUtil; @RequestMapping("/hello") public String Hello() { return ("hello world" +serviceUtil.getPort()); } }
3、測試
先啟動eureka server 項目,再啟動client項目,我們可以看到,client的服務實例已經註冊進來了
再切換埠增加一個實例,可以看到,也註冊進來了,這樣就可以通過eureka管理多個服務的多個實例以及相互之間調用的問題了
GIT源碼後面再放出