解密:註冊中心的妙用

一、註冊中心是什麼

註冊中心是一個分散式系統中的關鍵組成部分,它可以統一管理服務的註冊與發現,用於解決分散式系統中服務間的相互調用問題。通過中心化管理,可以對服務的註冊和下線進行管理,同時實現負載均衡等功能。在這裡以Eureka為例,來介紹註冊中心具體是如何工作的。

@SpringBootApplication
@EnableEurekaServer
public class EurekaApplication {

    public static void main(String[] args) {
        SpringApplication.run(EurekaApplication.class, args);
    }

}

如上所示,啟動一個Eureka註冊中心非常簡單,只需要引入Spring Cloud Eureka依賴,並在啟動類上添加註解@EnableEurekaServer即可。

二、服務註冊與發現

對於服務提供者,將自己服務註冊到註冊中心非常簡單。在服務啟動時,只需要向註冊中心註冊自己的服務名、實例IP地址、埠等信息即可。示例代碼如下:

@RestController
@EnableEurekaClient
public class DemoController {

    @Value("${server.port}")
    String port;

    @RequestMapping("/hello")
    public String home(@RequestParam String name) {
        return "hello " + name + ",i am from port:" + port;
    }

}

在代碼中,通過添加@EnableEurekaClient註解,將該服務註冊到了Eureka註冊中心,同時通過@Value註解注入服務實例的埠信息。客戶端通過向註冊中心發送查詢請求,就可以獲得可用的服務實例信息。代碼如下:

@SpringBootApplication
@EnableDiscoveryClient
public class ConsumerApplication {

    public static void main(String[] args) {
        SpringApplication.run(ConsumerApplication.class, args);
    }

    @Bean
    @LoadBalanced
    RestTemplate restTemplate() {
        return new RestTemplate();
    }

    @Autowired
    RestTemplate restTemplate;

    @RequestMapping("/callService")
    public String callService(@RequestParam String name) {
        return restTemplate.getForObject("http://service/hello?name=" + name, String.class);
    }

}

使用RestTemplate向服務提供者發送HTTP請求時,只需要通過服務名即可獲取可用的服務,這裡的服務名就是在服務提供者向Eureka註冊中心註冊時指定的服務名。通過添加@EnableDiscoveryClient註解,就可以讓該服務具有服務發現的能力。

三、高可用性與負載均衡

為了保證高可用性,我們需要搭建多個Eureka Server,同時讓它們相互註冊到對方。當其中一台Eureka Server掛掉時,其他Eureka Server就可以接管它的職責。這裡以雙節點的集群為例,來介紹Eureka Server的高可用性配置。

server.port=8761

eureka.instance.hostname=localhost
eureka.client.register-with-eureka=false
eureka.client.fetch-registry=false
eureka.client.service-url.defaultZone=http://localhost:8762/eureka/

在上述配置中,將當前Eureka Server註冊到了localhost:8762上,同時禁止了該實例作為服務提供者進行註冊。啟動時指定不同的配置,就可以啟動不同埠上的Eureka Server,從而搭建出一個Eureka Server集群。

原創文章,作者:小藍,如若轉載,請註明出處:https://www.506064.com/zh-tw/n/280369.html

(0)
打賞 微信掃一掃 微信掃一掃 支付寶掃一掃 支付寶掃一掃
小藍的頭像小藍
上一篇 2024-12-21 13:03
下一篇 2024-12-21 13:03

相關推薦

  • ArcGIS更改標註位置為中心的方法

    本篇文章將從多個方面詳細闡述如何在ArcGIS中更改標註位置為中心。讓我們一步步來看。 一、禁止標註智能調整 在ArcMap中設置標註智能調整可以自動將標註位置調整到最佳顯示位置。…

    編程 2025-04-29
  • CPU爆滿怎麼解決 Java為中心

    在Java編程中,難免會遇到CPU佔用過高的情況,接下來從多個方面介紹如何解決CPU爆滿問題。 一、優化代碼 1、減少循環次數。循環體內不要放太多邏輯判斷和計算,可以把計算提取出來…

    編程 2025-04-29
  • CMD如何升級為中心?

    本文將詳細介紹在Windows操作系統下如何將CMD升級為中心,以及如何在升級後使用CMD中心進行操作。 一、下載Windows Terminal Windows Terminal…

    編程 2025-04-29
  • 如何使用GPU加速運行Python程序——以CSDN為中心

    GPU的強大性能是眾所周知的。而隨著深度學習和機器學習的發展,越來越多的Python開發者將GPU應用於深度學習模型的訓練過程中,提高了模型訓練效率。在本文中,我們將介紹如何使用G…

    編程 2025-04-29
  • 如何修改ant組件的動效為中心

    當我們使用Ant Design時,其默認的組件動效可能不一定符合我們的需求,這時我們需要修改Ant Design組件動效,使其更加符合我們的UI設計。本文將從多個方面詳細闡述如何修…

    編程 2025-04-29
  • 黑夜不迷途打一中藥名為中心

    中藥作為中華民族獨有的藥物療法,已經歷了千百年的歷史,在中醫中發揮著重要的作用。其中有一種藥物,以「黑夜不迷途」為謎底,是一種著名的中藥。下面將從藥物的組成、功效、用法等方面,進行…

    編程 2025-04-29
  • Python作為中心語言,在編程中取代C語言的優勢和挑戰

    Python一直以其簡單易懂的語法和高效的編碼環境而著名。然而,它最近的發展趨勢表明Python的使用範圍已經從腳本語言擴展到了從Web應用到機器學習等廣泛的開發領域。與此同時,C…

    編程 2025-04-28
  • 為什麼要除為中心進行平均分組

    平均分組是指將數據分為若干組,使得每組的數據之和儘可能相等,這樣可以更好地控制數據波動,減少誤差。然而,為什麼要除為中心進行平均分組呢?本文將從多個方面進行闡述。 一、分組方式的影…

    編程 2025-04-28
  • 全能編程開發工程師-以keysuper為中心

    keysuper,是一款能夠實現各種編程語言的關鍵字補全和智能選單功能的插件,它的便利性在開發中發揮了越來越大的作用。以下是本文將為您詳細介紹的內容: 一、keysuper為何具有…

    編程 2025-04-28
  • Python如何做表格為中心

    本文將從多個方面詳細闡述Python如何做表格,包括表格的創建、數據的插入、表格的樣式設置等內容。 一、創建表格 要在Python中創建表格,我們可以使用第三方庫Pandas。具體…

    編程 2025-04-28

發表回復

登錄後才能評論