當咱們從當體系統拆分爲多個獨立服務項目以後,若是aaa.com/uer、aaa.com/order;;相互之間調用,若是隻是一個服務一個實例,那還能夠直接經過固定地址(如http://111.111.11.1:7119/user/getuser/1)直接訪問;spring
可是,咱們一個服務有不少個實例,這樣你就不能寫死地址了吧,多個之間你得挑出一個來調用吧(負載均衡),還有多個實例有的中止了,有的新加入了,這你得心跳檢測健康監測吧等等;這些,都是從單體系統拆分後面臨的實際問題,你能夠本身一個一個去克服和實現;當遇到了spring cloud,哈哈,你有福了,spring cloud eureka正是爲你解決以上問題而來;app
eureka服務發現組件包含eureka server(服務註冊中心)和eureka client(服務註冊與發現);自己經過心跳檢測(默認30S)進行服務的註冊與發現與健康檢查負載均衡
1.一、添加依賴:測試
<dependency> <groupId>org.springframework.cloud</groupId> <artifactId>spring-cloud-starter-netflix-eureka-server</artifactId> </dependency>
1.二、配置文件增長配置fetch
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.三、啓動類增長 @EnableEurekaServer 註解spa
@SpringBootApplication @EnableEurekaServer public class application { public static void main(String[] args) { SpringApplication.run(application.class); } }
一個eureka server就完成了,啓動運行3d
尚未服務實例,由於咱們還沒添加,好,下面咱們來添加eureka clientcode
2.一、添加依賴server
<dependency> <groupId>org.springframework.cloud</groupId> <artifactId>spring-cloud-starter-netflix-eureka-client</artifactId> </dependency>
2.二、修改配置文件blog
server: port: 8763 spring: application: name: user eureka: client: serviceUrl: defaultZone: http://localhost:8761/eureka/ instance: prefer-ip-address: true
2.三、啓動類中增長 @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()); } }
先啓動eureka server 項目,再啓動client項目,咱們能夠看到,client的服務實例已經註冊進來了
再切換端口增長一個實例,能夠看到,也註冊進來了,這樣就能夠經過eureka管理多個服務的多個實例以及相互之間調用的問題了
GIT源碼後面再放出