91超碰碰碰碰久久久久久综合_超碰av人澡人澡人澡人澡人掠_国产黄大片在线观看画质优化_txt小说免费全本

溫馨提示×

溫馨提示×

您好,登錄后才能下訂單哦!

密碼登錄×
登錄注冊×
其他方式登錄
點擊 登錄注冊 即表示同意《億速云用戶服務條款》

eureka中怎么把自己的服務打造的更加人性化

發布時間:2022-01-11 10:27:05 來源:億速云 閱讀:148 作者:iii 欄目:服務器

本篇內容介紹了“eureka中怎么把自己的服務打造的更加人性化”的有關知識,在實際案例的操作過程中,不少人都會遇到這樣的困境,接下來就讓小編帶領大家學習一下如何處理這些情況吧!希望大家仔細閱讀,能夠學有所成!

先來看下 eureka 的可視化界面如下。

eureka中怎么把自己的服務打造的更加人性化

我們知道,左側的服務名稱MICROSERVICE-ORDER 是在項目中通過配置文件指定的。右邊的信息是注冊到 eureka 的服務信息,但是通過這個信息,我們無法獲知具體的細節。我們首先要改的就是這個地方。

1. 給服務起個更順眼的名字

我先打個比方,還是上一節舉的例子,很多創業公司入住經濟開發區的寫字樓,那每個公司總得有名字吧,或者對外總得有一個合適的稱呼吧,你不能用一大長串公司代碼來指定該公司,這樣不僅不容易記住,更重要的是不好識別。

當有很多微服務注冊到 Eureka 時,如果有哪個服務壞掉了,我們希望是能夠很直觀的知道是哪個服務出了問題,這樣能更加快捷的定位問題。比如我們知道這是個訂單服務,端口號是 8001,那么如果我們直接顯示 “訂單服務-8001”,是不是更加直觀呢?答案是肯定的,我們在訂單服務的配置文件中,通過eureka.instance.instance-id 即可指定。如下:

eureka中怎么把自己的服務打造的更加人性化

2. 給服務指定一個正確的 IP

上面我們給服務指定了一個更順眼的名字,但是當我們把鼠標移到上面時,觀看左下角的 url 信息,如下:

eureka中怎么把自己的服務打造的更加人性化

可以看到,顯示的是:http://ifly-1741:8001/actuator/info,這不知道是啥啊。

這就好比說,我告訴你,你要想來了解我們公司的信息,你可以來 xxx 大樓8001層來了解。但是我根本就不知道 xxx 大樓的地址啊……

我們當然不希望出現這種情況,可讀性太低了,這里理論上應該是顯示該服務自身的 ip 才對,那么如何讓這里的 ip 顯示正常呢?

eureka 有個配置eureka.instance.prefer-ip-address,該配置默認為 false,我們需要把它設置為 true,這樣就能正常顯示 ip 地址了。

eureka中怎么把自己的服務打造的更加人性化

3. 給服務一個展示詳細信息頁面

做好了上面這一步之后,我們點擊“訂單服務-8001”這個鏈接,會訪問:

http://192.168.75.1:8001/actuator/info這個地址,這沒問題。但是發現會報404錯誤,說明并不能找到該服務的詳細信息。

這就好比說,我這公司的名字也起了,地址也給你了,你接下來就跟著高德地圖的導航來找我了,但是我的信息還沒有導入到高德地圖啊……也就是說,高德地圖還不能監視到我的信息,你當然找不到我了。那怎么辦呢?

我們看這個 url 里面有個 actuator,沒錯,Actuator 在 Spring Boot 中是用來監控的,我們在使用時需要導入這個依賴。

<!-- spring boot actuator 監控信息 -->
<dependency>
   <groupId>org.springframework.boot</groupId>
   <artifactId>spring-boot-starter-actuator</artifactId>
</dependency>

但是光導入依賴還不行啊,就好比你去高德地圖注冊了賬號,但是你的詳細信息還得錄入到高德地圖的系統里啊。那怎么辦呢?

在導入了 actuator 依賴后,我們可以在配置文件中可以將這些服務的相關信息給初始化好,當用戶點擊上面的服務鏈接后,就可以以 json 的格式展示出來。比如:

# 用來展示項目的基本信息
info:
 author.name: shengwu ni
 app.name: microservice
 server.port: ${server.port}
 application.name: ${spring.application.name}

當點擊“訂單服務-8001”訪問 http://192.168.75.1:8001/actuator/info 時就會出現以下 json,即我們項目中配置的信息。

{
   "author": {
       "name": "shengwu ni"
   },
   "app": {
       "name": "microservice"
   },
   "server": {
       "port": "8001"
   },
   "application": {
       "name": "microservice-order"
   }
}

哎?這樣就比較友好了,我公司名字也有了,地址也給你了,在地圖上的信息也錄入了,接下來你就可以順利到我公司來參觀,來了解我司信息了。

4. 給別人一個了解你的機會

通過上面一些配置,這個服務的相關信息可以說比較友好了。但是還有個問題啊,我公司別名起好了,地址也有了,也錄入地圖里了,但是我怎么能讓外界知道這些信息呢?我得有個公司主頁吧,也就是說,得有個入口讓別人知道這些信息才行。

這就叫服務發現。我們都說 Eureka 服務注冊與發現,說到現在,我們一直在討論 Eureka 的服務注冊功能,讓服務注冊到 Eureka 中,我們可以在 Eureka 界面看到這些服務,但是如何被外界發現呢?我們需要暴露一個接口給外界,專門提供本服務的詳細信息。

如何提供呢?我們需要寫一個接口,暴露給外界調用,如下:

/**
* 訂單服務
* @author shengwu ni
*/
@RestController
@RequestMapping("/provider/order")
public class OrderProviderController {

   @Resource
   private EurekaClient client;
   
   private static final Logger LOGGER = LoggerFactory.getLogger(OrderProviderController.class);
   
   @GetMapping("/discovery")
   public Object discovery() {
       // 獲取Eureka中所有的服務節點
       List<Application> applications = client.getApplications().getRegisteredApplications();
       if (applications != null) {
           for (Application application : applications) {
               // 對外暴露的服務名稱
               String name = application.getName();
               // 只看訂單服務信息
               if ("MICROSERVICE-ORDER".equals(name)) {
                   // 服務有多少個實例,比如訂單服務可能部署了多個,有多個訂單服務注冊到了eureka
                   List<InstanceInfo> instances = application.getInstances();
                   LOGGER.info("所有的訂單服務:{}", instances);
                   if (instances != null) {
                       for (InstanceInfo info : instances) {
                           LOGGER.info("服務id:{}", info.getInstanceId());
                           LOGGER.info("服務主機:{}", info.getHostName());
                           LOGGER.info("服務端口:{}", info.getPort());
                       }
                   }
                   return instances;
               }
           }
       }
       return null;
   }
}

首先,需要引入 EurekaClient 端,在接口內部,通過 EurekaClient 獲取到注冊在 Eureka 上的所有 Application,這里的 application 其實就是我們常說的服務節點,從而獲取到服務節點的信息,包括服務節點的名稱、狀態、IP、端口、心跳情況等信息。直接將服務的信息返回即可。

這樣我們通過訪問該接口,通過返回的 json 可以很清楚的看到服務的詳細信息了。

eureka中怎么把自己的服務打造的更加人性化

“eureka中怎么把自己的服務打造的更加人性化”的內容就介紹到這里了,感謝大家的閱讀。如果想了解更多行業相關的知識可以關注億速云網站,小編將為大家輸出更多高質量的實用文章!

向AI問一下細節

免責聲明:本站發布的內容(圖片、視頻和文字)以原創、轉載和分享為主,文章觀點不代表本網站立場,如果涉及侵權請聯系站長郵箱:is@yisu.com進行舉報,并提供相關證據,一經查實,將立刻刪除涉嫌侵權內容。

AI

璧山县| 岳普湖县| 曲沃县| 永州市| 德安县| 华亭县| 泰州市| 广东省| 仁布县| 宁蒗| 当涂县| 竹溪县| 西宁市| 西乌珠穆沁旗| 宁国市| 昭苏县| 扶风县| 体育| 宜君县| 浦县| 广昌县| 桐乡市| 海城市| 盐山县| 巴塘县| 新乡县| 广西| 宁南县| 烟台市| 佛学| 新安县| 安泽县| 清新县| 宁夏| 祥云县| 磐安县| 蓬溪县| 南京市| 靖远县| 福建省| 太康县|