Spring Cloud Alibaba - 03 注冊中心Nacos 應(yīng)用篇

      網(wǎng)友投稿 692 2025-04-01

      文章目錄


      Spring Cloud Alibaba - 03 注冊中心Nacos 應(yīng)用篇

      無注冊中心直接調(diào)用Demo

      注冊中心的演進

      Nacos Server 安裝

      Linux 下的 安裝 (單節(jié)點)

      Nacos Client 接入

      Step 1 搞依賴

      Step 2 搞注解 @EnableDiscoveryClient (高版本可省略)

      Step 3 搞配置

      Step 4 啟動服務(wù)端和客戶端

      Step 5 驗證測試

      源碼

      無注冊中心直接調(diào)用Demo

      package com.artisan.v1.controller; import com.artisan.common.entity.OrderInfo; import com.artisan.common.entity.ProductInfo; import com.artisan.common.vo.OrderVo; import com.artisan.mapper.OrderInfoMapper; import org.springframework.beans.factory.annotation.Autowired; import org.springframework.http.ResponseEntity; import org.springframework.web.bind.annotation.PathVariable; import org.springframework.web.bind.annotation.RequestMapping; import org.springframework.web.bind.annotation.RestController; import org.springframework.web.client.RestTemplate; /** * @author 小工匠 * @version 1.0 * @description: TODO * @date 2022/2/1 21:20 * @mark: show me the code , change the world */ @RestController public class OrderInfoController { @Autowired private RestTemplate restTemplate; @Autowired private OrderInfoMapper orderInfoMapper; /** * 調(diào)用地址,硬編碼 */ public static final String uri = "http://localhost:9999/selectProductInfoById/"; @RequestMapping("/selectOrderInfoById/{orderNo}") public Object selectOrderInfoById(@PathVariable("orderNo") String orderNo) { OrderInfo orderInfo = orderInfoMapper.selectOrderInfoById(orderNo); if (null == orderInfo) { return "根據(jù)orderNo:" + orderNo + "查詢沒有該訂單"; } // 發(fā)起遠(yuǎn)程Http調(diào)用 ResponseEntity responseEntity = restTemplate.getForEntity(uri + orderInfo.getProductNo(), ProductInfo.class); ProductInfo productInfo = responseEntity.getBody(); if (productInfo == null) { return "沒有對應(yīng)的商品"; } OrderVo orderVo = new OrderVo(); orderVo.setOrderNo(orderInfo.getOrderNo()); orderVo.setUserName(orderInfo.getUserName()); orderVo.setProductName(productInfo.getProductName()); orderVo.setProductNum(orderInfo.getProductCount()); return orderVo; } }

      Order服務(wù)通過RestTemplate 調(diào)用方式調(diào)用遠(yuǎn)端的Product服務(wù)

      我們來分析一下缺點

      在調(diào)用的時候,請求的Ip地址和端口是硬編碼的.若此時,服務(wù)提供方(product)服務(wù)部署的機器換了端口或者是更換了部署機器的Ip,那么我們需要修改代碼重新發(fā)布部署.

      假設(shè)我們的product服務(wù)壓力過大,我們需要把product服務(wù)作為集群,那么意味著product是多節(jié)點部署比如原來的,我們只有一臺服務(wù)器,現(xiàn)在有多臺服務(wù)器,那么作為運維人員需要在服務(wù)消費方進行手工維護一份注冊表(容易出錯)

      當(dāng)然了,上面的問題可以通過ng來做負(fù)載均衡,我首先認(rèn)為這是可行的,但當(dāng)時大規(guī)模的微服務(wù), ng的配置文件復(fù)雜度可想而知。

      注冊中心的演進

      詳見 ProcessOn 6個版本的演進

      Nacos Server 安裝

      - :https://github.com/alibaba/Nacos/releases

      Linux 下的 安裝 (單節(jié)點)

      部署文檔: https://nacos.io/zh-cn/docs/deployment.html

      [root@VM-0-7-centos lb]# tar -xvzf 壓縮包.tar.gz [root@VM-0-7-centos lb]# cd nacos/bin [root@VM-0-7-centos bin]# ./startup.sh -m standalone 單機模式下運行 [root@VM-0-7-centos bin]# lsof -i:8848 [root@VM-0-7-centos bin]# sh shutdown.sh 停止nacos

      訪問服務(wù) http://ip:8848/nacos , 默認(rèn)的用戶名密碼是 nocas/nocas

      Nacos Client 接入

      Step 1 搞依賴

      com.alibaba.cloud spring-cloud-alibaba-nacos-discovery

      Step 2 搞注解 @EnableDiscoveryClient (高版本可省略)

      @SpringBootApplication @EnableDiscoveryClient public class ArtisanNacosClientOrderApplication { public static void main(String[] args) { SpringApplication.run(ArtisanNacosClientOrderApplication.class, args); } }

      Step 3 搞配置

      spring: cloud: nacos: discovery: server-addr: 4.117.97.88:8848 application: name: artisan-product-center

      server-addr 不需要寫協(xié)議(http) ,直接寫 ip:port

      Step 4 啟動服務(wù)端和客戶端

      啟動nacos server ,

      啟動 artisan-cloud-nacosclient-order 注冊到nacos server

      啟動 artisan-cloud-nacosclient-product 注冊到nacos server

      Step 5 驗證測試

      OrderInfoController 類增加

      @GetMapping("/getInstance") public List getInstances(@RequestParam(required = true) String appName) { return discoveryClient.getInstances(appName); } @GetMapping("/getServices") public List getServices() { return discoveryClient.getServices(); }

      源碼

      https://github.com/yangshangwei/SpringCloudAlibabMaster

      Spring Spring Cloud

      版權(quán)聲明:本文內(nèi)容由網(wǎng)絡(luò)用戶投稿,版權(quán)歸原作者所有,本站不擁有其著作權(quán),亦不承擔(dān)相應(yīng)法律責(zé)任。如果您發(fā)現(xiàn)本站中有涉嫌抄襲或描述失實的內(nèi)容,請聯(lián)系我們jiasou666@gmail.com 處理,核實后本網(wǎng)站將在24小時內(nèi)刪除侵權(quán)內(nèi)容。

      版權(quán)聲明:本文內(nèi)容由網(wǎng)絡(luò)用戶投稿,版權(quán)歸原作者所有,本站不擁有其著作權(quán),亦不承擔(dān)相應(yīng)法律責(zé)任。如果您發(fā)現(xiàn)本站中有涉嫌抄襲或描述失實的內(nèi)容,請聯(lián)系我們jiasou666@gmail.com 處理,核實后本網(wǎng)站將在24小時內(nèi)刪除侵權(quán)內(nèi)容。

      上一篇:Excel中能提高不少效率的神奇的雙擊應(yīng)用示例(excel雙擊)
      下一篇:Excel中條件格式的操作使用方法
      相關(guān)文章
      亚洲av不卡一区二区三区| 黑人粗长大战亚洲女2021国产精品成人免费视频 | 久久精品亚洲日本波多野结衣 | 亚洲国产模特在线播放| 亚洲av无码专区国产乱码在线观看| 亚洲中文字幕无码一区| 伊人久久综在合线亚洲91| 国产精品亚洲综合一区| 国产精品亚洲精品日韩已方| 久久久久亚洲?V成人无码| 久久久无码精品亚洲日韩软件| 亚洲中文字幕无码专区| 国产亚洲人成A在线V网站| 亚洲午夜国产精品无码老牛影视 | 亚洲永久网址在线观看| 伊人久久五月丁香综合中文亚洲| 欧洲 亚洲 国产图片综合| 亚洲午夜无码久久久久软件| 亚洲变态另类一区二区三区| 亚洲av日韩精品久久久久久a| 欧美激情综合亚洲一二区| 日韩亚洲国产二区| 亚洲免费一区二区| 国产精品亚洲一区二区三区在线 | 久久国产精品亚洲一区二区| 亚洲乱亚洲乱淫久久| 亚洲一区综合在线播放| 亚洲国产美女精品久久| 亚洲综合色丁香婷婷六月图片| 亚洲色欲色欱wwW在线| 毛片亚洲AV无码精品国产午夜| 亚洲免费日韩无码系列| 亚洲精品国产品国语在线| 亚洲av色福利天堂| 亚洲电影在线播放| 亚洲综合精品伊人久久| 在线亚洲v日韩v| 亚洲毛片αv无线播放一区| 亚洲日本中文字幕| 性xxxx黑人与亚洲| 无码天堂va亚洲va在线va|