最新国产好看的视频,伊人天堂AV在线,国产Aaaaaa视频,蜜臀视频在线观看一区,人妻av色图,密臀久久久精品影片,青青视频免费观看毛片,久草在线观看视,国产三级精品色情在线

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

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

前言

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

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

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

服務(wù)治理

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

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

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

常見的注冊中心

Zookeeper

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

如:統(tǒng)一命名服務(wù)、狀態(tài)同步服務(wù)、集群管理、分布式應(yīng)用配置項(xià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的功能都很實(shí)用,其中包括:服務(wù)注冊/發(fā)現(xiàn)、健康檢查、Key/Value 存儲、多數(shù)據(jù)中心和分布式一致性保證等特性。

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

Nacos

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

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

Nacos 入門

Nacos 官網(wǎng)介紹:

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

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

搭建nacos環(huán)境

第1步: 安裝nacos

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

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

第2步: 啟動nacos

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

第3步: 訪問nacos

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

即可訪問服務(wù), 默認(rèn)密碼是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, 實(shí)現(xiàn)微服務(wù)調(diào)用

@RestController
@Slf4j
public class OrderController {

	@Autowired
	private RestTemplate restTemplate;
	@Autowired
	private OrderService orderService;
	@Autowired
	private DiscoveryClient discoveryClient;
	
	//準(zhǔn)備買1件商品
	@GetMapping("/order/prod/{pid}")
	public Order order(@PathVariable("pid") Integer pid) {
 		 log.info(">>客戶下單,這時(shí)候要調(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是專門負(fù)責(zé)服務(wù)注冊和發(fā)現(xiàn)的,我們可以通過它獲取到注冊到注冊中心的所有服務(wù)。

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

總結(jié)

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

相關(guān)文章

  • Spring?MVC請求轉(zhuǎn)發(fā)與請求重定向的示例詳解

    Spring?MVC請求轉(zhuǎn)發(fā)與請求重定向的示例詳解

    轉(zhuǎn)發(fā)指服務(wù)器接收請求后,從一個(gè)資源跳轉(zhuǎn)到另一個(gè)資源中,請求轉(zhuǎn)發(fā)是一次請求,不會改變?yōu)g覽器的請求地址,這篇文章主要介紹了Spring?MVC請求轉(zhuǎn)發(fā)與請求重定向的相關(guān)知識,需要的朋友可以參考下
    2023-09-09
  • SpringBoot使用Sa-Token實(shí)現(xiàn)權(quán)限認(rèn)證

    SpringBoot使用Sa-Token實(shí)現(xiàn)權(quán)限認(rèn)證

    本文主要介紹了SpringBoot使用Sa-Token實(shí)現(xiàn)權(quán)限認(rèn)證,文中通過示例代碼介紹的非常詳細(xì),對大家的學(xué)習(xí)或者工作具有一定的參考學(xué)習(xí)價(jià)值,需要的朋友們下面隨著小編來一起學(xué)習(xí)學(xué)習(xí)吧
    2023-04-04
  • 如何在IDE部署springboot項(xiàng)目(有swagger和無swagger都是一樣的)到服務(wù)器或者虛擬機(jī)上的docker

    如何在IDE部署springboot項(xiàng)目(有swagger和無swagger都是一樣的)到服務(wù)器或者虛擬機(jī)上的docke

    這篇文章主要介紹了如何在IDE部署springboot項(xiàng)目(有swagger和無swagger都是一樣的)到服務(wù)器或者虛擬機(jī)上的docker,本文給大家分享我的安裝歷程,需要的朋友可以參考下
    2023-01-01
  • Java一些常見的出錯(cuò)異常處理方法總結(jié)

    Java一些常見的出錯(cuò)異常處理方法總結(jié)

    下面小編就為大家?guī)硪黄狫ava一些常見的出錯(cuò)異常處理方法總結(jié)。小編覺得挺不錯(cuò)的,現(xiàn)在就分享給大家,也給大家做個(gè)參考。一起跟隨小編過來看看吧
    2016-06-06
  • java實(shí)現(xiàn)屏幕共享功能實(shí)例分析

    java實(shí)現(xiàn)屏幕共享功能實(shí)例分析

    這篇文章主要介紹了java實(shí)現(xiàn)屏幕共享功能的方法,以實(shí)例形式分析了屏幕共享功能的客戶端與服務(wù)端的詳細(xì)實(shí)現(xiàn)方法,是非常具有實(shí)用價(jià)值的技巧,需要的朋友可以參考下
    2014-12-12
  • 使用spring.profiles.active來分區(qū)配置的方法示例

    使用spring.profiles.active來分區(qū)配置的方法示例

    這篇文章主要介紹了使用spring.profiles.active來分區(qū)配置的方法示例,小編覺得挺不錯(cuò)的,現(xiàn)在分享給大家,也給大家做個(gè)參考。一起跟隨小編過來看看吧
    2019-01-01
  • Java對象的內(nèi)存布局全流程

    Java對象的內(nèi)存布局全流程

    這篇文章主要介紹了Java對象的內(nèi)存布局全流程,具有很好的參考價(jià)值,希望對大家有所幫助。如有錯(cuò)誤或未考慮完全的地方,望不吝賜教
    2022-05-05
  • java創(chuàng)建多級目錄文件的實(shí)例講解

    java創(chuàng)建多級目錄文件的實(shí)例講解

    下面小編就為大家分享一篇java創(chuàng)建多級目錄文件的實(shí)例講解,具有很好的參考價(jià)值,希望對大家有所幫助。一起跟隨小編過來看看吧
    2018-01-01
  • 利用Spring插件實(shí)現(xiàn)策略模式的案例詳解

    利用Spring插件實(shí)現(xiàn)策略模式的案例詳解

    Spring插件提供了一種更實(shí)用的插件開發(fā)方法,它提供了插件實(shí)現(xiàn)擴(kuò)展核心系統(tǒng)功能的核心靈活性,但當(dāng)然不提供核心OSGi功能,如動態(tài)類加載或運(yùn)行時(shí)安裝和部署插件,本文就來聊下如何使用spring插件來實(shí)現(xiàn)策略模式,需要的朋友可以參考下
    2023-05-05
  • Java fastjson解析json字符串實(shí)現(xiàn)過程解析

    Java fastjson解析json字符串實(shí)現(xiàn)過程解析

    這篇文章主要介紹了Java fastjson解析json字符串實(shí)現(xiàn)過程解析,文中通過示例代碼介紹的非常詳細(xì),對大家的學(xué)習(xí)或者工作具有一定的參考學(xué)習(xí)價(jià)值,需要的朋友可以參考下
    2020-10-10

最新評論

黄陵县| 汉源县| 神池县| 德化县| 民县| 商丘市| 昭平县| 上饶县| 丰城市| 盐津县| 太谷县| 越西县| 定兴县| 南平市| 醴陵市| 四平市| 安远县| 花垣县| 文山县| 辛集市| 淮南市| 宜良县| 邵武市| 嵊泗县| 上饶县| 象山县| 枣庄市| 衡山县| 恩施市| 中卫市| 五寨县| 太和县| 绥棱县| 镶黄旗| 北辰区| 米泉市| 华蓥市| 栾川县| 南溪县| 新郑市| 宝清县|