{"id":607,"date":"2023-05-27T14:18:34","date_gmt":"2023-05-27T06:18:34","guid":{"rendered":"http:\/\/www.huerpu.cc:7000\/?p=607"},"modified":"2023-05-27T14:18:34","modified_gmt":"2023-05-27T06:18:34","slug":"spring-cloudkilburn-2022-0-2%e7%89%88%e6%9c%ac%e7%b3%bb%e5%88%97%e6%95%99%e7%a8%8b%e4%b8%80-eureka","status":"publish","type":"post","link":"http:\/\/www.huerpu.cc:7000\/?p=607","title":{"rendered":"Spring Cloud(Kilburn 2022.0.2\u7248\u672c)\u7cfb\u5217\u6559\u7a0b(\u4e00) eureka"},"content":{"rendered":"<h3>Spring Cloud(Kilburn 2022.0.2\u7248\u672c)\u7cfb\u5217\u6559\u7a0b(\u4e00) eureka<\/h3>\n<blockquote>\n<p>\u4e3a\u4e86\u66f4\u597d\u7684\u6d4f\u89c8\u4f53\u9a8c\uff0c\u6b22\u8fce\u5149\u987e\u52e4\u594b\u7684\u51ef\u5c14\u68ee\u540c\u5b66\u4e2a\u4eba\u535a\u5ba2<a href=\"http:\/\/www.huerpu.cc:7000\">http:\/\/www.huerpu.cc:7000<\/a><\/p>\n<p>\u5c0f\u666f\u54e5\u54e5\u662f\u4e00\u4e2a\u8ffd\u6c42\u5b8c\u7f8e\u7684\u4eba\uff0c\u6240\u4ee5\u7eb5\u89c2\u5404\u4f4d\u5927\u795e\u7684<code>SpringCloud<\/code>\u6559\u7a0b\uff0c\u53d1\u73b0\u7248\u672c\u90fd\u6bd4\u8f83\u4f4e\uff0c\u6240\u4ee5\u51fa\u4e8e\u5bf9\u65b0\u6280\u672f\u7684\u8ffd\u6c42\uff0c\u7279\u51fa\u6b64\u6700\u65b0\u7248\u672c(Spring Cloud(Kilburn 2022.0.2\u7248\u672c)\u622a\u6b62\u5199\u6b64\u535a\u5ba2\u65f6)\u7684\u6559\u7a0b\uff0c\u5982\u6709\u9519\u8bef\u6073\u8bf7\u5927\u5bb6\u6279\u8bc4\u6307\u6b63\uff0c\u4e0e\u5927\u5bb6\u5171\u540c\u5b66\u4e60\u3001\u4e00\u8d77\u6210\u957f\uff0c\u4e07\u5206\u611f\u8c22\u3002<\/p>\n<\/blockquote>\n<h3>\u4e00\u3001\u6784\u5efa\u73af\u5883<\/h3>\n<p><code>Spring Cloud<\/code>\u7684\u6784\u5efa\u5de5\u5177\u53ef\u4ee5\u4f7f\u7528<code>Maven<\/code>\u6216<code>Gradle<\/code>\uff0c\u4f46<code>Maven<\/code>\u4efb\u7136\u662f\u4e3b\u6d41\u3002\u672c\u6587\u6863\u6240\u4f7f\u7528\u7684\u5f00\u53d1\u73af\u5883\u5982\u4e0b\uff1a<\/p>\n<table>\n<thead>\n<tr>\n<th style=\"text-align: center;\">\u73af\u5883\u53c2\u6570<\/th>\n<th style=\"text-align: center;\">\u7248\u672c<\/th>\n<\/tr>\n<\/thead>\n<tbody>\n<tr>\n<td style=\"text-align: center;\"><code>JDK<\/code><\/td>\n<td style=\"text-align: center;\">17<\/td>\n<\/tr>\n<tr>\n<td style=\"text-align: center;\"><code>Maven<\/code><\/td>\n<td style=\"text-align: center;\">3.9.1<\/td>\n<\/tr>\n<tr>\n<td style=\"text-align: center;\"><code>Spring Cloud<\/code><\/td>\n<td style=\"text-align: center;\">4.0.2<\/td>\n<\/tr>\n<tr>\n<td style=\"text-align: center;\">IDE<\/td>\n<td style=\"text-align: center;\"><code>idea2023.1 U<\/code><\/td>\n<\/tr>\n<tr>\n<td style=\"text-align: center;\">OS<\/td>\n<td style=\"text-align: center;\"><code>Windows11<\/code>\u4e13\u4e1a\u7248<\/td>\n<\/tr>\n<\/tbody>\n<\/table>\n<p><code>Spring Cloud<\/code>\u76f8\u5173\u6a21\u5757<\/p>\n<table>\n<thead>\n<tr>\n<th style=\"text-align: center;\">\u6a21\u5757<\/th>\n<th style=\"text-align: center;\">\u8bf4\u660e<\/th>\n<\/tr>\n<\/thead>\n<tbody>\n<tr>\n<td style=\"text-align: center;\">Eureka<\/td>\n<td style=\"text-align: center;\">\u670d\u52a1\u6ce8\u518c\u4e2d\u5fc3\uff0c\u7528\u4e8e\u670d\u52a1\u7ba1\u7406<\/td>\n<\/tr>\n<tr>\n<td style=\"text-align: center;\">Ribbon<\/td>\n<td style=\"text-align: center;\">\u57fa\u4e8e\u5ba2\u6237\u7aef\u7684\u8d1f\u8f7d\u5747\u8861\u7ec4\u4ef6<\/td>\n<\/tr>\n<tr>\n<td style=\"text-align: center;\">Hystrix<\/td>\n<td style=\"text-align: center;\">\u5bb9\u9519\u6846\u67b6\uff0c\u80fd\u591f\u9632\u6b62\u670d\u52a1\u7684\u96ea\u5d29\u6548\u5e94<\/td>\n<\/tr>\n<tr>\n<td style=\"text-align: center;\">Feign<\/td>\n<td style=\"text-align: center;\">Web\u670d\u52a1\u5ba2\u6237\u7aef\uff0c\u80fd\u591f\u7b80\u5316HTTP\u63a5\u53e3\u7684\u8c03\u7528<\/td>\n<\/tr>\n<tr>\n<td style=\"text-align: center;\">Zuul<\/td>\n<td style=\"text-align: center;\">API\u7f51\u5173\uff0c\u63d0\u4f9b\u8def\u7531\u8f6c\u53d1\u3001\u8bf7\u6c42\u8fc7\u6ee4\u7b49\u529f\u80fd<\/td>\n<\/tr>\n<tr>\n<td style=\"text-align: center;\">Config<\/td>\n<td style=\"text-align: center;\">\u5206\u5e03\u5f0f\u914d\u7f6e\u7ba1\u7406<\/td>\n<\/tr>\n<tr>\n<td style=\"text-align: center;\">Sleuth<\/td>\n<td style=\"text-align: center;\">\u670d\u52a1\u8ddf\u8e2a<\/td>\n<\/tr>\n<tr>\n<td style=\"text-align: center;\">Stream<\/td>\n<td style=\"text-align: center;\">\u6784\u5efa\u6d88\u606f\u9a71\u52a8\u7684\u5fae\u670d\u52a1\u5e94\u7528\u7a0b\u5e8f\u7684\u6846\u67b6<\/td>\n<\/tr>\n<tr>\n<td style=\"text-align: center;\">Bus<\/td>\n<td style=\"text-align: center;\">\u6d88\u606f\u4ee3\u7406\u7684\u96c6\u7fa4\u6d88\u606f\u603b\u7ebf<\/td>\n<\/tr>\n<\/tbody>\n<\/table>\n<p>\u4f46<code>Spring Cloud<\/code>\u4e3b\u8981\u67095\u5927\u7ec4\u4ef6\uff0c\u5206\u522b\u4e3a\u670d\u52a1\u53d1\u73b0\u7ec4\u4ef6<code>Eureka<\/code>\u3001<code>Feign<\/code>\u3001<code>Ribbon<\/code>\u3001<code>Zuul<\/code>\u3001<code>Hystrix<\/code>\u3002\u4f46\u5f88\u591a\u90fd\u5f03\u7528\u4e86\uff0c\u6bd4\u5982Ribbon\u7b49\u3002<\/p>\n<p>\u6ce8\uff1a<code>SpringCloud<\/code>\u7248\u672c\u8bf4\u660e<\/p>\n<table>\n<thead>\n<tr>\n<th style=\"text-align: center;\">\u82f1\u6587<\/th>\n<th style=\"text-align: center;\">\u4e2d\u6587<\/th>\n<th style=\"text-align: center;\">boot\u5927\u7248\u672c<\/th>\n<th style=\"text-align: center;\">boot\u4ee3\u8868<\/th>\n<\/tr>\n<\/thead>\n<tbody>\n<tr>\n<td style=\"text-align: center;\">Angel<\/td>\n<td style=\"text-align: center;\">\u5b89\u5409\u5c14<\/td>\n<td style=\"text-align: center;\">1.2.X<\/td>\n<td style=\"text-align: center;\">1.2.8<\/td>\n<\/tr>\n<tr>\n<td style=\"text-align: center;\">Brixton<\/td>\n<td style=\"text-align: center;\">\u5e03\u91cc\u514b\u65af\u987f<\/td>\n<td style=\"text-align: center;\">1.3.X<\/td>\n<td style=\"text-align: center;\">1.3.8<\/td>\n<\/tr>\n<tr>\n<td style=\"text-align: center;\">Camden<\/td>\n<td style=\"text-align: center;\">\u5361\u6885\u767b<\/td>\n<td style=\"text-align: center;\">1.4.X<\/td>\n<td style=\"text-align: center;\">1.4.2<\/td>\n<\/tr>\n<tr>\n<td style=\"text-align: center;\">Dalston<\/td>\n<td style=\"text-align: center;\">\u8fbe\u65af\u987f<\/td>\n<td style=\"text-align: center;\">1.5.X<\/td>\n<td style=\"text-align: center;\">1.5.0<\/td>\n<\/tr>\n<tr>\n<td style=\"text-align: center;\">Edgware<\/td>\n<td style=\"text-align: center;\">\u827e\u5947\u97e6\u5c14<\/td>\n<td style=\"text-align: center;\">1.5.X<\/td>\n<td style=\"text-align: center;\">1.5.19<\/td>\n<\/tr>\n<tr>\n<td style=\"text-align: center;\">Finchley<\/td>\n<td style=\"text-align: center;\">\u82ac\u5947\u5229<\/td>\n<td style=\"text-align: center;\">2.0.X<\/td>\n<td style=\"text-align: center;\">2.0.8<\/td>\n<\/tr>\n<tr>\n<td style=\"text-align: center;\">Greenwich<\/td>\n<td style=\"text-align: center;\">\u683c\u6797\u5a01\u6cbb<\/td>\n<td style=\"text-align: center;\">2.1.X<\/td>\n<td style=\"text-align: center;\">2.1.2<\/td>\n<\/tr>\n<tr>\n<td style=\"text-align: center;\">Hoxton<\/td>\n<td style=\"text-align: center;\">\u970d\u514b\u65af\u987f<\/td>\n<td style=\"text-align: center;\">2.2.X<\/td>\n<td style=\"text-align: center;\">2.2.6<\/td>\n<\/tr>\n<tr>\n<td style=\"text-align: center;\">2020.0.6-aka Ilford<\/td>\n<td style=\"text-align: center;\">\u57c3\u798f\u7684<\/td>\n<td style=\"text-align: center;\">2.5.7<\/td>\n<td style=\"text-align: center;\">2.5.7<\/td>\n<\/tr>\n<tr>\n<td style=\"text-align: center;\">2021.0.6 Jubilee<\/td>\n<td style=\"text-align: center;\">\u6731\u6bd4\u5229<\/td>\n<td style=\"text-align: center;\">2.6.x<\/td>\n<td style=\"text-align: center;\">2.6.1<\/td>\n<\/tr>\n<tr>\n<td style=\"text-align: center;\">2022.0.0 Kilburn<\/td>\n<td style=\"text-align: center;\">\u57fa\u5c14\u4f2f\u6069<\/td>\n<td style=\"text-align: center;\">3.0.x<\/td>\n<td style=\"text-align: center;\">3.0.5<\/td>\n<\/tr>\n<\/tbody>\n<\/table>\n<h3>\u4e8c\u3001\u5fae\u670d\u52a1\u6ce8\u518c\u4e0e\u53d1\u73b0<\/h3>\n<p><code>Spring Cloud<\/code>\u63d0\u4f9b\u4e86\u5f88\u591a\u670d\u52a1\u53d1\u73b0\u7ec4\u4ef6\uff0c\u6bd4\u5982\uff1a<code>Eureka<\/code>\u3001<code>Consul<\/code>\u3001<code>ZooKeeper<\/code>\u7b49\u3002\u800c<code>Eureka<\/code>\u662f<code>Netflix<\/code>\u5f00\u6e90\u7684\u670d\u52a1\u53d1\u73b0\u7ec4\u4ef6\uff0c\u5b83\u5305\u542bServer\u548cClient\u4e24\u90e8\u5206\u3002<code>Eureka Server<\/code>\u63d0\u4f9b\u670d\u52a1\u53d1\u73b0\u7684\u80fd\u529b\uff0c\u6bcf\u4e2a\u5fae\u670d\u52a1\u542f\u52a8\u65f6\uff0c\u90fd\u4f1a\u5411<code>Eureka Server<\/code>\u6ce8\u518c\u81ea\u5df1\u7684\u4fe1\u606f(IP\u3001\u7aef\u53e3\u3001\u5fae\u670d\u52a1\u540d\u79f0\u7b49)\uff0c<code>Eureka Server<\/code>\u5b58\u50a8\u8bb0\u5f55\u6bcf\u4e2a\u5fae\u670d\u52a1\u7684\u8fd9\u4e9b\u4fe1\u606f\u3002<code>Eureka Client<\/code>\u662f\u7528\u4e8e\u7b80\u5316\u4e0e<code>Eureka Server<\/code>\u4ea4\u4e92\u7684Java\u5ba2\u6237\u7aef\u3002\u5fae\u670d\u52a1\u542f\u52a8\u540e\uff0c\u4f1a\u5468\u671f\u6027\u5730(\u9ed8\u8ba430s)\u5411<code>Eureka Server<\/code>\u53d1\u9001\u5fc3\u8df3\u4ee5\u7eed\u7ea6\u81ea\u5df1\u7684\u53ef\u7528\u65f6\u95f4\u3002\u5982\u679c<code>Eureka Server<\/code>\u5728\u89c4\u5b9a\u7684\u65f6\u95f4\u5185\u6ca1\u6709\u63a5\u6536\u5230\u5fae\u670d\u52a1\u5b9e\u4f8b\u7684\u5fc3\u8df3\uff0c<code>Eureka Server<\/code>\u5219\u4f1a\u5c06\u8be5\u5b9e\u4f8b\u6ce8\u9500(\u9ed8\u8ba490s)\u3002<\/p>\n<p><strong>\u5e38\u89c1\u7684\u6ce8\u518c\u4e2d\u5fc3<\/strong><\/p>\n<table>\n<thead>\n<tr>\n<th style=\"text-align: center;\">\u7ec4\u4ef6\u540d<\/th>\n<th style=\"text-align: center;\">\u8bed\u8a00<\/th>\n<th style=\"text-align: center;\">CAP<\/th>\n<th style=\"text-align: center;\">\u4e00\u81f4\u6027\u7b97\u6cd5<\/th>\n<th style=\"text-align: center;\">\u670d\u52a1\u5065\u5eb7\u68c0\u67e5<\/th>\n<th style=\"text-align: center;\">\u5bf9\u5916\u66b4\u9732\u63a5\u53e3<\/th>\n<\/tr>\n<\/thead>\n<tbody>\n<tr>\n<td style=\"text-align: center;\">Eureka<\/td>\n<td style=\"text-align: center;\">Java<\/td>\n<td style=\"text-align: center;\">AP<\/td>\n<td style=\"text-align: center;\">\u65e0<\/td>\n<td style=\"text-align: center;\">\u53ef\u914d\u652f\u6301<\/td>\n<td style=\"text-align: center;\">HTTP<\/td>\n<\/tr>\n<tr>\n<td style=\"text-align: center;\">Consul<\/td>\n<td style=\"text-align: center;\">Go<\/td>\n<td style=\"text-align: center;\">CP<\/td>\n<td style=\"text-align: center;\">Raft<\/td>\n<td style=\"text-align: center;\">\u652f\u6301<\/td>\n<td style=\"text-align: center;\">HTTP\/DNS<\/td>\n<\/tr>\n<tr>\n<td style=\"text-align: center;\">Zookeeper<\/td>\n<td style=\"text-align: center;\">Java<\/td>\n<td style=\"text-align: center;\">CP<\/td>\n<td style=\"text-align: center;\">Paxos<\/td>\n<td style=\"text-align: center;\">\u652f\u6301<\/td>\n<td style=\"text-align: center;\">\u5ba2\u6237\u7aef<\/td>\n<\/tr>\n<tr>\n<td style=\"text-align: center;\">Nacos<\/td>\n<td style=\"text-align: center;\">Java<\/td>\n<td style=\"text-align: center;\">AP<\/td>\n<td style=\"text-align: center;\">Raft<\/td>\n<td style=\"text-align: center;\">\u652f\u6301<\/td>\n<td style=\"text-align: center;\">HTTP<\/td>\n<\/tr>\n<\/tbody>\n<\/table>\n<h4>2.1 \u521b\u5efa<code>EurekaServer<\/code><\/h4>\n<p>\u5728idea\u4e2d\uff0c\u521b\u5efa\u4e00\u4e2a\u540d\u79f0\u4e3a<code>eurekaServer<\/code>\u7684<code>Maven<\/code>\u5de5\u7a0b\u3002<\/p>\n<p><img decoding=\"async\" src=\"\/wp-content\/uploads\/2023\/04\/16\/001.png\" alt=\"001\" \/><\/p>\n<p><img decoding=\"async\" src=\"\/wp-content\/uploads\/2023\/04\/16\/002.png\" alt=\"002\" \/><\/p>\n<p><img decoding=\"async\" src=\"\/wp-content\/uploads\/2023\/04\/18\/222.png\" alt=\"222\" \/><\/p>\n<p><img decoding=\"async\" src=\"\/wp-content\/uploads\/2023\/04\/16\/004.png\" alt=\"004\" \/><\/p>\n<p><code>pom.xml<\/code>\u6587\u4ef6\u589e\u52a0<code>Eureka<\/code>\u4f9d\u8d56<\/p>\n<pre><code class=\"language-xml\">&lt;?xml version=&quot;1.0&quot; encoding=&quot;UTF-8&quot;?&gt;\n&lt;project xmlns=&quot;http:\/\/maven.apache.org\/POM\/4.0.0&quot; xmlns:xsi=&quot;http:\/\/www.w3.org\/2001\/XMLSchema-instance&quot;\n         xsi:schemaLocation=&quot;http:\/\/maven.apache.org\/POM\/4.0.0 https:\/\/maven.apache.org\/xsd\/maven-4.0.0.xsd&quot;&gt;\n    &lt;modelVersion&gt;4.0.0&lt;\/modelVersion&gt;\n    &lt;parent&gt;\n        &lt;groupId&gt;org.springframework.boot&lt;\/groupId&gt;\n        &lt;artifactId&gt;spring-boot-starter-parent&lt;\/artifactId&gt;\n        &lt;version&gt;3.0.5&lt;\/version&gt;\n        &lt;relativePath\/&gt; &lt;!-- lookup parent from repository --&gt;\n    &lt;\/parent&gt;\n    &lt;groupId&gt;cc.huerpu&lt;\/groupId&gt;\n    &lt;artifactId&gt;eurekaServer&lt;\/artifactId&gt;\n    &lt;version&gt;0.0.1-SNAPSHOT&lt;\/version&gt;\n    &lt;name&gt;eurekaServer&lt;\/name&gt;\n    &lt;description&gt;eurekaServer&lt;\/description&gt;\n    &lt;properties&gt;\n        &lt;java.version&gt;17&lt;\/java.version&gt;\n        &lt;spring-cloud.version&gt;2022.0.2&lt;\/spring-cloud.version&gt;\n    &lt;\/properties&gt;\n    &lt;dependencies&gt;\n        &lt;dependency&gt;\n            &lt;groupId&gt;org.springframework.cloud&lt;\/groupId&gt;\n            &lt;artifactId&gt;spring-cloud-starter-netflix-eureka-server&lt;\/artifactId&gt;\n        &lt;\/dependency&gt;\n\n        &lt;dependency&gt;\n            &lt;groupId&gt;org.springframework.boot&lt;\/groupId&gt;\n            &lt;artifactId&gt;spring-boot-starter-test&lt;\/artifactId&gt;\n            &lt;scope&gt;test&lt;\/scope&gt;\n        &lt;\/dependency&gt;\n    &lt;\/dependencies&gt;\n    &lt;dependencyManagement&gt;\n        &lt;dependencies&gt;\n            &lt;dependency&gt;\n                &lt;groupId&gt;org.springframework.cloud&lt;\/groupId&gt;\n                &lt;artifactId&gt;spring-cloud-dependencies&lt;\/artifactId&gt;\n                &lt;version&gt;2022.0.2&lt;\/version&gt;\n                &lt;type&gt;pom&lt;\/type&gt;\n                &lt;scope&gt;import&lt;\/scope&gt;\n            &lt;\/dependency&gt;\n        &lt;\/dependencies&gt;\n    &lt;\/dependencyManagement&gt;\n\n    &lt;build&gt;\n        &lt;plugins&gt;\n            &lt;plugin&gt;\n                &lt;groupId&gt;org.springframework.boot&lt;\/groupId&gt;\n                &lt;artifactId&gt;spring-boot-maven-plugin&lt;\/artifactId&gt;\n            &lt;\/plugin&gt;\n        &lt;\/plugins&gt;\n    &lt;\/build&gt;\n    &lt;repositories&gt;\n        &lt;repository&gt;\n            &lt;id&gt;netflix-candidates&lt;\/id&gt;\n            &lt;name&gt;Netflix Candidates&lt;\/name&gt;\n            &lt;url&gt;https:\/\/artifactory-oss.prod.netflix.net\/artifactory\/maven-oss-candidates&lt;\/url&gt;\n            &lt;snapshots&gt;\n                &lt;enabled&gt;false&lt;\/enabled&gt;\n            &lt;\/snapshots&gt;\n        &lt;\/repository&gt;\n    &lt;\/repositories&gt;\n\n&lt;\/project&gt;<\/code><\/pre>\n<p>\u4fee\u6539<code>EurekaServerApplication<\/code>\u542f\u52a8\u7c7b\uff0c\u589e\u52a0<code>@EnableEurekaServer<\/code>\u6ce8\u89e3\u3002<\/p>\n<pre><code class=\"language-Java\">package cc.huerpu.eurekaserver;\n\nimport org.springframework.boot.SpringApplication;\nimport org.springframework.boot.autoconfigure.SpringBootApplication;\nimport org.springframework.cloud.netflix.eureka.server.EnableEurekaServer;\n\n@SpringBootApplication\n@EnableEurekaServer\npublic class EurekaServerApplication {\n\n    public static void main(String[] args) {\n        SpringApplication.run(EurekaServerApplication.class, args);\n    }\n\n}<\/code><\/pre>\n<p>\u521b\u5efa<code>application.yml<\/code>\u6587\u4ef6<\/p>\n<pre><code class=\"language-yaml\">server:\n  port: 8761 # \u7aef\u53e3\u53f7\n\nspring:\n  application:\n    name: eurekaServer # Eureka\u540d\u79f0\n\neureka:\n  instance:\n    prefer-ip-address: false\n    hostname: eurekaServer\n  client:\n    fetch-registry: false # \u8868\u793a\u662f\u5426\u4eceEurekaServer\u83b7\u53d6\u6ce8\u518c\u4fe1\u606f\uff0c\u9ed8\u8ba4\u4e3atrue\u3002\u56e0\u4e3a\u672c\u5e94\u7528\u662f\u4e00\u4e2a\u5355\u70b9\u7684EurekaServer\uff0c\u4e0d\u9700\u8981\u540c\u6b65\u5176\u4ed6\u7684EurekaServer\u8282\u70b9\u7684\u6570\u636e\uff0c\u56e0\u6b64\u8bbe\u4e3afalse\u3002\n    register-with-eureka: false # \u662f\u5426\u5c06\u81ea\u5df1\u6ce8\u518c\u5230EurekaServer\uff0c\u9ed8\u8ba4\u4e3atrue\u3002\u7531\u4e8e\u5f53\u524d\u5e94\u7528\u5c31\u662fEurekaServer\uff0c\u56e0\u6b64\u8bbe\u4e3afalse\u3002\n    service-url:\n      defaultZone: http:\/\/eurekaServer:8761\/eureka\/<\/code><\/pre>\n<p>\u4fee\u6539\u7cfb\u7edf\u7684<code>hosts<\/code>\uff0c<code>Windows10<\/code>\u7684<code>hosts<\/code>\u6587\u4ef6\u8def\u5f84\u4e3a\uff1a<code>C:\\Windows\\System32\\drivers\\etc\\hosts<\/code>\u3002<code>Linux<\/code>\u548c<code>macOS<\/code>\u7684\u6587\u4ef6\u8def\u5f84\u4e3a<code>\/etc\/hosts<\/code>\u3002\u589e\u52a0\u4e00\u884c\uff1a<code>127.0.0.1  eurekaServer<\/code>\u3002<\/p>\n<p>\u542f\u52a8\u9879\u76ee\uff0c\u5e76\u6d4b\u8bd5\u8bbf\u95ee<\/p>\n<p>\u70b9\u51fbidea\u7684\u9879\u76ee\u542f\u52a8\u6309\u94ae\uff0c\u5e76\u8bbf\u95ee<code>http:localhost:8761<\/code>\u67e5\u770bEureka\u9996\u9875\u3002<\/p>\n<p><img decoding=\"async\" src=\"\/wp-content\/uploads\/2023\/04\/16\/005.png\" alt=\"005\" \/><\/p>\n<h4>2.2 \u521b\u5efa<code>EurekaClient<\/code>\uff0c\u5e76\u8ba9\u5b83\u6ce8\u518c\u5230<code>EurekaServer<\/code>\u4e0a\u3002<\/h4>\n<p>\u590d\u5236<code>eurekaServer<\/code>\u9879\u76ee\uff0c\u4fee\u6539<code>artifactId<\/code>\u4e3a<code>EurekaClient<\/code>\u3002\u4fee\u6539<code>application.yml<\/code>\u6587\u4ef6\uff0c\u7aef\u53e3\u53f7\u4e3a8000\uff0c\u5e94\u7528\u540d\u79f0\u4e3a<code>eurekaClient<\/code>\u3002<\/p>\n<pre><code class=\"language-properties\">server:\n  port: 8000 # \u7aef\u53e3\u53f7\n\nspring:\n  application:\n    name: eurekaClient # Eureka\u540d\u79f0\n\ninfo:\n  app:\n    name: eurekaClient\n    encoding: &quot;UTF-8&quot;\n    java:\n      source: &quot;17&quot;\n      target: &quot;17&quot;\n  company:\n    name: www.huerpu.cc\n\nmanagement:\n  info:\n    env:\n      enabled: true\n  endpoints:\n    web:\n      exposure:\n        include: &quot;*&quot;\n    enabled-by-default: true\n\neureka:\n  instance:\n    prefer-ip-address: false\n    hostname: eurekaClient\n  client:\n    healthcheck:\n      enabled: true\n    fetch-registry: true \n    register-with-eureka: true \n    service-url:\n      defaultZone: http:\/\/eurekaServer:8761\/eureka\/<\/code><\/pre>\n<p>\u4fee\u6539\u542f\u52a8\u7c7b\uff0c\u589e\u52a0<code>@EnableDiscoveryClient<\/code>\u6ce8\u89e3\u3002<\/p>\n<pre><code class=\"language-Java\">package cc.huerpu.eurekaclient;\n\nimport org.springframework.boot.SpringApplication;\nimport org.springframework.boot.autoconfigure.SpringBootApplication;\nimport org.springframework.cloud.client.discovery.EnableDiscoveryClient;\n\n@SpringBootApplication\n@EnableDiscoveryClient\npublic class EurekaClientApplication {\n\n    public static void main(String[] args) {\n        SpringApplication.run(EurekaClientApplication.class, args);\n    }\n\n}<\/code><\/pre>\n<p>\u7f16\u5199\u4e00\u4e2a\u6d4b\u8bd5\u63a5\u53e3\uff0c\u6700\u7b80\u5355\u7684\u90a3\u79cd\u5c31\u597d\u3002<\/p>\n<pre><code class=\"language-java\">@RestController\npublic class UserController {\n\n    @RequestMapping(&quot;\/getUserById&quot;)\n    public String getUserById(){\n\n        return &quot;{id:1,name:jason,age:23}&quot;;\n    }\n\n}<\/code><\/pre>\n<p>\u4fee\u6539<code>pom.xml<\/code>\u6587\u4ef6\uff0c\u628a\u51e0\u5904\u5730\u65b9\u6539\u4e3a<code>eurekaClient<\/code>\uff0c\u53e6\u5916\u589e\u52a0\u4e86\u4e00\u4e2aactuator\u5305\u3002<\/p>\n<pre><code class=\"language-xml\">&lt;?xml version=&quot;1.0&quot; encoding=&quot;UTF-8&quot;?&gt;\n&lt;project xmlns=&quot;http:\/\/maven.apache.org\/POM\/4.0.0&quot; xmlns:xsi=&quot;http:\/\/www.w3.org\/2001\/XMLSchema-instance&quot;\n         xsi:schemaLocation=&quot;http:\/\/maven.apache.org\/POM\/4.0.0 https:\/\/maven.apache.org\/xsd\/maven-4.0.0.xsd&quot;&gt;\n    &lt;modelVersion&gt;4.0.0&lt;\/modelVersion&gt;\n    &lt;parent&gt;\n        &lt;groupId&gt;org.springframework.boot&lt;\/groupId&gt;\n        &lt;artifactId&gt;spring-boot-starter-parent&lt;\/artifactId&gt;\n        &lt;version&gt;3.0.5&lt;\/version&gt;\n        &lt;relativePath\/&gt; &lt;!-- lookup parent from repository --&gt;\n    &lt;\/parent&gt;\n    &lt;groupId&gt;cc.huerpu&lt;\/groupId&gt;\n    &lt;artifactId&gt;eurekaClient&lt;\/artifactId&gt;\n    &lt;version&gt;0.0.1-SNAPSHOT&lt;\/version&gt;\n    &lt;name&gt;eurekaClient&lt;\/name&gt;\n    &lt;description&gt;eurekaClient&lt;\/description&gt;\n    &lt;properties&gt;\n        &lt;java.version&gt;17&lt;\/java.version&gt;\n        &lt;spring-cloud.version&gt;2022.0.2&lt;\/spring-cloud.version&gt;\n    &lt;\/properties&gt;\n    &lt;dependencies&gt;\n        &lt;dependency&gt;\n            &lt;groupId&gt;org.springframework.cloud&lt;\/groupId&gt;\n            &lt;artifactId&gt;spring-cloud-starter-netflix-eureka-server&lt;\/artifactId&gt;\n        &lt;\/dependency&gt;\n        &lt;dependency&gt;\n            &lt;groupId&gt;org.springframework.boot&lt;\/groupId&gt;\n            &lt;artifactId&gt;spring-boot-starter-actuator&lt;\/artifactId&gt;\n        &lt;\/dependency&gt;\n        &lt;dependency&gt;\n            &lt;groupId&gt;org.springframework.boot&lt;\/groupId&gt;\n            &lt;artifactId&gt;spring-boot-starter-test&lt;\/artifactId&gt;\n            &lt;scope&gt;test&lt;\/scope&gt;\n        &lt;\/dependency&gt;\n    &lt;\/dependencies&gt;\n    &lt;dependencyManagement&gt;\n        &lt;dependencies&gt;\n            &lt;dependency&gt;\n                &lt;groupId&gt;org.springframework.cloud&lt;\/groupId&gt;\n                &lt;artifactId&gt;spring-cloud-dependencies&lt;\/artifactId&gt;\n                &lt;version&gt;2022.0.2&lt;\/version&gt;\n                &lt;type&gt;pom&lt;\/type&gt;\n                &lt;scope&gt;import&lt;\/scope&gt;\n            &lt;\/dependency&gt;\n        &lt;\/dependencies&gt;\n    &lt;\/dependencyManagement&gt;\n\n    &lt;build&gt;\n        &lt;plugins&gt;\n            &lt;plugin&gt;\n                &lt;groupId&gt;org.springframework.boot&lt;\/groupId&gt;\n                &lt;artifactId&gt;spring-boot-maven-plugin&lt;\/artifactId&gt;\n            &lt;\/plugin&gt;\n        &lt;\/plugins&gt;\n    &lt;\/build&gt;\n    &lt;repositories&gt;\n        &lt;repository&gt;\n            &lt;id&gt;netflix-candidates&lt;\/id&gt;\n            &lt;name&gt;Netflix Candidates&lt;\/name&gt;\n            &lt;url&gt;https:\/\/artifactory-oss.prod.netflix.net\/artifactory\/maven-oss-candidates&lt;\/url&gt;\n            &lt;snapshots&gt;\n                &lt;enabled&gt;false&lt;\/enabled&gt;\n            &lt;\/snapshots&gt;\n        &lt;\/repository&gt;\n    &lt;\/repositories&gt;\n\n&lt;\/project&gt;<\/code><\/pre>\n<p>\u542f\u52a8\u9879\u76ee\uff0c\u5237\u65b0<code>http:\/\/localhost:8761\/<\/code>\u4f1a\u770b\u5230<code>EurekaClient<\/code>\u6ce8\u518c\u4e0a\u6765\u4e86\u3002<\/p>\n<p><img decoding=\"async\" src=\"\/wp-content\/uploads\/2023\/04\/18\/111.png\" alt=\"111\" \/><\/p>\n<h4>2.3 \u521b\u5efa<code>EurekaServer<\/code>\u96c6\u7fa4<\/h4>\n<p>\u4e00\u822c\u6765\u8bf4\uff0c<code>EurekaServer<\/code>\u4e0d\u4f1a\u4ec5\u4ec5\u53ea\u6709\u4e00\u4e2a\u8282\u70b9\uff0c\u90fd\u662f\u7528\u96c6\u7fa4\u6765\u8fbe\u5230\u9ad8\u53ef\u7528\u7684\uff0c\u6240\u4ee5\u63a5\u4e0b\u6765\u521b\u5efa\u6709\u4e24\u4e2a\u8282\u70b9\u7684<code>EurekaServer<\/code>\u96c6\u7fa4\uff0c\u8ba9\u8fd9\u4e24\u4e2a\u8282\u70b9\u4e92\u76f8\u6ce8\u518c\uff0c\u4ece\u800c\u4fdd\u8bc1<code>EurekaServer<\/code>\u7684\u9ad8\u53ef\u7528\u3002<\/p>\n<p>\u2460\u4fee\u6539\u7cfb\u7edf\u7684<code>hosts<\/code>\uff0c<code>Windows10<\/code>\u7684<code>hosts<\/code>\u6587\u4ef6\u8def\u5f84\u4e3a\uff1a<code>C:\\Windows\\System32\\drivers\\etc\\hosts<\/code>\u3002<code>Linux<\/code>\u548c<code>macOS<\/code>\u7684\u6587\u4ef6\u8def\u5f84\u4e3a<code>\/etc\/hosts<\/code>\u3002<\/p>\n<p>\u589e\u52a0\u4e00\u884c\uff1a<code>127.0.0.1  eurekaServerHA<\/code>\u3002<\/p>\n<p>\u2461\u590d\u5236<code>EurekaServer<\/code>\u9879\u76ee\uff0c\u4fee\u6539<code>artifactId<\/code>\u4e3a<code>EurekaServerHA<\/code>\u3002<\/p>\n<p>\u2462\u4fee\u6539<code>EurekaServerHA<\/code>\u7684<code>application.yml<\/code>\u6587\u4ef6\uff0c\u4fee\u6539\u7aef\u53e3\u53f7\u4e3a8762\uff0c<strong>\u5e94\u7528\u540d\u4e3a<code>eurekaServer<\/code><\/strong>\uff0c\u548c<code>EurekaServer<\/code>\u7684\u4e00\u6837\uff0c<code>defaultZone<\/code>\u4e3a<code> http:\/\/eurekaServer:8761\/eureka\/<\/code>\u3002<code>fetch-registry<\/code>\u548c<code>register-with-eureka<\/code>\u90fd\u6539\u4e3a<code>true<\/code>\u3002\u589e\u52a0<code>hostname: eurekaServerHA<\/code>\u3001<code>prefer-ip-address: false<\/code>\u3002<\/p>\n<pre><code class=\"language-yml\">server:\n  port: 8762 # \u7aef\u53e3\u53f7\n\nspring:\n  application:\n    name: eurekaServer # Eureka\u540d\u79f0\n\neureka:\n  instance:\n    prefer-ip-address: false\n    hostname: eurekaServerHA\n  client:\n    fetch-registry: true \n    register-with-eureka: true \n    service-url:\n      defaultZone: http:\/\/eurekaServer:8761\/eureka\/<\/code><\/pre>\n<p>\u2463\u4fee\u6539<code>EurekaServer<\/code>\u7684<code>application.yml<\/code>\u6587\u4ef6\uff0c\u4fee\u6539<code>defaultZone<\/code>\u4e3a<code> http:\/\/eurekaServerHA:8762\/eureka\/<\/code>\u3002<code>fetch-registry<\/code>\u548c<code>register-with-eureka<\/code>\u90fd\u6539\u4e3a<code>true<\/code>\u3002<\/p>\n<pre><code class=\"language-yml\">server:\n  port: 8761 # \u7aef\u53e3\u53f7\n\nspring:\n  application:\n    name: eurekaServer # Eureka\u540d\u79f0\n\neureka:\n  instance:\n    prefer-ip-address: false\n    hostname: eurekaServer\n  client:\n    fetch-registry: true\n    register-with-eureka: true \n    service-url:\n      defaultZone: http:\/\/eurekaServerHA:8762\/eureka\/<\/code><\/pre>\n<p>\u2464\u4fee\u6539<code>EurekaClient<\/code>\u7684<code>application.yml<\/code>\u6587\u4ef6\uff0c\u4fee\u6539<code>defaultZone<\/code>\u4e3a<code>http:\/\/eurekaServer:8761\/eureka\/,http:\/\/eurekaServerHA:8762\/eureka\/<\/code>\u3002\u7531\u6b64\uff0c\u4e24\u4e2a\u8282\u70b9\u7684<code>EurekaServer<\/code>\u5c06\u4f1a\u8fdb\u884c\u4e92\u76f8\u6ce8\u518c\u3002\u8bbf\u95ee\u7b2c\u4e00\u4e2a\u8282\u70b9<code>http:\/\/eurekaServer:8761<\/code>\uff0c\u53ef\u4ee5\u770b\u5230\u6709<code>eurekaServer:8761<\/code>\u548c<code>eurekaServer:8762<\/code>\u3002<\/p>\n<p><img decoding=\"async\" src=\"\/wp-content\/uploads\/2023\/04\/18\/01.png\" alt=\"01\" \/><\/p>\n<p>\u8bbf\u95ee\u7b2c\u4e8c\u4e2a\u8282\u70b9<code>http:\/\/eurekaServerHA:8762<\/code>\uff0c\u53ef\u4ee5\u770b\u5230\u6709<code>eurekaServer:8761<\/code>\u548c<code>eurekaServer:8762<\/code>\u3002\u81f3\u6b64\uff0c\u642d\u5efa\u5177\u6709\u4e24\u4e2a\u8282\u70b9\u7684<code>EurekaServer<\/code>\u5b8c\u6bd5\u3002<\/p>\n<p><img decoding=\"async\" src=\"\/wp-content\/uploads\/2023\/04\/18\/02.png\" alt=\"02\" \/><\/p>\n<h4>2.4 \u6dfb\u52a0<code>EurekaServer<\/code>\u7528\u6237\u8ba4\u8bc1<\/h4>\n<p>\u5728\u5b9e\u9645\u5e94\u7528\u4e2d\uff0c\u8d44\u6e90\u7684\u8bbf\u95ee\u90fd\u662f\u9700\u8981\u8ba4\u8bc1\u7684\uff0c\u63a5\u4e0b\u6765\u6211\u4eec\u628a<code>EurekaServer<\/code> \u3001<code>EurekaServerHA<\/code>\u6539\u9020\u4e3a\u9700\u8981\u8ba4\u8bc1\u7684\u670d\u52a1\u3002<\/p>\n<p><code>EurekaServer<\/code> \u3001<code>EurekaServerHA<\/code>\u6dfb\u52a0<code>security<\/code>\u4f9d\u8d56\uff1a<\/p>\n<pre><code class=\"language-xml\">&lt;dependency&gt;\n    &lt;groupId&gt;org.springframework.boot&lt;\/groupId&gt;\n    &lt;artifactId&gt;spring-boot-starter-security&lt;\/artifactId&gt;\n&lt;\/dependency&gt;<\/code><\/pre>\n<p>\u4fee\u6539<code>EurekaServer<\/code>\u7684<code>application.yml<\/code>\u6587\u4ef6\uff0c\u589e\u52a0<code>security<\/code>\u8ba4\u8bc1\uff0c\u589e\u52a0<code>spring.security.user.name<\/code>\u548c<code>spring.security.user.password<\/code>\u3002\u5e76\u4fee\u6539<code>defaultZone<\/code>\u4e3a<code>http:\/\/eurekaha:eurekapwd@eurekaServerHA:8762\/eureka\/<\/code>\u3002<\/p>\n<pre><code class=\"language-yml\">server:\n  port: 8761 # \u7aef\u53e3\u53f7\n\nspring:\n  security:\n    user:\n      name: eureka\n      password: eurekapwd\n  application:\n    name: eurekaServer # Eureka\u540d\u79f0\n\neureka:\n  instance:\n    prefer-ip-address: false\n    hostname: eurekaServer\n  client:\n    fetch-registry: true\n    register-with-eureka: true\n    service-url:\n      defaultZone: http:\/\/eureka:eurekapwd@eurekaServerHA:8762\/eureka\/<\/code><\/pre>\n<p>\u4fee\u6539<code>EurekaServerHA<\/code>\u7684<code>application.yml<\/code>\u6587\u4ef6\uff0c\u589e\u52a0<code>security<\/code>\u8ba4\u8bc1\uff0c\u589e\u52a0<code>spring.security.user.name<\/code>\u548c<code>spring.security.user.password<\/code>\u3002\u5e76\u4fee\u6539<code>defaultZone<\/code>\u4e3a<code>http:\/\/eureka:eureka@eurekaServer:8761\/eureka\/<\/code>\u3002<\/p>\n<pre><code class=\"language-yml\">server:\n  port: 8762 # \u7aef\u53e3\u53f7\n\nspring:\n  security:\n    user:\n      name: eureka\n      password: eurekapwd\n  application:\n    name: eurekaServer # Eureka\u540d\u79f0\n\neureka:\n  instance:\n    prefer-ip-address: false\n    hostname: eurekaServerHA\n  client:\n    fetch-registry: true\n    register-with-eureka: true\n    service-url:\n      defaultZone: http:\/\/eureka:eurekapwd@eurekaServer:8761\/eureka\/<\/code><\/pre>\n<p>\u4fee\u6539<code>EurekaClient<\/code>\u7684<code>application.yml<\/code>\u6587\u4ef6\uff0c<code>defaultZone<\/code>\u4e3a<code> http:\/\/eureka:eurekapwd@eurekaServer:8761\/eureka\/,http:\/\/eureka:eurekapwd@eurekaServerHA:8762\/eureka\/<\/code>\u3002<\/p>\n<pre><code class=\"language-yml\">server:\n  port: 8000 # \u7aef\u53e3\u53f7\n\nspring:\n  application:\n    name: eurekaClient # Eureka\u540d\u79f0\n\ninfo:\n  app:\n    name: eurekaClient\n    encoding: &quot;UTF-8&quot;\n    java:\n      source: &quot;17&quot;\n      target: &quot;17&quot;\n  company:\n    name: www.huerpu.cc\n\nmanagement:\n  info:\n    env:\n      enabled: true\n  endpoints:\n    web:\n      exposure:\n        include: &quot;*&quot;\n    enabled-by-default: true\n\neureka:\n  instance:\n    prefer-ip-address: false\n    hostname: eurekaClient\n  client:\n    healthcheck:\n      enabled: true\n    fetch-registry: true\n    register-with-eureka: true\n    service-url:\n      defaultZone: http:\/\/eureka:eurekapwd@eurekaServer:8761\/eureka\/,http:\/\/eureka:eurekapwd@eurekaServerHA:8762\/eureka\/<\/code><\/pre>\n<p>\u5206\u522b\u5728<code>EurekaClient<\/code>\u3001<code>EurekaClientHA<\/code>\u7684<code>cc.huerpu.eurekaserver.security<\/code>\u5305\u8def\u5f84\u4e0b\u521b\u5efa<code>WebSecurityConfig<\/code>\u7c7b\uff0c\u5173\u95edcsrf\uff0c\u5e76\u5f00\u542fhttpBasic\u8ba4\u8bc1\u3002<\/p>\n<pre><code class=\"language-java\">package cc.huerpu.eurekaserver.security;\n\nimport lombok.RequiredArgsConstructor;\nimport org.springframework.boot.autoconfigure.AutoConfigureAfter;\nimport org.springframework.context.annotation.Bean;\nimport org.springframework.context.annotation.Configuration;\nimport org.springframework.security.config.annotation.method.configuration.EnableGlobalMethodSecurity;\nimport org.springframework.security.config.annotation.web.builders.HttpSecurity;\nimport org.springframework.security.web.SecurityFilterChain;\n\n@Configuration\n@AutoConfigureAfter(WebSecurityConfig.class)\n@RequiredArgsConstructor\n@EnableGlobalMethodSecurity(prePostEnabled = true)\npublic class WebSecurityConfig\n{\n    @Bean\n    public SecurityFilterChain filterChain(HttpSecurity http) throws Exception {\n        http.csrf().disable();\n        http.authorizeHttpRequests().anyRequest().authenticated().and().httpBasic();\n        return http.build();\n    }\n}<\/code><\/pre>\n<p>\u91cd\u65b0\u542f\u52a8\u9879\u76ee\uff0c\u8bbf\u95ee\u65f6\u9700\u8981\u8ba4\u8bc1\u767b\u5f55\u3002<\/p>\n<p><img decoding=\"async\" src=\"\/wp-content\/uploads\/2023\/04\/19\/101.png\" alt=\"101\" \/><\/p>\n<p><img decoding=\"async\" src=\"\/wp-content\/uploads\/2023\/04\/19\/102.png\" alt=\"102\" \/><\/p>\n<p>\u8f93\u5165\u914d\u7f6e\u6587\u4ef6\u91cc\u7684\u8d26\u53f7\/\u5bc6\u7801\uff1a<code>eureka\/eurekapwd<\/code>\u8fdb\u884c\u767b\u5f55\u3002<\/p>\n<p><img decoding=\"async\" src=\"\/wp-content\/uploads\/2023\/04\/19\/108.png\" alt=\"108\" \/><\/p>\n<p><img decoding=\"async\" src=\"\/wp-content\/uploads\/2023\/04\/19\/109.png\" alt=\"109\" \/><\/p>\n<p>\u5982\u679c\u4f60\u7684\u6ca1\u6709\u6ce8\u518c\u4e0a\u6765\uff0c\u8010\u5fc3\u7b49\u4e00\u5206\u949f\u5c31\u53ef\u4ee5\u4e86\u3002<\/p>\n<h3>\u4e09\u3001\u521b\u5efa\u4e00\u4e2aeurekaClientConsumer\u8c03\u7528eurekaClient\u670d\u52a1<\/h3>\n<p>\u590d\u5236<code>eurekaClient<\/code>\u9879\u76ee\uff0c\u4fee\u6539<code>artifactId<\/code>\u4e3a<code>eurekaClientConsumer<\/code>\u3002\u4fee\u6539<code>application.yml<\/code>\u6587\u4ef6\uff0c\u7aef\u53e3\u53f7\u4e3a8001\uff0c\u5e94\u7528\u540d\u79f0\u4e3a<code>eurekaClientConsumer<\/code>(\u672c\u673ahost\u4e2d\u4e5f\u589e\u52a0\u8fd9\u4e00\u4e2a)\u3002<\/p>\n<pre><code class=\"language-xml\">&lt;?xml version=&quot;1.0&quot; encoding=&quot;UTF-8&quot;?&gt;\n&lt;project xmlns=&quot;http:\/\/maven.apache.org\/POM\/4.0.0&quot; xmlns:xsi=&quot;http:\/\/www.w3.org\/2001\/XMLSchema-instance&quot;\n         xsi:schemaLocation=&quot;http:\/\/maven.apache.org\/POM\/4.0.0 https:\/\/maven.apache.org\/xsd\/maven-4.0.0.xsd&quot;&gt;\n    &lt;modelVersion&gt;4.0.0&lt;\/modelVersion&gt;\n    &lt;parent&gt;\n        &lt;groupId&gt;org.springframework.boot&lt;\/groupId&gt;\n        &lt;artifactId&gt;spring-boot-starter-parent&lt;\/artifactId&gt;\n        &lt;version&gt;3.0.5&lt;\/version&gt;\n        &lt;relativePath\/&gt; &lt;!-- lookup parent from repository --&gt;\n    &lt;\/parent&gt;\n    &lt;groupId&gt;cc.huerpu&lt;\/groupId&gt;\n    &lt;artifactId&gt;eurekaClientConsumer&lt;\/artifactId&gt;\n    &lt;version&gt;0.0.1-SNAPSHOT&lt;\/version&gt;\n    &lt;name&gt;eurekaClientConsumer&lt;\/name&gt;\n    &lt;description&gt;eurekaClientConsumer&lt;\/description&gt;\n    &lt;properties&gt;\n        &lt;java.version&gt;17&lt;\/java.version&gt;\n        &lt;spring-cloud.version&gt;2022.0.2&lt;\/spring-cloud.version&gt;\n    &lt;\/properties&gt;\n    &lt;dependencies&gt;\n        &lt;dependency&gt;\n            &lt;groupId&gt;org.springframework.cloud&lt;\/groupId&gt;\n            &lt;artifactId&gt;spring-cloud-starter-netflix-eureka-server&lt;\/artifactId&gt;\n        &lt;\/dependency&gt;\n        &lt;dependency&gt;\n            &lt;groupId&gt;org.springframework.boot&lt;\/groupId&gt;\n            &lt;artifactId&gt;spring-boot-starter-actuator&lt;\/artifactId&gt;\n        &lt;\/dependency&gt;\n        &lt;dependency&gt;\n            &lt;groupId&gt;org.springframework.boot&lt;\/groupId&gt;\n            &lt;artifactId&gt;spring-boot-starter-web&lt;\/artifactId&gt;\n        &lt;\/dependency&gt;\n        &lt;dependency&gt;\n            &lt;groupId&gt;org.springframework.boot&lt;\/groupId&gt;\n            &lt;artifactId&gt;spring-boot-starter-test&lt;\/artifactId&gt;\n            &lt;scope&gt;test&lt;\/scope&gt;\n        &lt;\/dependency&gt;\n    &lt;\/dependencies&gt;\n    &lt;dependencyManagement&gt;\n        &lt;dependencies&gt;\n            &lt;dependency&gt;\n                &lt;groupId&gt;org.springframework.cloud&lt;\/groupId&gt;\n                &lt;artifactId&gt;spring-cloud-dependencies&lt;\/artifactId&gt;\n                &lt;version&gt;2022.0.2&lt;\/version&gt;\n                &lt;type&gt;pom&lt;\/type&gt;\n                &lt;scope&gt;import&lt;\/scope&gt;\n            &lt;\/dependency&gt;\n        &lt;\/dependencies&gt;\n    &lt;\/dependencyManagement&gt;\n\n    &lt;build&gt;\n        &lt;plugins&gt;\n            &lt;plugin&gt;\n                &lt;groupId&gt;org.springframework.boot&lt;\/groupId&gt;\n                &lt;artifactId&gt;spring-boot-maven-plugin&lt;\/artifactId&gt;\n            &lt;\/plugin&gt;\n        &lt;\/plugins&gt;\n    &lt;\/build&gt;\n    &lt;repositories&gt;\n        &lt;repository&gt;\n            &lt;id&gt;netflix-candidates&lt;\/id&gt;\n            &lt;name&gt;Netflix Candidates&lt;\/name&gt;\n            &lt;url&gt;https:\/\/artifactory-oss.prod.netflix.net\/artifactory\/maven-oss-candidates&lt;\/url&gt;\n            &lt;snapshots&gt;\n                &lt;enabled&gt;false&lt;\/enabled&gt;\n            &lt;\/snapshots&gt;\n        &lt;\/repository&gt;\n    &lt;\/repositories&gt;\n&lt;\/project&gt;<\/code><\/pre>\n<p>application.yml<\/p>\n<pre><code class=\"language-yml\">server:\n  port: 8001 # \u7aef\u53e3\u53f7\n\nspring:\n  application:\n    name: eurekaClientConsumer # Eureka\u540d\u79f0\n\ninfo:\n  app:\n    name: eurekaClientConsumer\n    encoding: &quot;UTF-8&quot;\n    java:\n      source: &quot;17&quot;\n      target: &quot;17&quot;\n  company:\n    name: www.huerpu.cc\n\nmanagement:\n  info:\n    env:\n      enabled: true\n  endpoints:\n    web:\n      exposure:\n        include: &quot;*&quot;\n    enabled-by-default: true\n\neureka:\n  instance:\n    prefer-ip-address: false\n    hostname: eurekaClientConsumer\n  client:\n    healthcheck:\n      enabled: true\n    fetch-registry: true\n    register-with-eureka: true\n    service-url:\n      defaultZone: http:\/\/eureka:eurekapwd@eurekaServer:8761\/eureka\/,http:\/\/eureka:eurekapwd@eurekaServerHA:8762\/eureka\/<\/code><\/pre>\n<p>\u4fee\u6539\u542f\u52a8\u7c7b\u540d\u79f0\u4e3a<code>EurekaClientConsumerApplication<\/code>\uff0c\u5e76\u589e\u52a0\u6ce8\u5165\u4e00\u4e2a<code>restTemplate<\/code>\u3002<\/p>\n<pre><code class=\"language-java\">package cc.huerpu.eurekaclient;\n\nimport org.springframework.boot.SpringApplication;\nimport org.springframework.boot.autoconfigure.SpringBootApplication;\nimport org.springframework.cloud.client.discovery.EnableDiscoveryClient;\nimport org.springframework.cloud.client.loadbalancer.LoadBalanced;\nimport org.springframework.context.annotation.Bean;\nimport org.springframework.web.client.RestTemplate;\n\n@SpringBootApplication\n@EnableDiscoveryClient\npublic class EurekaClientConsumerApplication {\n\n    public static void main(String[] args) {\n        SpringApplication.run(EurekaClientConsumerApplication.class, args);\n    }\n    @Bean\n    @LoadBalanced\n    public RestTemplate restTemplate() {\n        return new RestTemplate();\n    }\n}<\/code><\/pre>\n<p>\u5728<code>controller<\/code>\u5305\u4e0b\u521b\u5efa\u4e00\u4e2a<code>ConsumerController<\/code>\u7c7b\uff0c\u6ce8\u5165<code>restTemplate<\/code>\u3001<code>eurekaClient<\/code>\u3001<code>discoveryClient<\/code>\u3002<\/p>\n<pre><code class=\"language-java\">package cc.huerpu.eurekaclient.controller;\n\nimport com.netflix.appinfo.InstanceInfo;\nimport com.netflix.discovery.EurekaClient;\nimport org.springframework.beans.factory.annotation.Autowired;\nimport org.springframework.cloud.client.ServiceInstance;\nimport org.springframework.cloud.client.discovery.DiscoveryClient;\nimport org.springframework.web.bind.annotation.RequestMapping;\nimport org.springframework.web.bind.annotation.RestController;\nimport org.springframework.web.client.RestTemplate;\nimport java.util.List;\n\n@RestController\npublic class ConsumerController {\n    @Autowired\n    private RestTemplate  restTemplate;\n    @Autowired\n    private EurekaClient eurekaClient;\n\n    @Autowired\n    private DiscoveryClient discoveryClient;\n\n    \/\/\u83b7\u5f97eurekaClient\u7684url\n    @RequestMapping(&quot;\/eurekaClientServiceUrl&quot;)\n    private String eurekaClientServiceUrl() {\n        InstanceInfo instance = eurekaClient.getNextServerFromEureka(&quot;eurekaClient&quot;, false);\n        return instance.getHomePageUrl();\n    }\n\n    @RequestMapping(&quot;\/consumerEurekaClient&quot;)\n    public String consumerEurekaClient(){\n        String eurekaClientURL = eurekaClientServiceUrl();\n        String res = restTemplate.getForObject(eurekaClientURL + &quot;\/getUserById&quot;,String.class);\n        return &quot;consumerEurekaClient:&quot; + res;\n    }\n\n    @RequestMapping(&quot;\/eurekaClient-instance&quot;)\n    public List&lt;ServiceInstance&gt; showInfo() {\n        return this.discoveryClient.getInstances(&quot;eurekaClient&quot;);\n    }\n}<\/code><\/pre>\n<p>\u5728\u6ca1\u6709\u670d\u52a1\u6ce8\u518c\u4e2d\u5fc3\u7684\u65f6\u5019\uff0ceurekaClientConsumer\u670d\u52a1\u8c03\u7528eurekaClient\u670d\u52a1\uff0c\u9700\u8981\u5728eurekaClientConsumer\u670d\u52a1\u4ee3\u7801\u91cc\u663e\u5f0f\u901a\u8fc7\u786c\u7f16\u7801IP\u5730\u5740\u548c\u7aef\u53e3\u53f7\u8fdb\u884c\u8c03\u7528\uff0c\u4e5f\u53ef\u4ee5\u901a\u8fc7@Value\u6ce8\u5165\u914d\u7f6e\u7684\u65b9\u5f0f\u8fdb\u884c\u914d\u7f6e\uff0c\u4f46\u88ab\u8c03\u7528\u65b9\u65b9\u7684IP\u548c\u7aef\u53e3\u53f7\u53d8\u5316\u4e4b\u540e\uff0c\u8c03\u7528\u65b9\u5c31\u5fc5\u987b\u8fdb\u884c\u4fee\u6539\uff0c\u9488\u5bf9\u5343\u5343\u4e07\u4e07\u7684\u63a5\u53e3\u6765\u8bf4\uff0c\u7ef4\u62a4\u8fd9\u4e9b\u4fe1\u606f\u7b80\u76f4\u662f\u573a\u5669\u68a6\u3002<\/p>\n<pre><code class=\"language-java\">@RestController\npublic class ConsumerController {\n\n    @RequestMapping(&quot;\/consumerEurekaClient&quot;)\n    public String consumerEurekaClient(){\n        String res = restTemplate.getForObject(&quot;http:\/\/localhost:8000\/getUserById&quot;, String.class);\n        return &quot;consumerEurekaClient:&quot; + res;\n    }\n\n}<\/code><\/pre>\n<pre><code class=\"language-java\">@RestController\npublic class ConsumerController {\n        \/\/\u901a\u8fc7\u914d\u7f6e\u6587\u4ef6\u4e2d\u7684hep.eurekaclient.userservice.url\u503c\u8fdb\u884c\u914d\u7f6e\n    @Value(&quot;${hep.eurekaclient.userservice.url}&quot;)\n    private String eurekaClient;\n    @RequestMapping(&quot;\/consumerEurekaClient&quot;)\n    public String consumerEurekaClient(){\n        String res = restTemplate.getForObject(&quot;http:\/\/localhost:8000\/getUserById&quot;, String.class);\n        return &quot;consumerEurekaClient:&quot; + res;\n    }\n}<\/code><\/pre>\n<p>\u4f46\u73b0\u5728\u6211\u4eec\u901a\u8fc7eureka\u5c31\u6ca1\u6709\u8fd9\u4e2a\u70e6\u607c\u5566\uff0c\u53ea\u9700\u8981<code>eurekaClient.getNextServerFromEureka(&quot;eurekaClient&quot;, false)<\/code>\uff0c\u5c31\u53ef\u4ee5\u83b7\u5f97\u670d\u52a1\u7684\u8c03\u7528\u5730\u5740\uff0c\u5176\u4e2d<code>&quot;eurekaClient&quot;<\/code>\u662f\u7531<code>spring.application.name<\/code>\u6307\u5b9a\u7684\uff0c\u5373\u4f7f\u88ab\u8c03\u7528\u65b9\u7684IP\u548c\u7aef\u53e3\u53f7\u53d8\u5316\uff0c\u5bf9\u6211\u4eec\u6765\u8bf4\u90fd\u662f\u65e0\u611f\u7684\uff0c\u8c03\u7528\u65b9\u8fd9\u8fb9\u5b8c\u5168\u4e0d\u7528\u505a\u4efb\u4f55\u4fee\u6539\uff0c\u662f\u4e0d\u662f\u5f88\u5f00\u5fc3\uff1f<\/p>\n<p>\u8bbf\u95ee<code>http:\/\/eurekaclientconsumer:8001\/consumerEurekaClient<\/code>\uff0c\u5c31\u53ef\u4ee5\u5f97\u5230<code>consumerEurekaClient:{id:1,name:jason,age:23}<\/code>\uff0c\u8bc1\u660e\u6211\u4eec\u7684\u6d88\u8d39\u65b9<code>consumerEurekaClient<\/code>\u8c03\u7528\u88ab\u6d88\u8d39\u65b9<code>eurekaClient<\/code>\u6210\u529f\u4e86\u3002<\/p>\n<p><img decoding=\"async\" src=\"\/wp-content\/uploads\/2023\/04\/20\/image-20230420150333493.png\" alt=\"image-20230420150333493\" \/><\/p>\n<h3>\u56db\u3001Eureka \u7684\u5143\u6570\u636e<\/h3>\n<p>Eureka \u7684\u5143\u6570\u636e\u6709\u4e24\u79cd\uff0c\u6807\u51c6\u5143\u6570\u636e\u548c\u81ea\u5b9a\u4e49\u5143\u6570\u636e\u3002\u6807\u51c6\u5143\u6570\u636e\u6709\u4e3b\u673a\u540d\u3001IP\u5730\u5740\u3001\u7aef\u53e3\u53f7\u3001\u72b6\u6001\u9875\u548c\u5065\u5eb7\u68c0\u67e5\u7b49\u4fe1\u606f\uff0c\u8fd9\u4e9b\u4fe1\u606f\u90fd\u4f1a\u88ab\u53d1\u5e03\u5728\u670d\u52a1\u6ce8\u518c\u8868\u4e2d\uff0c\u7528\u4e8e\u670d\u52a1\u4e4b\u95f4\u7684\u8c03\u7528\u3002\u81ea\u5b9a\u4e49\u5143\u6570\u636e\u53ef\u4ee5\u4f7f\u7528<code>eureka.instance.metadata-map<\/code>\u914d\u7f6e\u3002<\/p>\n<p>\u53ef\u4ee5\u901a\u8fc7<code>http:\/\/localhost:8761\/eureka\/apps<\/code>\u6765\u67e5\u770b<code>eureka<\/code>\u4e2d\u6709\u54ea\u4e9b\u5e94\u7528\u3002<\/p>\n<pre><code class=\"language-xml\">&lt;applications&gt;\n    &lt;versions__delta&gt;1&lt;\/versions__delta&gt;\n    &lt;apps__hashcode&gt;UP_4_&lt;\/apps__hashcode&gt;\n    &lt;application&gt;\n        &lt;name&gt;EUREKASERVER&lt;\/name&gt;\n        &lt;instance&gt;\n            &lt;instanceId&gt;192.168.1.97:eurekaServer:8761&lt;\/instanceId&gt;\n            &lt;hostName&gt;eurekaServer&lt;\/hostName&gt;\n            &lt;app&gt;EUREKASERVER&lt;\/app&gt;\n            &lt;ipAddr&gt;192.168.1.97&lt;\/ipAddr&gt;\n            &lt;status&gt;UP&lt;\/status&gt;\n            &lt;overriddenstatus&gt;UNKNOWN&lt;\/overriddenstatus&gt;\n            &lt;port enabled=&quot;true&quot;&gt;8761&lt;\/port&gt;\n            &lt;securePort enabled=&quot;false&quot;&gt;443&lt;\/securePort&gt;\n            &lt;countryId&gt;1&lt;\/countryId&gt;\n            &lt;dataCenterInfo class=&quot;com.netflix.appinfo.InstanceInfo$DefaultDataCenterInfo&quot;&gt;\n                &lt;name&gt;MyOwn&lt;\/name&gt;\n            &lt;\/dataCenterInfo&gt;\n            &lt;leaseInfo&gt;\n                &lt;renewalIntervalInSecs&gt;5&lt;\/renewalIntervalInSecs&gt;\n                &lt;durationInSecs&gt;90&lt;\/durationInSecs&gt;\n                &lt;registrationTimestamp&gt;1681976869304&lt;\/registrationTimestamp&gt;\n                &lt;lastRenewalTimestamp&gt;1681976869304&lt;\/lastRenewalTimestamp&gt;\n                &lt;evictionTimestamp&gt;0&lt;\/evictionTimestamp&gt;\n                &lt;serviceUpTimestamp&gt;1681976869305&lt;\/serviceUpTimestamp&gt;\n            &lt;\/leaseInfo&gt;\n            &lt;metadata&gt;\n                &lt;management.port&gt;8761&lt;\/management.port&gt;\n            &lt;\/metadata&gt;\n            &lt;homePageUrl&gt;http:\/\/eurekaServer:8761\/&lt;\/homePageUrl&gt;\n            &lt;statusPageUrl&gt;http:\/\/eurekaServer:8761\/actuator\/info&lt;\/statusPageUrl&gt;\n            &lt;healthCheckUrl&gt;http:\/\/eurekaServer:8761\/actuator\/health&lt;\/healthCheckUrl&gt;\n            &lt;vipAddress&gt;eurekaServer&lt;\/vipAddress&gt;\n            &lt;secureVipAddress&gt;eurekaServer&lt;\/secureVipAddress&gt;\n            &lt;isCoordinatingDiscoveryServer&gt;true&lt;\/isCoordinatingDiscoveryServer&gt;\n            &lt;lastUpdatedTimestamp&gt;1681976869305&lt;\/lastUpdatedTimestamp&gt;\n            &lt;lastDirtyTimestamp&gt;1681976839602&lt;\/lastDirtyTimestamp&gt;\n            &lt;actionType&gt;ADDED&lt;\/actionType&gt;\n        &lt;\/instance&gt;\n        &lt;instance&gt;\n            &lt;instanceId&gt;192.168.1.97:eurekaServer:8762&lt;\/instanceId&gt;\n            &lt;hostName&gt;eurekaServerHA&lt;\/hostName&gt;\n            &lt;app&gt;EUREKASERVER&lt;\/app&gt;\n            &lt;ipAddr&gt;192.168.1.97&lt;\/ipAddr&gt;\n            &lt;status&gt;UP&lt;\/status&gt;\n            &lt;overriddenstatus&gt;UNKNOWN&lt;\/overriddenstatus&gt;\n            &lt;port enabled=&quot;true&quot;&gt;8762&lt;\/port&gt;\n            &lt;securePort enabled=&quot;false&quot;&gt;443&lt;\/securePort&gt;\n            &lt;countryId&gt;1&lt;\/countryId&gt;\n            &lt;dataCenterInfo class=&quot;com.netflix.appinfo.InstanceInfo$DefaultDataCenterInfo&quot;&gt;\n                &lt;name&gt;MyOwn&lt;\/name&gt;\n            &lt;\/dataCenterInfo&gt;\n            &lt;leaseInfo&gt;\n                &lt;renewalIntervalInSecs&gt;5&lt;\/renewalIntervalInSecs&gt;\n                &lt;durationInSecs&gt;90&lt;\/durationInSecs&gt;\n                &lt;registrationTimestamp&gt;1681976841173&lt;\/registrationTimestamp&gt;\n                &lt;lastRenewalTimestamp&gt;1681976977251&lt;\/lastRenewalTimestamp&gt;\n                &lt;evictionTimestamp&gt;0&lt;\/evictionTimestamp&gt;\n                &lt;serviceUpTimestamp&gt;1681976841173&lt;\/serviceUpTimestamp&gt;\n            &lt;\/leaseInfo&gt;\n            &lt;metadata&gt;\n                &lt;management.port&gt;8762&lt;\/management.port&gt;\n            &lt;\/metadata&gt;\n            &lt;homePageUrl&gt;http:\/\/eurekaServerHA:8762\/&lt;\/homePageUrl&gt;\n            &lt;statusPageUrl&gt;http:\/\/eurekaServerHA:8762\/actuator\/info&lt;\/statusPageUrl&gt;\n            &lt;healthCheckUrl&gt;http:\/\/eurekaServerHA:8762\/actuator\/health&lt;\/healthCheckUrl&gt;\n            &lt;vipAddress&gt;eurekaServer&lt;\/vipAddress&gt;\n            &lt;secureVipAddress&gt;eurekaServer&lt;\/secureVipAddress&gt;\n            &lt;isCoordinatingDiscoveryServer&gt;false&lt;\/isCoordinatingDiscoveryServer&gt;\n            &lt;lastUpdatedTimestamp&gt;1681976841173&lt;\/lastUpdatedTimestamp&gt;\n            &lt;lastDirtyTimestamp&gt;1681976841049&lt;\/lastDirtyTimestamp&gt;\n            &lt;actionType&gt;ADDED&lt;\/actionType&gt;\n        &lt;\/instance&gt;\n    &lt;\/application&gt;\n    &lt;application&gt;\n        &lt;name&gt;EUREKACLIENT&lt;\/name&gt;\n        &lt;instance&gt;\n            &lt;instanceId&gt;192.168.1.97:eurekaClient:8000&lt;\/instanceId&gt;\n            &lt;hostName&gt;eurekaClient&lt;\/hostName&gt;\n            &lt;app&gt;EUREKACLIENT&lt;\/app&gt;\n            &lt;ipAddr&gt;192.168.1.97&lt;\/ipAddr&gt;\n            &lt;status&gt;UP&lt;\/status&gt;\n            &lt;overriddenstatus&gt;UNKNOWN&lt;\/overriddenstatus&gt;\n            &lt;port enabled=&quot;true&quot;&gt;8000&lt;\/port&gt;\n            &lt;securePort enabled=&quot;false&quot;&gt;443&lt;\/securePort&gt;\n            &lt;countryId&gt;1&lt;\/countryId&gt;\n            &lt;dataCenterInfo class=&quot;com.netflix.appinfo.InstanceInfo$DefaultDataCenterInfo&quot;&gt;\n                &lt;name&gt;MyOwn&lt;\/name&gt;\n            &lt;\/dataCenterInfo&gt;\n            &lt;leaseInfo&gt;\n                &lt;renewalIntervalInSecs&gt;5&lt;\/renewalIntervalInSecs&gt;\n                &lt;durationInSecs&gt;90&lt;\/durationInSecs&gt;\n                &lt;registrationTimestamp&gt;1681976840091&lt;\/registrationTimestamp&gt;\n                &lt;lastRenewalTimestamp&gt;1681976981077&lt;\/lastRenewalTimestamp&gt;\n                &lt;evictionTimestamp&gt;0&lt;\/evictionTimestamp&gt;\n                &lt;serviceUpTimestamp&gt;1681976840091&lt;\/serviceUpTimestamp&gt;\n            &lt;\/leaseInfo&gt;\n            &lt;metadata&gt;\n                &lt;management.port&gt;8000&lt;\/management.port&gt;\n            &lt;\/metadata&gt;\n            &lt;homePageUrl&gt;http:\/\/eurekaClient:8000\/&lt;\/homePageUrl&gt;\n            &lt;statusPageUrl&gt;http:\/\/eurekaClient:8000\/actuator\/info&lt;\/statusPageUrl&gt;\n            &lt;healthCheckUrl&gt;http:\/\/eurekaClient:8000\/actuator\/health&lt;\/healthCheckUrl&gt;\n            &lt;vipAddress&gt;eurekaClient&lt;\/vipAddress&gt;\n            &lt;secureVipAddress&gt;eurekaClient&lt;\/secureVipAddress&gt;\n            &lt;isCoordinatingDiscoveryServer&gt;false&lt;\/isCoordinatingDiscoveryServer&gt;\n            &lt;lastUpdatedTimestamp&gt;1681976840092&lt;\/lastUpdatedTimestamp&gt;\n            &lt;lastDirtyTimestamp&gt;1681976839916&lt;\/lastDirtyTimestamp&gt;\n            &lt;actionType&gt;ADDED&lt;\/actionType&gt;\n        &lt;\/instance&gt;\n    &lt;\/application&gt;\n    &lt;application&gt;\n        &lt;name&gt;EUREKACLIENTCONSUMER&lt;\/name&gt;\n        &lt;instance&gt;\n            &lt;instanceId&gt;192.168.1.97:eurekaClientConsumer:8001&lt;\/instanceId&gt;\n            &lt;hostName&gt;eurekaClientConsumer&lt;\/hostName&gt;\n            &lt;app&gt;EUREKACLIENTCONSUMER&lt;\/app&gt;\n            &lt;ipAddr&gt;192.168.1.97&lt;\/ipAddr&gt;\n            &lt;status&gt;UP&lt;\/status&gt;\n            &lt;overriddenstatus&gt;UNKNOWN&lt;\/overriddenstatus&gt;\n            &lt;port enabled=&quot;true&quot;&gt;8001&lt;\/port&gt;\n            &lt;securePort enabled=&quot;false&quot;&gt;443&lt;\/securePort&gt;\n            &lt;countryId&gt;1&lt;\/countryId&gt;\n            &lt;dataCenterInfo class=&quot;com.netflix.appinfo.InstanceInfo$DefaultDataCenterInfo&quot;&gt;\n                &lt;name&gt;MyOwn&lt;\/name&gt;\n            &lt;\/dataCenterInfo&gt;\n            &lt;leaseInfo&gt;\n                &lt;renewalIntervalInSecs&gt;5&lt;\/renewalIntervalInSecs&gt;\n                &lt;durationInSecs&gt;90&lt;\/durationInSecs&gt;\n                &lt;registrationTimestamp&gt;1681976869305&lt;\/registrationTimestamp&gt;\n                &lt;lastRenewalTimestamp&gt;1681976869305&lt;\/lastRenewalTimestamp&gt;\n                &lt;evictionTimestamp&gt;0&lt;\/evictionTimestamp&gt;\n                &lt;serviceUpTimestamp&gt;1681976869305&lt;\/serviceUpTimestamp&gt;\n            &lt;\/leaseInfo&gt;\n            &lt;metadata&gt;\n                &lt;management.port&gt;8001&lt;\/management.port&gt;\n            &lt;\/metadata&gt;\n            &lt;homePageUrl&gt;http:\/\/eurekaClientConsumer:8001\/&lt;\/homePageUrl&gt;\n            &lt;statusPageUrl&gt;http:\/\/eurekaClientConsumer:8001\/actuator\/info&lt;\/statusPageUrl&gt;\n            &lt;healthCheckUrl&gt;http:\/\/eurekaClientConsumer:8001\/actuator\/health&lt;\/healthCheckUrl&gt;\n            &lt;vipAddress&gt;eurekaClientConsumer&lt;\/vipAddress&gt;\n            &lt;secureVipAddress&gt;eurekaClientConsumer&lt;\/secureVipAddress&gt;\n            &lt;isCoordinatingDiscoveryServer&gt;false&lt;\/isCoordinatingDiscoveryServer&gt;\n            &lt;lastUpdatedTimestamp&gt;1681976869305&lt;\/lastUpdatedTimestamp&gt;\n            &lt;lastDirtyTimestamp&gt;1681976840542&lt;\/lastDirtyTimestamp&gt;\n            &lt;actionType&gt;ADDED&lt;\/actionType&gt;\n        &lt;\/instance&gt;\n    &lt;\/application&gt;\n&lt;\/applications&gt;<\/code><\/pre>\n<p>\u6211\u4eec\u5728\u4e0a\u9762\u4e5f\u6709\u5199\u4e86\u4e00\u4e2a\u63a5\u53e3\uff0c\u7528\u6765\u83b7\u5f97<code>eurekaClient\u670d\u52a1<\/code>\u7684\u76f8\u5173\u5b9e\u4f8b\u3002<\/p>\n<pre><code class=\"language-java\">@Autowired\nprivate DiscoveryClient discoveryClient;\n\n@RequestMapping(&quot;\/eurekaClient-instance&quot;)\npublic List&lt;ServiceInstance&gt; showInfo() {\n    return this.discoveryClient.getInstances(&quot;eurekaClient&quot;);\n}<\/code><\/pre>\n<pre><code class=\"language-xml\">&lt;List&gt;\n    &lt;item&gt;\n        &lt;scheme&gt;http&lt;\/scheme&gt;\n        &lt;host&gt;eurekaClient&lt;\/host&gt;\n        &lt;port&gt;8000&lt;\/port&gt;\n        &lt;uri&gt;http:\/\/eurekaClient:8000&lt;\/uri&gt;\n        &lt;secure&gt;false&lt;\/secure&gt;\n        &lt;metadata&gt;\n            &lt;management.port&gt;8000&lt;\/management.port&gt;\n        &lt;\/metadata&gt;\n        &lt;serviceId&gt;EUREKACLIENT&lt;\/serviceId&gt;\n        &lt;instanceId&gt;192.168.1.97:eurekaClient:8000&lt;\/instanceId&gt;\n        &lt;instanceInfo&gt;\n            &lt;instanceId&gt;192.168.1.97:eurekaClient:8000&lt;\/instanceId&gt;\n            &lt;app&gt;EUREKACLIENT&lt;\/app&gt;\n            &lt;appGroupName\/&gt;\n            &lt;ipAddr&gt;192.168.1.97&lt;\/ipAddr&gt;\n            &lt;sid&gt;na&lt;\/sid&gt;\n            &lt;homePageUrl&gt;http:\/\/eurekaClient:8000\/&lt;\/homePageUrl&gt;\n            &lt;statusPageUrl&gt;http:\/\/eurekaClient:8000\/actuator\/info&lt;\/statusPageUrl&gt;\n            &lt;healthCheckUrl&gt;http:\/\/eurekaClient:8000\/actuator\/health&lt;\/healthCheckUrl&gt;\n            &lt;secureHealthCheckUrl\/&gt;\n            &lt;vipAddress&gt;eurekaClient&lt;\/vipAddress&gt;\n            &lt;secureVipAddress&gt;eurekaClient&lt;\/secureVipAddress&gt;\n            &lt;countryId&gt;1&lt;\/countryId&gt;\n            &lt;dataCenterInfo _class=&quot;com.netflix.appinfo.InstanceInfo$DefaultDataCenterInfo&quot;&gt;\n                &lt;name&gt;MyOwn&lt;\/name&gt;\n            &lt;\/dataCenterInfo&gt;\n            &lt;hostName&gt;eurekaClient&lt;\/hostName&gt;\n            &lt;status&gt;UP&lt;\/status&gt;\n            &lt;overriddenStatus&gt;UNKNOWN&lt;\/overriddenStatus&gt;\n            &lt;leaseInfo&gt;\n                &lt;renewalIntervalInSecs&gt;5&lt;\/renewalIntervalInSecs&gt;\n                &lt;durationInSecs&gt;90&lt;\/durationInSecs&gt;\n                &lt;registrationTimestamp&gt;1681976866110&lt;\/registrationTimestamp&gt;\n                &lt;lastRenewalTimestamp&gt;1681976866110&lt;\/lastRenewalTimestamp&gt;\n                &lt;evictionTimestamp&gt;0&lt;\/evictionTimestamp&gt;\n                &lt;serviceUpTimestamp&gt;1681976866110&lt;\/serviceUpTimestamp&gt;\n            &lt;\/leaseInfo&gt;\n            &lt;isCoordinatingDiscoveryServer&gt;false&lt;\/isCoordinatingDiscoveryServer&gt;\n            &lt;metadata&gt;\n                &lt;management.port&gt;8000&lt;\/management.port&gt;\n            &lt;\/metadata&gt;\n            &lt;lastUpdatedTimestamp&gt;1681976866110&lt;\/lastUpdatedTimestamp&gt;\n            &lt;lastDirtyTimestamp&gt;1681976839916&lt;\/lastDirtyTimestamp&gt;\n            &lt;actionType&gt;ADDED&lt;\/actionType&gt;\n            &lt;asgName\/&gt;\n        &lt;\/instanceInfo&gt;\n    &lt;\/item&gt;\n&lt;\/List&gt;<\/code><\/pre>\n<h3>\u4e94\u3001Eureka\u7684\u5065\u5eb7\u68c0\u67e5<\/h3>\n<p>\u5728pom\u6587\u4ef6\u4e2d\u5f15\u5165Spring Boot Actuator\uff0c\u5b83\u63d0\u4f9b\u4e86\/health\u7aef\u70b9\uff0c\u8be5\u7aef\u70b9\u53ef\u5c55\u793a\u5e94\u7528\u7a0b\u5e8f\u7684\u5065\u5eb7\u4fe1\u606f\u3002<\/p>\n<pre><code class=\"language-xml\">&lt;dependency&gt;\n    &lt;groupId&gt;org.springframework.boot&lt;\/groupId&gt;\n    &lt;artifactId&gt;spring-boot-starter-actuator&lt;\/artifactId&gt;\n&lt;\/dependency&gt;<\/code><\/pre>\n<p>\u5f15\u5165Actuator\u540e\uff0c\u5728Eureka\u4e2d\u5f00\u542f\u5065\u5eb7\u68c0\u67e5\u3002<\/p>\n<pre><code class=\"language-yml\">eureka:\n  client:\n    healthcheck:\n      enabled: true      #\u5f00\u542f\u5065\u5eb7\u68c0\u67e5(\u4f9d\u8d56spring-boot-actuator)<\/code><\/pre>\n<p>\u8bbf\u95ee<code>http:\/\/localhost:8761\/actuator\/health<\/code>\u53ef\u4ee5\u67e5\u770bEureka\u7684\u72b6\u6001\u3002<\/p>\n<p>\u82e5\u51fa\u73b0\u4e0b\u9762\u7ea2\u8272\u8b66\u544a\uff0c\u5176\u5b9e\u662f<code>Eureka<\/code>\u8fdb\u5165\u81ea\u6211\u4fdd\u62a4\u6a21\u5f0f\u3002\u5982\u679c\u6700\u8fd1\u4e00\u5206\u949f\u5b9e\u9645\u63a5\u6536\u5230\u7684\u5fc3\u8df3\u503cRenews\u9664\u4ee5\u671f\u671b\u7684\u5fc3\u8df3\u9608\u503c<code> Renews threshold<\/code>\u5c0f\u4e8e\u7b49\u4e8e<code>0.85<\/code>\uff0c\u5373 <code>Renews\/Renews threshold\u22640.85<\/code>\u3002<\/p>\n<p>$\\textcolor{red}{EMERGENCY! EUREKA MAY BE INCORRECTLY CLAIMING INSTANCES ARE UP WHEN THEY&#8217;RE NOT. }$<\/p>\n<p>$\\textcolor{red}{RENEWALS ARE LESSER THAN THRESHOLD AND HENCE THE INSTANCES ARE NOT BEING EXPIRED}$<\/p>\n<p>$\\textcolor{red}{ JUST TO BE SAFE}$<\/p>\n<p>\u53ef\u4ee5\u628a<code>renewal-percent-threshold<\/code>\u8c03\u7684\u5c0f\u4e00\u4e9b<\/p>\n<pre><code class=\"language-YML\">eureka:\n  server:\n    renewal-percent-threshold: 0.49<\/code><\/pre>\n<p>\u6216\u8005\u66b4\u529b\u4e00\u70b9\u5173\u95ed\u81ea\u6211\u4fdd\u62a4\u6a21\u5f0f<\/p>\n<pre><code class=\"language-yml\"># \u9ed8\u8ba4\u503c\u662ftrue\neureka:\n  server:\n    enable-self-preservation: false<\/code><\/pre>\n<p>\u9ed8\u8ba4\u60c5\u51b5\u4e0b\uff0c\u670d\u52a1\u6ce8\u518c\u5230<code>Eureka Server<\/code>\u7684\u8fc7\u7a0b\u8f83\u6162\u3002\u5728\u5f00\u53d1\u6216\u6d4b\u8bd5\u65f6\uff0c\u5e38\u5e38\u5e0c\u671b\u80fd\u591f\u52a0\u901f\u8fd9\u4e00\u8fc7\u7a0b\uff0c\u4ece\u800c\u63d0\u5347\u5de5\u4f5c\u6548\u7387\u3002<\/p>\n<pre><code class=\"language-yml\">##\u9ed8\u8ba4\u662f30\uff0c\u5355\u4f4d\u79d2\u3002\u8bbe\u6210\u4e00\u4e2a\u66f4\u5c0f\u7684\u503c\uff0c\u8be5\u914d\u7f6e\u7528\u4e8e\u8bbe\u7f6eEureka Client\u5411Eureka Server\u53d1\u9001\u5fc3\u8df3\u7684\u65f6\u95f4\u95f4\u9694\neureka:\n  instance:\n    lease-renewal-interval-in-seconds: 5<\/code><\/pre>\n<h3>\u516d\u3001\u4e0a\u4f20\u5230gitlab<\/h3>\n<h4>6.1 gitlab\u521b\u5efa\u7a7a\u9879\u76ee<\/h4>\n<p><img decoding=\"async\" src=\"\/wp-content\/uploads\/2023\/04\/19\/101af86e493cab4d6df.png\" alt=\"101\" \/><\/p>\n<p><img decoding=\"async\" src=\"\/wp-content\/uploads\/2023\/04\/19\/102e8001ab027ae9ece.png\" alt=\"102\" \/><\/p>\n<p><img decoding=\"async\" src=\"\/wp-content\/uploads\/2023\/04\/19\/10397984328950ee733.png\" alt=\"103\" \/><\/p>\n<h4>6.2 idea\u4e0a\u4f20\u9879\u76ee\u5230gitlab<\/h4>\n<p>idea\u8bbe\u7f6egit<\/p>\n<p><img decoding=\"async\" src=\"\/wp-content\/uploads\/2023\/04\/19\/201.png\" alt=\"201\" \/><\/p>\n<p>\u4e0a\u4f20\u9879\u76ee\u5230\u672c\u5730git\u4ed3\u5e93<\/p>\n<p><img decoding=\"async\" src=\"\/wp-content\/uploads\/2023\/04\/19\/202.png\" alt=\"202\" \/><\/p>\n<p><img decoding=\"async\" src=\"\/wp-content\/uploads\/2023\/04\/19\/1042dcecf91373d2f2e.png\" alt=\"104\" \/><\/p>\n<p><img decoding=\"async\" src=\"\/wp-content\/uploads\/2023\/04\/19\/105.png\" alt=\"105\" \/><\/p>\n<p><img decoding=\"async\" src=\"\/wp-content\/uploads\/2023\/04\/19\/106.png\" alt=\"106\" \/><\/p>\n<h4>6.3 \u9879\u76ee\u4e0a\u4f20\u5230\u8fdc\u7a0bgitlab\u670d\u52a1\u5668<\/h4>\n<p><img decoding=\"async\" src=\"\/wp-content\/uploads\/2023\/04\/19\/107.png\" alt=\"107\" \/><\/p>\n<p>\u628a\u590d\u5236\u8fc7\u6765\u7684gitlab\u4ed3\u5e93\u5730\u5740\u8d34\u8fc7\u6765\u3002\u6211\u8fd9\u91cc\u662f\u5916\u7f51\u8bbf\u95ee\u5bb6\u91cc\u7684\u670d\u52a1\u5668\uff0c\u7528\u4e86\u5f80\u5916\u7684\u57df\u540d\u5730\u5740\u3002<\/p>\n<p><img decoding=\"async\" src=\"\/wp-content\/uploads\/2023\/04\/19\/208.png\" alt=\"208\" \/><\/p>\n<p><img decoding=\"async\" src=\"\/wp-content\/uploads\/2023\/04\/19\/209.png\" alt=\"209\" \/><\/p>\n<p><img decoding=\"async\" src=\"\/wp-content\/uploads\/2023\/04\/19\/210.png\" alt=\"210\" \/><\/p>\n<p>\u5728gitlab\u9875\u9762\u5c31\u53ef\u4ee5\u770b\u5230\u9879\u76ee\u4e0a\u4f20\u8fc7\u6765\u4e86\u3002<\/p>\n<p><img decoding=\"async\" src=\"\/wp-content\/uploads\/2023\/04\/19\/211.png\" alt=\"211\" \/><\/p>\n<p>\u53ef\u4ee5\u8ba9\u5c0f\u4f19\u4f34\u53bb\u62c9\u53d6\u9879\u76ee\u8fdb\u884c\u5f00\u53d1\u4e0e\u5171\u4eab\u4e86\u3002<\/p>\n<blockquote>\n<p>\u4ee3\u7801\u5171\u4eab\u5730\u5740\uff1a<code>http:\/\/www.huerpu.cc:2080\/root\/springcloud<\/code><\/p>\n<\/blockquote>\n","protected":false},"excerpt":{"rendered":"<p>Spring Cloud(Kilburn 2022.0.2\u7248\u672c)\u7cfb\u5217\u6559\u7a0b(\u4e00) eureka \u4e3a\u4e86\u66f4\u597d\u7684\u6d4f\u89c8\u4f53 [&hellip;]<\/p>\n","protected":false},"author":1,"featured_media":0,"comment_status":"open","ping_status":"open","sticky":false,"template":"","format":"standard","meta":{"footnotes":""},"categories":[22],"tags":[],"class_list":["post-607","post","type-post","status-publish","format-standard","hentry","category-spring-cloudkilburn-2022-0-2"],"_links":{"self":[{"href":"http:\/\/www.huerpu.cc:7000\/index.php?rest_route=\/wp\/v2\/posts\/607","targetHints":{"allow":["GET"]}}],"collection":[{"href":"http:\/\/www.huerpu.cc:7000\/index.php?rest_route=\/wp\/v2\/posts"}],"about":[{"href":"http:\/\/www.huerpu.cc:7000\/index.php?rest_route=\/wp\/v2\/types\/post"}],"author":[{"embeddable":true,"href":"http:\/\/www.huerpu.cc:7000\/index.php?rest_route=\/wp\/v2\/users\/1"}],"replies":[{"embeddable":true,"href":"http:\/\/www.huerpu.cc:7000\/index.php?rest_route=%2Fwp%2Fv2%2Fcomments&post=607"}],"version-history":[{"count":1,"href":"http:\/\/www.huerpu.cc:7000\/index.php?rest_route=\/wp\/v2\/posts\/607\/revisions"}],"predecessor-version":[{"id":608,"href":"http:\/\/www.huerpu.cc:7000\/index.php?rest_route=\/wp\/v2\/posts\/607\/revisions\/608"}],"wp:attachment":[{"href":"http:\/\/www.huerpu.cc:7000\/index.php?rest_route=%2Fwp%2Fv2%2Fmedia&parent=607"}],"wp:term":[{"taxonomy":"category","embeddable":true,"href":"http:\/\/www.huerpu.cc:7000\/index.php?rest_route=%2Fwp%2Fv2%2Fcategories&post=607"},{"taxonomy":"post_tag","embeddable":true,"href":"http:\/\/www.huerpu.cc:7000\/index.php?rest_route=%2Fwp%2Fv2%2Ftags&post=607"}],"curies":[{"name":"wp","href":"https:\/\/api.w.org\/{rel}","templated":true}]}}