{"id":622,"date":"2023-09-06T16:19:47","date_gmt":"2023-09-06T08:19:47","guid":{"rendered":"http:\/\/www.huerpu.cc:7000\/?p=622"},"modified":"2023-09-06T17:19:58","modified_gmt":"2023-09-06T09:19:58","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-%e6%9c%8d%e5%8a%a1%e6%b3%a8%e5%86%8c%e4%b8%8e%e5%8f%91%e7%8e%b0eureka","status":"publish","type":"post","link":"http:\/\/www.huerpu.cc:7000\/?p=622","title":{"rendered":"Spring Cloud(Finchley\u7248\u672c)\u7cfb\u5217\u6559\u7a0b(\u4e00) \u670d\u52a1\u6ce8\u518c\u4e0e\u53d1\u73b0(eureka)"},"content":{"rendered":"<h3>Spring Cloud(Finchley\u7248\u672c)\u7cfb\u5217\u6559\u7a0b(\u4e00) \u670d\u52a1\u6ce8\u518c\u4e0e\u53d1\u73b0(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>\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;\">8<\/td>\n<\/tr>\n<tr>\n<td style=\"text-align: center;\"><code>Maven<\/code><\/td>\n<td style=\"text-align: center;\">3.9.4<\/td>\n<\/tr>\n<tr>\n<td style=\"text-align: center;\"><code>Spring Cloud<\/code><\/td>\n<td style=\"text-align: center;\"><code>Finchley<\/code><\/td>\n<\/tr>\n<tr>\n<td style=\"text-align: center;\">IDE<\/td>\n<td style=\"text-align: center;\"><code>idea2023.1.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\/09\/06\/image-20230906120456178.png\" alt=\"image-20230906120456178\" \/><\/p>\n<p><img decoding=\"async\" src=\"\/wp-content\/uploads\/2023\/09\/06\/image-20230906121408500.png\" alt=\"image-20230906121408500\" \/><\/p>\n<p><img decoding=\"async\" src=\"\/wp-content\/uploads\/2023\/09\/06\/image-20230906131449947.png\" alt=\"image-20230906131449947\" \/><\/p>\n<p><img decoding=\"async\" src=\"\/wp-content\/uploads\/2023\/09\/06\/image-20230906121903248.png\" alt=\"image-20230906121903248\" \/><\/p>\n<p><code>pom.xml<\/code>\u6587\u4ef6\u589e\u52a0<code>Eureka<\/code>\u4f9d\u8d56\uff0c\u4fee\u6539<code>SpringCloud<\/code>\u7248\u672c\u4e3a<code>Finchley.SR2<\/code>\uff0c\u4fee\u6539<code>SpringBoot<\/code>\u7248\u672c\u4e3a<code>2.0.6.RELEASE<\/code>\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;2.0.6.RELEASE&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;1.8&lt;\/java.version&gt;\n        &lt;spring-cloud.version&gt;Finchley.SR2&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;Finchley.SR2&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\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>Windows11<\/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:\/\/eurekaserver:8761\/<\/code>\u67e5\u770bEureka\u9996\u9875\u3002<\/p>\n<p><img decoding=\"async\" src=\"\/wp-content\/uploads\/2023\/09\/06\/image-20230906134611417.png\" alt=\"image-20230906134611417\" \/><\/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\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\u4e2a<code>actuator<\/code>\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;2.0.6.RELEASE&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;1.8&lt;\/java.version&gt;\n        &lt;spring-cloud.version&gt;Finchley.SR2&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;Finchley.SR2&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\n&lt;\/project&gt;<\/code><\/pre>\n<p>\u542f\u52a8\u9879\u76ee\uff0c\u5237\u65b0<code>http:\/\/eurekaClient: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\/09\/06\/image-20230906140215041.png\" alt=\"image-20230906140215041\" \/><\/p>\n<h4>2.3 \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> \u6539\u9020\u4e3a\u9700\u8981\u8ba4\u8bc1\u7684\u670d\u52a1\u3002<\/p>\n<p><code>EurekaServer<\/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@eurekaServer:8761\/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@eurekaServer:8761\/eureka\/<\/code><\/pre>\n<p>\u5728<code>EurekaServer<\/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 org.springframework.context.annotation.Configuration;\nimport org.springframework.security.config.annotation.web.builders.HttpSecurity;\nimport org.springframework.security.config.annotation.web.configuration.EnableWebSecurity;\nimport org.springframework.security.config.annotation.web.configuration.WebSecurityConfigurerAdapter;\n\n@Configuration\n@EnableWebSecurity\npublic class WebSecurityConfig extends WebSecurityConfigurerAdapter {\n    @Override\n    protected void configure(HttpSecurity http) throws Exception {\n        http.csrf().disable();\n        http.authorizeRequests()\n            .anyRequest()\n            .authenticated()\n            .and()\n            .httpBasic();\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\/09\/06\/image-20230906144643762.png\" alt=\"image-20230906144643762\" \/><\/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\/09\/06\/image-20230906144720577.png\" alt=\"image-20230906144720577\" \/><\/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<blockquote>\n<p>\u5bf9\u4e8e\u521b\u5efaEureka\u7684\u6ce8\u518c\u4e2d\u5fc3\u96c6\u7fa4\uff0c\u8bf7\u53c2\u8003\u6587\u7ae0\uff1a<a href=\"http:\/\/www.huerpu.cc:7000\/?p=607\u3002\u8fd9\u91cc\u5c31\u4e0d\u505a\u8fc7\u591a\u7684\u4ecb\u7ecd\u4e86\">http:\/\/www.huerpu.cc:7000\/?p=607\u3002\u8fd9\u91cc\u5c31\u4e0d\u505a\u8fc7\u591a\u7684\u4ecb\u7ecd\u4e86<\/a>\u3002<\/p>\n<\/blockquote>\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-hosts\">127.0.0.1   localhost\n127.0.0.1   eurekaServer\n127.0.0.1   eurekaClient\n127.0.0.1   eurekaclientconsumer<\/code><\/pre>\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;2.0.6.RELEASE&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;1.8&lt;\/java.version&gt;\n        &lt;spring-cloud.version&gt;Finchley.SR2&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;Finchley.SR2&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\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\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\/<\/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:\/\/eurekaserver: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_3_&lt;\/apps__hashcode&gt;\n    &lt;application&gt;\n        &lt;name&gt;EUREKASERVER&lt;\/name&gt;\n        &lt;instance&gt;\n            &lt;instanceId&gt;localhost: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.75.1&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;30&lt;\/renewalIntervalInSecs&gt;\n                &lt;durationInSecs&gt;90&lt;\/durationInSecs&gt;\n                &lt;registrationTimestamp&gt;1693982763311&lt;\/registrationTimestamp&gt;\n                &lt;lastRenewalTimestamp&gt;1693984895889&lt;\/lastRenewalTimestamp&gt;\n                &lt;evictionTimestamp&gt;0&lt;\/evictionTimestamp&gt;\n                &lt;serviceUpTimestamp&gt;1693982734094&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;1693982763311&lt;\/lastUpdatedTimestamp&gt;\n            &lt;lastDirtyTimestamp&gt;1693982733236&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;localhost: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.75.1&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;30&lt;\/renewalIntervalInSecs&gt;\n                &lt;durationInSecs&gt;90&lt;\/durationInSecs&gt;\n                &lt;registrationTimestamp&gt;1693982763312&lt;\/registrationTimestamp&gt;\n                &lt;lastRenewalTimestamp&gt;1693984884241&lt;\/lastRenewalTimestamp&gt;\n                &lt;evictionTimestamp&gt;0&lt;\/evictionTimestamp&gt;\n                &lt;serviceUpTimestamp&gt;1693982751862&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;1693982763312&lt;\/lastUpdatedTimestamp&gt;\n            &lt;lastDirtyTimestamp&gt;1693982751816&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;localhost: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.75.1&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;30&lt;\/renewalIntervalInSecs&gt;\n                &lt;durationInSecs&gt;90&lt;\/durationInSecs&gt;\n                &lt;registrationTimestamp&gt;1693984674119&lt;\/registrationTimestamp&gt;\n                &lt;lastRenewalTimestamp&gt;1693984884145&lt;\/lastRenewalTimestamp&gt;\n                &lt;evictionTimestamp&gt;0&lt;\/evictionTimestamp&gt;\n                &lt;serviceUpTimestamp&gt;1693984674119&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;1693984674119&lt;\/lastUpdatedTimestamp&gt;\n            &lt;lastDirtyTimestamp&gt;1693984674059&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;host&gt;eurekaClient&lt;\/host&gt;\n        &lt;port&gt;8000&lt;\/port&gt;\n        &lt;metadata&gt;\n            &lt;management.port&gt;8000&lt;\/management.port&gt;\n        &lt;\/metadata&gt;\n        &lt;secure&gt;false&lt;\/secure&gt;\n        &lt;uri&gt;http:\/\/eurekaClient:8000&lt;\/uri&gt;\n        &lt;serviceId&gt;EUREKACLIENT&lt;\/serviceId&gt;\n        &lt;instanceInfo&gt;\n            &lt;instanceId&gt;localhost:eurekaClient:8000&lt;\/instanceId&gt;\n            &lt;app&gt;EUREKACLIENT&lt;\/app&gt;\n            &lt;appGroupName \/&gt;\n            &lt;ipAddr&gt;192.168.75.1&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;30&lt;\/renewalIntervalInSecs&gt;\n                &lt;durationInSecs&gt;90&lt;\/durationInSecs&gt;\n                &lt;registrationTimestamp&gt;1693982763312&lt;\/registrationTimestamp&gt;\n                &lt;lastRenewalTimestamp&gt;1693984674011&lt;\/lastRenewalTimestamp&gt;\n                &lt;evictionTimestamp&gt;0&lt;\/evictionTimestamp&gt;\n                &lt;serviceUpTimestamp&gt;1693982751862&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;1693982763312&lt;\/lastUpdatedTimestamp&gt;\n            &lt;lastDirtyTimestamp&gt;1693982751816&lt;\/lastDirtyTimestamp&gt;\n            &lt;actionType&gt;ADDED&lt;\/actionType&gt;\n            &lt;asgName \/&gt;\n        &lt;\/instanceInfo&gt;\n        &lt;scheme \/&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><font color='red'>EMERGENCY! EUREKA MAY BE INCORRECTLY CLAIMING INSTANCES ARE UP WHEN THEY&#8217;RE NOT.\u00a0RENEWALS ARE LESSER THAN THRESHOLD AND HENCE THE INSTANCES ARE NOT BEING EXPIRED\u00a0 JUST TO BE SAFE\u00a0<\/font><\/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<blockquote>\n<p>\u672c\u6587\u53c2\u8003SpringCloud\u5b98\u65b9\u6587\u6863\uff1a<code>https:\/\/docs.spring.io\/spring-cloud-netflix\/docs\/4.0.1\/reference\/html\/<\/code><\/p>\n<\/blockquote>\n<h3>\u516d\u3001\u90e8\u7f72eurekaserver\u5230ubuntu22.04\u670d\u52a1\u5668<\/h3>\n<p>\u6bcf\u6b21\u90fd\u542f\u52a8eureka\u7684\u9879\u76ee\uff0c\u592a\u7e41\u7410\u4e86\uff0c\u6211\u4eec\u628aeureka\u90e8\u7f72\u5230Ubuntu\uff0c\u5c31\u53ef\u4ee5\u6109\u5feb\u7684\u73a9\u800d\u4e86\u3002\u6700\u597d\u90e8\u7f72\u5230\u4e00\u53f0\u53ef\u4ee5\u8fdc\u7a0b\u8bbf\u95ee\u7684\u670d\u52a1\u5668\uff0c\u8fd9\u6837\u5728\u4efb\u4f55\u5730\u65b9\u90fd\u53ef\u4ee5\u6ce8\u518c\u670d\u52a1\u548c\u6d88\u8d39\u670d\u52a1\u4e86\u3002<\/p>\n<h4>6.1 \u914d\u7f6e\u6587\u4ef6\u8bbe\u7f6e<\/h4>\n<p>\u8fd9\u91cc\u4e3a\u4e86\u6f14\u793a\uff0c\u6211\u4eec\u51c6\u5907\u597d\u4e86\u4e00\u53f0 <code>ubuntu22.04<\/code>\uff0cIP\u5730\u5740\u4e3a<code>192.168.169.128 <\/code>\u3002<\/p>\n<p>\u5728<code>eurekaserver<\/code>\u9879\u76ee\uff0c\u521b\u5efa<code>application-text.yml<\/code>\u6587\u4ef6\uff0c\u5185\u5bb9\u5982\u4e0b<\/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  server:\n    enable-self-preservation: true\n  instance:\n    prefer-ip-address: false\n  client:\n    fetch-registry: true\n    register-with-eureka: true\n    service-url:\n      defaultZone: http:\/\/eureka:eurekapwd@192.168.169.128:8761\/eureka\/<\/code><\/pre>\n<p><code>application.properties<\/code>\u4e2d\u589e\u52a0\u8ba9test\u751f\u6548\u914d\u7f6e\u3002<\/p>\n<pre><code class=\"language-properties\">spring.profiles.active=test<\/code><\/pre>\n<h4>6.2 \u751f\u6210eurekaserver\u7684jar\u5305<\/h4>\n<p>\u751f\u6210eurekaserver\u7684jar\u5305\uff1a<\/p>\n<p><img decoding=\"async\" src=\"\/wp-content\/uploads\/2023\/09\/06\/image-20230906154343842.png\" alt=\"image-20230906154343842\" \/><\/p>\n<h4>6.3 ubuntu\u5b89\u88c5jdk1.8<\/h4>\n<pre><code class=\"language-shell\">sudo su -\n\napt update\n\napt upgrade -y\n\napt install openjdk-8-jre-headless\n\njava -version<\/code><\/pre>\n<h4>6.4 \u8fd0\u884ceurekaServer-0.0.1-SNAPSHOT.jar\u5305<\/h4>\n<p>\u6211\u4eec\u628a<code>eurekaServer-0.0.1-SNAPSHOT.jar<\/code>\u5305 \u653e\u5728<code>\/usr\/software<\/code>\u76ee\u5f55\u4e0b\uff0c\u6839\u636e\u4e2a\u4eba\u559c\u597d\u76ee\u5f55\u5b58\u653e\u5373\u53ef\u3002\u4f7f\u7528<code>MobaXterm<\/code>\u7b49SSH\u5de5\u5177\u4e0a\u4f20\u5373\u53ef\u3002<\/p>\n<pre><code class=\"language-shell\">cd \/usr\n#\u521b\u5efasoftware\u6587\u4ef6\u5939\uff0c\u5728\u6b64\u6587\u4ef6\u5939\u4e0b\u6709\u6211\u4eec\u7684eurekaServer-0.0.1-SNAPSHOT.jar\u5305\uff0c\u53ef\u4ee5\u901a\u8fc7\u4e0a\u4f20\u5de5\u5177\u4e0a\u4f20\u8fc7\u6765\nmkdir software\n#\u8d4b\u4e88\u6743\u9650\nchmod -R 777 software\n#\u8fdb\u5165\u5230software\u76ee\u5f55\ncd software\n\n#\u8fd0\u884cjar\u5305\nnohup java -jar eurekaServer-0.0.1-SNAPSHOT.jar &gt; log.txt &amp;\n\n#\u5f00\u653e8761\u7aef\u53e3\nufw allow 8761\nufw enable<\/code><\/pre>\n<h4>6.5 \u9a8c\u8bc1eurekaserver\u670d\u52a1<\/h4>\n<p>\u6253\u5f00<code>http:\/\/192.168.169.128:8761\/<\/code>\u67e5\u770b\uff0cEureka\u5df2\u7ecf\u542f\u52a8\u4e86\u3002<\/p>\n<p><img decoding=\"async\" src=\"\/wp-content\/uploads\/2023\/09\/06\/image-20230906154948081.png\" alt=\"image-20230906154948081\" \/><\/p>\n<p>\u628a<code>eurekaClient<\/code>\u9879\u76ee\u4fee\u6539<code>defaultZone<\/code>\u4e3a<code>http:\/\/eureka:eurekapwd@192.168.169.128:8761\/eureka\/<\/code><\/p>\n<pre><code class=\"language-yml\">defaultZone: http:\/\/eureka:eurekapwd@192.168.169.128:8761\/eureka\/<\/code><\/pre>\n<p>\u91cd\u542feurekaClient\u9879\u76ee\u548ceurekaClientConsumer\u9879\u76ee\uff0c\u5e76\u5237\u65b0eurekaserver\uff0c\u67e5\u770b\u670d\u52a1\u662f\u5426\u6ce8\u518c\u4e0a\u6765\u3002<\/p>\n<p><img decoding=\"async\" src=\"\/wp-content\/uploads\/2023\/09\/06\/image-20230906171825726.png\" alt=\"image-20230906171825726\" \/><\/p>\n<p>\u8fd9\u6837\u6211\u4eec\u5c31\u53ef\u4ee5\u4f7f\u7528\u8fd9\u4e2aEureka\u6ce8\u518c\u4e2d\u5fc3\uff0c\u800c\u6ca1\u5fc5\u8981\u6bcf\u6b21\u90fd\u7528idea\u542f\u52a8\u4e00\u4e0b\uff0c\u8fd9\u6837\u4f1a\u65b9\u4fbf\u4e00\u70b9\u70b9\u3002<\/p>\n<h3>\u4e03\u3001eureka\u76f8\u5173\u8bf4\u660e<\/h3>\n<h4>7.1 EurekaServer REST API\u63a5\u53e3<\/h4>\n<pre><code class=\"language-properties\">POST    \/eureka\/apps\/{appId}                                            \u6ce8\u518c\u65b0\u7684\u5b9e\u4f8b\n\nDELETE  \/eureka\/apps\/{appId}\/{instanceId}                               \u6ce8\u9500\u5e94\u7528\u5b9e\u4f8b\n\nPUT     \/eureka\/apps\/{appId}\/{instanceId}                               \u5e94\u7528\u5b9e\u4f8b\u53d1\u9001\u5fc3\u8df3\n\nGET     \/eureka\/apps                                                    \u67e5\u8be2\u6240\u6709\u7684\u5b9e\u4f8b\n\nGET     \/eureka\/apps\/{appId}                                            \u67e5\u8be2\u6307\u5b9aappId\u7684\u5b9e\u4f8b\n\nGET     \/eureka\/apps\/{appId}\/{instanceId}                               \u67e5\u8be2\u6307\u5b9aappId\u548cinstanceId\u7684\u5b9e\u4f8b\n\nGET     \/eureka\/instances\/{instanceId}                                  \u67e5\u8be2\u6307\u5b9a\u7684instanceId\u7684\u5b9e\u4f8b\n\nPUT     \/eureka\/apps\/{appId}\/{instanceId}\/status?value=OUT_OF_SERVICE   \u6682\u505c\u5e94\u7528\u5b9e\u4f8b\n\nPUT     \/eureka\/apps\/{appId}\/{instanceId}\/status?value=UP               \u6062\u590d\u5e94\u7528\u5b9e\u4f8b\n\nPUT     \/eureka\/apps\/{appId}\/{instanceId}\/metadata?key=value            \u66f4\u65b0\u5143\u6570\u636e\u4fe1\u606f\n\nGET     \/eureka\/vips\/{vipAddress}                                       \u6839\u636evip\u5730\u5740\u67e5\u8be2\n\nGET     \/eureka\/svips\/{svipAddress}                                     \u6839\u636esvip\u5730\u5740\u67e5\u8be2<\/code><\/pre>\n<h4>7.2 Client\u7aef\u53c2\u6570<\/h4>\n<pre><code class=\"language-properties\">eureka.client.register-with-eureka: true                     \u662f\u5426\u6ce8\u518c\u81ea\u5df1\u5230Eureka Server\u4e0a\u9762\neureka.client.fetch-registry: true                           \u662f\u5426\u4eceEureka Server\u4e0a\u9762\u62c9\u53d6\u670d\u52a1\u4fe1\u606f\neureka.client.enable: true                                   \u662f\u5426\u542f\u7528Eureka\u5ba2\u6237\u7aef,\u4e0d\u542f\u7528\u5219\u4e0d\u6ce8\u518c\u5230Eureka Server\neureka.client.healthcheck.enable: true                       \u662f\u5426\u542f\u7528Eureka\u5065\u5eb7\u68c0\u67e5\neureka.client.availability-zones: new HashMap&lt;&gt;()            \u544a\u8bc9client\u6709\u54ea\u4e9b\u53ef\u7528\u7684region\u548czone\neureka.client.filter-only-up-instances: true                 \u662f\u5426\u8fc7\u6ee4\u51faInstanceStatus\u4e3aUP\u7684\u5b9e\u4f8b\neureka.client.region: us-east-1                              \u6307\u5b9a\u8be5\u5e94\u7528\u5b9e\u4f8b\u6240\u5728\u7684region,AWS datacenters\u9002\u7528\neureka.client.prefer-same-zone-eureka: true                  \u662f\u5426\u4f18\u5148\u4f7f\u7528\u4e0e\u8be5\u5e94\u7528\u76f8\u540cZone\u7684Eureka Server\neureka.client.cache-refresh-executor-thread-pool-size: 2     \u7f13\u5b58\u5237\u65b0\u7ebf\u7a0b\u6c60CacheRefreshThread\u7684\u521d\u59cb\u5316\u7ebf\u7a0b\u6570\neureka.client.registry-fetch-interval-seconds: 30            Eureka client\u62c9\u53d6\u670d\u52a1\u6ce8\u518c\u4fe1\u606f\u95f4\u9694\u65f6\u95f4(s)\neureka.client.instance-info-replication-interval-seconds: 30 \u590d\u5236\u5b9e\u4f8b\u53d8\u5316\u4fe1\u606f\u5230Eureka\u670d\u52a1\u5668\u6240\u9700\u8981\u7684\u65f6\u95f4\u95f4\u9694\uff08s\uff09\neureka.client.eureka-service-url-poll-interval-seconds:  300 \u8f6e\u8be2Eureka\u670d\u52a1\u7aef\u5730\u5740\u66f4\u6539\u7684\u95f4\u9694\u65f6\u95f4(s)\neureka.client.eureka-server-read-timeout-seconds: 8          \u8bfb\u53d6Eureka Server\u4fe1\u606f\u7684\u8d85\u65f6\u65f6\u95f4(s)\neureka.client.eureka-server-connect-timeout-seconds: 5       \u8fde\u63a5Eureka Server\u7684\u8d85\u65f6\u65f6\u95f4(s)\neureka.client.eureka-server-total-connections: 200           \u4eceEureka\u5ba2\u6237\u7aef\u5230\u6240\u6709Eureka\u670d\u52a1\u7aef\u7684\u8fde\u63a5\u603b\u6570\neureka.client.eureka-server-total-connections-per-host: 50   \u4eceEureka\u5ba2\u6237\u7aef\u5230\u6bcf\u4e2aEureka\u670d\u52a1\u7aef\u4e3b\u673a\u7684\u8fde\u63a5\u603b\u6570\neureka.client.eureka-connection-idle-timeout-seconds: 30     Eureka\u670d\u52a1\u7aef\u8fde\u63a5\u7684\u7a7a\u95f2\u5173\u95ed\u65f6\u95f4(s)\neureka.instance.metadata-map: new HashMap&lt;&gt;()                \u6307\u5b9a\u5e94\u7528\u5b9e\u4f8b\u7684\u5143\u6570\u636e\u4fe1\u606f\neureka.instance.prefer-ip-address: false                     \u662f\u5426\u4f18\u5148\u4f7f\u7528ip\u5730\u5740\u6765\u66ff\u4ee3hostname\u4f5c\u4e3a\u5b9e\u4f8bhostname\u5b57\u6bb5\u503c \neureka.instance.lease-expiration-duration-in-seconds: 90     Eureka clent\u6700\u540e\u4e00\u6b21\u5fc3\u8df3\u540e,Eureka Server\u5254\u9664\u9700\u8981\u7b49\u5f85\u65f6\u95f4(s)\neureka.instance.lease-renewal-interval-in-seconds: 30        \u5ba2\u6237\u7aef\u5411Eureka Server\u53d1\u9001\u5fc3\u8df3\u5468\u671f(s)<\/code><\/pre>\n<h4>7.3 Server\u7aef\u53c2\u6570<\/h4>\n<pre><code class=\"language-properties\">eureka.server.enable-self-preservation: true                 Eureka Server\u662f\u5426\u5f00\u542f\u81ea\u6211\u4fdd\u62a4\u6a21\u5f0f\neureka.server.renewal-percent-threshold: 0.85                \u6307\u5b9a\u6bcf\u5206\u949f\u9700\u8981\u6536\u5230\u7684\u7eed\u7ea6\u6b21\u6570\u7684\u9619\u503c,\u5982\u679c\u9608\u503c\u6bd4\u6700\u5c0f\u503c\u5927,\u5219\u81ea\u6211\u4fdd\u62a4\u6a21\u5f0f\u5f00\u542f\neureka.server.eviction-interval-timer-in-ms: 60*1000         \u6307\u5b9aEvictionTask\u5b9a\u65f6\u4efb\u52a1\u7684\u8c03\u5ea6\u9891\u7387,\u7528\u4e8e\u5254\u9664\u8fc7\u671f\u7684\u5b9e\u4f8b\neureka.server.wait-time-in-ms-when-sync-empty: 1000*60*5     \u5728Eureka\u670d\u52a1\u5668\u83b7\u53d6\u4e0d\u5230\u96c6\u7fa4\u91cc\u5bf9\u7b49\u670d\u52a1\u5668\u4e0a\u7684\u5b9e\u4f8b\u65f6\uff0c\u9700\u8981\u7b49\u5f85\u7684\u65f6\u95f4<\/code><\/pre>\n<h3>\u516b\u3001\u4ee3\u7801\u5730\u5740<\/h3>\n<blockquote>\n<p>\u4ee3\u7801\u5171\u4eab\u5730\u5740\uff1a<code>http:\/\/www.huerpu.cc:2080\/root\/springcloud-finchley<\/code><\/p>\n<\/blockquote>\n","protected":false},"excerpt":{"rendered":"<p>Spring Cloud(Finchley\u7248\u672c)\u7cfb\u5217\u6559\u7a0b(\u4e00) \u670d\u52a1\u6ce8\u518c\u4e0e\u53d1\u73b0(eureka) \u4e3a\u4e86\u66f4\u597d\u7684\u6d4f\u89c8 [&hellip;]<\/p>\n","protected":false},"author":1,"featured_media":0,"comment_status":"open","ping_status":"open","sticky":false,"template":"","format":"standard","meta":{"footnotes":""},"categories":[24],"tags":[],"class_list":["post-622","post","type-post","status-publish","format-standard","hentry","category-spring-cloudfinchley"],"_links":{"self":[{"href":"http:\/\/www.huerpu.cc:7000\/index.php?rest_route=\/wp\/v2\/posts\/622","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=622"}],"version-history":[{"count":5,"href":"http:\/\/www.huerpu.cc:7000\/index.php?rest_route=\/wp\/v2\/posts\/622\/revisions"}],"predecessor-version":[{"id":678,"href":"http:\/\/www.huerpu.cc:7000\/index.php?rest_route=\/wp\/v2\/posts\/622\/revisions\/678"}],"wp:attachment":[{"href":"http:\/\/www.huerpu.cc:7000\/index.php?rest_route=%2Fwp%2Fv2%2Fmedia&parent=622"}],"wp:term":[{"taxonomy":"category","embeddable":true,"href":"http:\/\/www.huerpu.cc:7000\/index.php?rest_route=%2Fwp%2Fv2%2Fcategories&post=622"},{"taxonomy":"post_tag","embeddable":true,"href":"http:\/\/www.huerpu.cc:7000\/index.php?rest_route=%2Fwp%2Fv2%2Ftags&post=622"}],"curies":[{"name":"wp","href":"https:\/\/api.w.org\/{rel}","templated":true}]}}