欧美bbbwbbbw肥妇,免费乱码人妻系列日韩,一级黄片

Nacos?Discovery服務(wù)治理解決方案

 更新時間:2022年11月03日 14:54:42   作者:_李淳罡  
DiscoveryClient是專門負責(zé)服務(wù)注冊和發(fā)現(xiàn)的,我們可以通過它獲取到注冊到注冊中心的所有服務(wù),這篇文章主要介紹了Nacos?Discovery服務(wù)治理,需要的朋友可以參考下

前言

上一章中,我們利用用戶–訂單–商品,實現(xiàn)了三個簡單的微服務(wù),實現(xiàn)了微服務(wù)之間的調(diào)用。但不知道大家有沒有發(fā)現(xiàn),我們是通過硬編碼的方式,把服務(wù)者,消費者的服務(wù)Url,寫到了代碼中,這樣做肯定是不行的,存在著許多的問題,比如:

一旦服務(wù)提供者地址變化,就需要手工修改代碼一旦是多個服務(wù)提供者,無法實現(xiàn)負載均衡功能一旦服務(wù)變得越來越多,人工維護調(diào)用關(guān)系困難

那么應(yīng)該怎么解決呢, 這時候就需要通過注冊中心動態(tài)的實現(xiàn)服務(wù)治理。

服務(wù)治理

什么是服務(wù)治理?

服務(wù)治理是微服務(wù)架構(gòu)中最核心最基本的模塊。用于實現(xiàn)各個微服務(wù)的自動化注冊與發(fā)現(xiàn)。

  • 服務(wù)注冊: 在服務(wù)治理框架中,都會構(gòu)建一個注冊中心,每個服務(wù)單元向注冊中心登記自己提供服務(wù)的詳細信息。并在注冊中心形成一張服務(wù)的清單,服務(wù)注冊中心需要以心跳的方式去監(jiān)測清單中的服務(wù)是否可用,如果不可用,需要在服務(wù)清單中剔除不可用的服務(wù)。
  • 服務(wù)發(fā)現(xiàn): 服務(wù)調(diào)用方向服務(wù)注冊中心咨詢服務(wù),并獲取所有服務(wù)的實例清單,實現(xiàn)對具體服務(wù)實例的訪問。

常見的注冊中心

Zookeeper

zookeeper是一個分布式服務(wù)框架,是Apache Hadoop 的一個子項目,它主要是用來解決分布式應(yīng)用中經(jīng)常遇到的一些數(shù)據(jù)管理問題。

如:統(tǒng)一命名服務(wù)、狀態(tài)同步服務(wù)、集群管理、分布式應(yīng)用配置項的管理等。

Eureka

Eureka是Springcloud Netflix中的重要組件,主要作用就是做服務(wù)注冊和發(fā)現(xiàn)。但是現(xiàn)在已經(jīng)閉源。如果是打算新建微服務(wù)到話,不推薦使用Eureka了。

Consul

Consul是基于GO語言開發(fā)的開源工具,主要面向分布式,服務(wù)化的系統(tǒng)提供服務(wù)注冊、服務(wù)發(fā)現(xiàn) 和配置管理的功能。Consul的功能都很實用,其中包括:服務(wù)注冊/發(fā)現(xiàn)、健康檢查、Key/Value 存儲、多數(shù)據(jù)中心和分布式一致性保證等特性。

Consul本身只是一個二進制的可執(zhí)行文件,所以安裝和部署都非常簡單,只需要從官網(wǎng)下載后,在執(zhí)行對應(yīng)的啟動腳本即可。

Nacos

Nacos是一個更易于構(gòu)建云原生應(yīng)用的動態(tài)服務(wù)發(fā)現(xiàn)、配置管理和服務(wù)管理平臺

它是SpringCloud Alibaba 組件之一,負責(zé)服務(wù)注冊發(fā)現(xiàn)和服務(wù)配置,可以這樣認為nacos=eureka+config。

Nacos 入門

Nacos 官網(wǎng)介紹:

Nacos 致力于幫助您發(fā)現(xiàn)、配置和管理微服務(wù)。Nacos 提供了一組簡單易用的特性集,幫助您快速實現(xiàn)動態(tài)服務(wù)發(fā)現(xiàn)、服務(wù)配置、服務(wù)元數(shù)據(jù)及流量管理。

從上面的介紹就可以看出,nacos的作用就是一個注冊中心,用來管理注冊上來的各個微服務(wù)。

搭建nacos環(huán)境

第1步: 安裝nacos

下載地址: https://github.com/alibaba/nacos/releases

下載zip格式的安裝包,然后進行解壓縮操作。

第2步: 啟動nacos

#切換目錄
cd nacos/bin
#命令啟動
startup.cmd -m standalone

第3步: 訪問nacos

打開瀏覽器輸入http://localhost:8848/nacos

即可訪問服務(wù), 默認密碼是nacos/nacos

將商品微服務(wù)注冊到nacos

接下來開始修改 shop-product 模塊的代碼, 將其注冊到nacos服務(wù)上 。

1、在pom.xml中添加nacos的依賴

<!--nacos客戶端-->
<dependency>
	<groupId>com.alibaba.cloud</groupId> 
	<artifactId>spring-cloud-starter-alibaba-nacos-discovery</artifactId> 
</dependency>

2、在主類上添加@EnableDiscoveryClient注解

@SpringBootApplication
@EnableDiscoveryClient
public class ProductApplication{
	......
}

3 在application.yml中添加nacos服務(wù)的地址

spring:
  cloud:
    nacos:
      discovery:
        server-addr: 127.0.0.1:8848

4、啟動服務(wù), 觀察nacos的控制面板中是否有注冊上來的商品微服務(wù)

將訂單微服務(wù)注冊到nacos

接下來開始修改 shop_order 模塊的代碼, 將其注冊到nacos服務(wù)上。

1、在pom.xml中添加nacos的依賴

<!--nacos客戶端-->
<dependency>
	<groupId>com.alibaba.cloud</groupId> 
	<artifactId>spring-cloud-starter-alibaba-nacos-discovery</artifactId> 
</dependency>

2、在主類上添加@EnableDiscoveryClient注解

@SpringBootApplication
@EnableDiscoveryClient
public class OrderApplication{
	.....
}

3、在application.yml中添加nacos服務(wù)的地址

spring:
  cloud:
    nacos:
      discovery:
        server-addr: 127.0.0.1:8848

4、修改OrderController, 實現(xiàn)微服務(wù)調(diào)用

@RestController
@Slf4j
public class OrderController {

	@Autowired
	private RestTemplate restTemplate;
	@Autowired
	private OrderService orderService;
	@Autowired
	private DiscoveryClient discoveryClient;
	
	//準備買1件商品
	@GetMapping("/order/prod/{pid}")
	public Order order(@PathVariable("pid") Integer pid) {
 		 log.info(">>客戶下單,這時候要調(diào)用商品微服務(wù)查詢商品信息"); 
 		 //從nacos中獲取服務(wù)地址
		ServiceInstance serviceInstance = discoveryClient.getInstances("service-product").get(0); 
		String url = serviceInstance.getHost() + ":" +serviceInstance.getPort(); 
		log.info(">>從nacos中獲取到的微服務(wù)地址為:" + url);
		 //通過restTemplate調(diào)用商品微服務(wù)
		Product product = restTemplate.getForObject(
		"http://" + url + "/product/" + pid, Product.class); 
		log.info(">>商品信息,查詢結(jié)果:" + JSON.toJSONString(product));
		Order order = new Order();
		order.setUid(1);
		order.setUsername("測試用戶");
	    order.setPid(product.getPid());
	 }
}

DiscoveryClient是專門負責(zé)服務(wù)注冊和發(fā)現(xiàn)的,我們可以通過它獲取到注冊到注冊中心的所有服務(wù)。

5、啟動服務(wù), 觀察nacos的控制面板中是否有注冊上來的訂單微服務(wù),然后通過訪問消費者服務(wù)驗證調(diào) 用是否成功

總結(jié)

這篇文章我們簡單的實現(xiàn)了如何利用服務(wù)治理來管控微服務(wù)。那么對應(yīng)的又引發(fā)一個問題,如果集群中用戶訪問量在某一瞬間達到最高點,可能會造成服務(wù)的癱瘓,這怎么解決呢?相信大家都知道負載均衡技術(shù),也知道這里需要用到負載均衡,但在微服務(wù)中,如何實現(xiàn)服務(wù)調(diào)用的負載均衡呢?我們下篇文章再講。

相關(guān)文章

  • Java基礎(chǔ)教程之封裝與接口

    Java基礎(chǔ)教程之封裝與接口

    這篇文章主要介紹了Java基礎(chǔ)教程之封裝與接口,本文用淺顯易懂的語言講解了Java中的封裝與接口,很形象的說明了這兩個面向?qū)ο笮g(shù)語,需要的朋友可以參考下
    2014-08-08
  • 基于Java的電梯系統(tǒng)實現(xiàn)過程

    基于Java的電梯系統(tǒng)實現(xiàn)過程

    這篇文章主要介紹了基于Java的電梯系統(tǒng)實現(xiàn)過程,文中通過示例代碼介紹的非常詳細,對大家的學(xué)習(xí)或者工作具有一定的參考學(xué)習(xí)價值,需要的朋友可以參考下
    2019-10-10
  • Mybatis中mapper.xml實現(xiàn)熱加載介紹

    Mybatis中mapper.xml實現(xiàn)熱加載介紹

    大家好,本篇文章主要講的是Mybatis中mapper.xml實現(xiàn)熱加載介紹,感興趣的同學(xué)趕快來看一看吧,對你有幫助的話記得收藏一下
    2022-01-01
  • java實現(xiàn)合并2個文件中的內(nèi)容到新文件中

    java實現(xiàn)合并2個文件中的內(nèi)容到新文件中

    這篇文章主要介紹了java實現(xiàn)合并2個文件中的內(nèi)容到新文件中,思路非常不錯,這里推薦給大家。
    2015-03-03
  • 一文搞明白Java?Spring?Boot分布式事務(wù)解決方案

    一文搞明白Java?Spring?Boot分布式事務(wù)解決方案

    這篇文章主要介紹了一文搞明白Java?Spring?Boot分布式事務(wù)解決方案,文章圍繞主題展開詳細的內(nèi)容介紹,具有一定的參考價值,需要的小伙伴可以參考一下
    2022-07-07
  • Java使用EasyExcel模版導(dǎo)出詳細操作教程

    Java使用EasyExcel模版導(dǎo)出詳細操作教程

    業(yè)務(wù)中經(jīng)常需要按照一個特定的模板導(dǎo)出特定內(nèi)容,有些單元格還要求特殊的格式,所以下面這篇文章主要給大家介紹了關(guān)于Java使用EasyExcel模版導(dǎo)出的相關(guān)資料,需要的朋友可以參考下
    2023-10-10
  • 編寫Spring MVC控制器的14個技巧(小結(jié))

    編寫Spring MVC控制器的14個技巧(小結(jié))

    這篇文章主要介紹了編寫Spring MVC控制器的14個技巧,文中通過示例代碼介紹的非常詳細,對大家的學(xué)習(xí)或者工作具有一定的參考學(xué)習(xí)價值,需要的朋友們下面隨著小編來一起學(xué)習(xí)學(xué)習(xí)吧
    2019-11-11
  • Java實現(xiàn)快速排序算法可視化的示例代碼

    Java實現(xiàn)快速排序算法可視化的示例代碼

    快速排序算法通過多次比較和交換來實現(xiàn)排序,是對冒泡排序算法的一種改進。本文將用Java語言實現(xiàn)快速排序算法并進行可視化,感興趣的可以了解一下
    2022-08-08
  • Java 簡化正則表達式的使用

    Java 簡化正則表達式的使用

    本篇文章主要介紹了Java 簡化正則表達式使用的相關(guān)知識,具有很好的參考價值。下面跟著小編一起來看下吧
    2017-04-04
  • SpringBoot中集成串口通信的項目實踐

    SpringBoot中集成串口通信的項目實踐

    本文主要介紹了SpringBoot中集成串口通信,文中通過示例代碼介紹的非常詳細,對大家的學(xué)習(xí)或者工作具有一定的參考學(xué)習(xí)價值,需要的朋友們下面隨著小編來一起學(xué)習(xí)學(xué)習(xí)吧
    2023-08-08

最新評論