SpringCloud分佈式(一) 服務發現eureka使用詳解

1.什麼是springcloud?

springCloud是基於SpringBoot的一整套實現微服務的框架。他提供了微服務開發所需的配置管理、服務發現、斷路器、智能路由、微代理、控制總線、全局鎖、決策競選、分佈式會話和集羣狀態管理等組件。最重要的是,跟spring boot框架一起使用的話,會讓你開發微服務架構的雲服務非常好的方便。 SpringBoot旨在簡化創建產品級的 Spring 應用和服務,簡化了配置文件,使用嵌入式web服務器,含有諸多開箱即用微服務功能。
SpringCloud的關鍵技術介紹:

  1. eureka 服務註冊與發現
  2. zuul api網關 即爲服務
  3. config 分佈式統一配置中心
  4. Ribbon 負載均衡組件
  5. hystrix 熔斷
  6. Feign 聲明式服務調用

2.springcloud的優點是什麼?

  1. 降低系統的耦合性
  2. 能獨立上線,迅速響應需求
  3. 可以支持不同語言不同平臺開發。

3.服務發現eureka?

eureka 是分佈式註冊中心,所有的服務的消費者與服務的提供者都在eureka上進行註冊,這樣就可以實現相互間的隔離。

4.案例

搭建eureka server
4.1在idea或者sts上建立一個springboot 項目,勾選eureka maven依賴。
4.2 在你的xxxApplication中增加@EnableEurekaServer註解
4.3 修改application.properties 或者aplication.yml配置文件
server.port=8080
spring.application.name=eurekaserver1

啓動過程中可能會報錯: Cannot execute request on any known server 這個是正常的。

這樣一個簡單的eurekaserver就啓動起來了。
如何去驗證它?
訪問
http://127.0.0.1:8080/
如圖所示:
在這裏插入圖片描述

服務的提供者

那麼接下來我們再來創建一個服務的提供者
4.4同樣在idea或者sts上建立一個springboot 項目,勾選【Eureka Discovery】和【Web】依賴。
4.5在XXXAplication中增加@EnableDiscoveryClient註解
4.6新建一個XyfController用於測試
4.7application配置文件
server.port=8081
spring.application.name=restservice1
eureka.client.serviceUrl.defaultZone=http://127.0.0.1:8080/eureka/

Controller文件:

@RestController
@RequestMapping("/xyf")
public class XyfController {

	@RequestMapping("/hello")
	public String hello()
	{
		return "hello";
	}
}

啓動後嘗試訪問http://127.0.0.1:8081/xyf/hello
訪問成功

服務的消費者

接下來再來創建一個服務的消費者
4.8同樣在idea或者sts上建立一個springboot 項目,勾選【Eureka Discovery】和【Web】以及【Ribbon】依賴。
4.5在XXXAplication中增加@EnableDiscoveryClient註解
4.6在XXXApplication中加入一個提供RestTemplate的Bean的方法
4.7application配置文件
server.port=8082
spring.application.name=testweb1
eureka.client.serviceUrl.defaultZone=http://127.0.0.1:8080/eureka/
4.8編寫TestController進行測試

@RestController
@RequestMapping("/test")
public class TestController {
	@Autowired
	private RestTemplate restTemplate;
	@RequestMapping(value="index",method=RequestMethod.GET)
	public String index()
	{
		return restTemplate.getForEntity("http://restservice1/xyf/hello",String.class).getBody();
	}
	
}

4.9編寫完畢後啓動服務的消費者訪問
http://127.0.0.1:8082/test/index
我們通過服務的消費者的接口=>查詢eureka服務器server中服務的提供者的位置=>返回服務消費者。
不能通過普通的HttpClient等發這種請求,只能通過消費者RestTemplate等內置接口來訪問。

架構圖:
在這裏插入圖片描述

需注意的地方:
EurekaServer的端口要固定,因爲別人都向他註冊;Web服務器的端口要固定,因爲用戶要訪問他;服務提供者的端口可以隨意,因爲別人都不是直接和他打交道。設定:eureka.instance.instance-id=spring.application.name:{spring.application.name}:{random.int} 確保實例不重名。

發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章