這篇文章主要為大家展示了“SpringCloud之服務(wù)注冊與發(fā)現(xiàn)Spring Cloud Eureka的示例分析”,內(nèi)容簡而易懂,條理清晰,希望能夠幫助大家解決疑惑,下面讓小編帶領(lǐng)大家一起研究并學(xué)習(xí)一下“SpringCloud之服務(wù)注冊與發(fā)現(xiàn)Spring Cloud Eureka的示例分析”這篇文章吧。
成都創(chuàng)新互聯(lián)專注于企業(yè)網(wǎng)絡(luò)營銷推廣、網(wǎng)站重做改版、新昌網(wǎng)站定制設(shè)計(jì)、自適應(yīng)品牌網(wǎng)站建設(shè)、H5高端網(wǎng)站建設(shè)、商城網(wǎng)站建設(shè)、集團(tuán)公司官網(wǎng)建設(shè)、成都外貿(mào)網(wǎng)站建設(shè)、高端網(wǎng)站制作、響應(yīng)式網(wǎng)頁設(shè)計(jì)等建站業(yè)務(wù),價(jià)格優(yōu)惠性價(jià)比高,為新昌等各大城市提供網(wǎng)站開發(fā)制作服務(wù)。
一、Spring Cloud簡介
Spring Cloud是一個(gè)基千SpringBoot實(shí)現(xiàn)的微服務(wù)架構(gòu)開發(fā) 工具。它為微服務(wù)架構(gòu)中涉及的 配置管理、服務(wù)治理、 斷路器、 智能路由、微代理、 控制總線、 全局鎖、 決策競選、分布式會話和集群狀態(tài)管理等操作提供了一種簡單的開發(fā)方式。
Spring Cloud包含了多個(gè)子項(xiàng)目(針對分布式系統(tǒng)中涉及的多個(gè)不同開源產(chǎn)品,還可能會新增),如下所述。
Spring Cloud Config: 配置管理工具、Spring Cloud Netflix: 核心組件、Spring Cloud Bus: 事件、消息總線等等。
二、Spring Cloud Eureka
Spring Cloud Eureka 是 Spring Cloud Netflix 微服務(wù)套件中的一部分, 它基于 NetflixEureka 做了二次封裝, 主要負(fù)責(zé)完成微服務(wù)架構(gòu)中的服務(wù)治理功能。 Spring Cloud 通過為Eureka 增加了 Spring Boot 風(fēng)格的自動化配置,我們只需通過簡單引入依賴和注解配置就能讓 Spring Boot 構(gòu)建的微服務(wù)應(yīng)用輕松地與 Eureka 服務(wù)治理體系進(jìn)行整合。
服務(wù)治理可以說是微服務(wù)架構(gòu)中最為核心和基礎(chǔ)的模塊, 它主要用來實(shí)現(xiàn)各個(gè)微服務(wù)實(shí)例的自動化注冊與發(fā)現(xiàn)。
三、實(shí)例
(1)工具:IntelliJ IDEA
(2)新建一個(gè)空項(xiàng)目
(3)新建一個(gè)Eureka Server,Module,名為:eurekaserver
工程右鍵->創(chuàng)建Module-> 選擇spring initialir ->填好項(xiàng)目名,下一步->,如圖選擇Eureka Server:
(3-1)pom.xml
<dependency> <groupId>org.springframework.boot</groupId> <artifactId>spring-boot-starter-web</artifactId> </dependency> <dependency> <groupId>org.springframework.cloud</groupId> <artifactId>spring-cloud-starter-eureka-server</artifactId> </dependency> <dependency> <groupId>org.springframework.boot</groupId> <artifactId>spring-boot-starter-test</artifactId> <scope>test</scope> </dependency>
(3-2)application.yml
server: port: 5555 eureka: instance: hostname: localhost client: registerWithEureka: false fetchRegistry: false serviceUrl: defaultZone: http://${eureka.instance.hostname}:${server.port}/eureka/
備注:eureka.client.register-with-eureka: 由于該應(yīng)用為注冊中心,所以設(shè)置為 false, 代表不向注冊中心注冊自己。
eureka.client.fetch-registry: 由于注冊中心的職責(zé)就是維護(hù)服務(wù)實(shí)例,它并不需要去檢索服務(wù), 所以也設(shè)置為 false。
(3-3)入口類
import org.springframework.boot.SpringApplication; import org.springframework.boot.autoconfigure.SpringBootApplication; import org.springframework.cloud.netflix.eureka.server.EnableEurekaServer; @EnableEurekaServer @SpringBootApplication public class EurekaserverApplication { public static void main(String[] args) { SpringApplication.run(EurekaserverApplication.class, args); } }
(3-4)啟動測試
在完成了上面的配置后,啟動應(yīng)用并訪問 http://localhost:5555/。可以看到如下圖所示的 Eureka 信息面板, 其中 Instances currently registered with Eureka 欄是空的, 說明該注冊中心還沒有注冊任何服務(wù)。
(4)注冊服務(wù)提供者在完成了服務(wù)注冊中心的搭建之后,接下來我們嘗試將一個(gè)既有的 Spring Boot 應(yīng)用加入 Emeka 的服務(wù)治理體系中去。
(5)再新建一個(gè)Eureka Client,Module,名為:helloserver,這個(gè)helloserver作為eurekaserver的子model
(6)改造父model和子model的pom配置(6-1)eurekaserver的pom.xml配置:
<packaging>pom</packaging> <modules> <module>../helloserver</module> </modules>
(6-2)eurekaserver的全部pom.xml:
<?xml version="1.0" encoding="UTF-8"?> <project xmlns="http://maven.apache.org/POM/4.0.0" xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" xsi:schemaLocation="http://maven.apache.org/POM/4.0.0 http://maven.apache.org/xsd/maven-4.0.0.xsd"> <modelVersion>4.0.0</modelVersion> <groupId>com.example</groupId> <artifactId>demoeurekaserver</artifactId> <version>0.0.1-SNAPSHOT</version> <packaging>pom</packaging> <modules> <module>../helloserver</module> </modules> <name>eurekaserver</name> <description>Demo project for Spring Boot</description> <parent> <groupId>org.springframework.boot</groupId> <artifactId>spring-boot-starter-parent</artifactId> <version>1.5.9.RELEASE</version> <relativePath/> <!-- lookup parent from repository --> </parent> <properties> <project.build.sourceEncoding>UTF-8</project.build.sourceEncoding> <project.reporting.outputEncoding>UTF-8</project.reporting.outputEncoding> <java.version>1.8</java.version> <spring-cloud.version>Edgware.RELEASE</spring-cloud.version> </properties> <dependencies> <dependency> <groupId>org.springframework.boot</groupId> <artifactId>spring-boot-starter-web</artifactId> </dependency> <dependency> <groupId>org.springframework.cloud</groupId> <artifactId>spring-cloud-starter-eureka-server</artifactId> </dependency> <dependency> <groupId>org.springframework.boot</groupId> <artifactId>spring-boot-starter-test</artifactId> <scope>test</scope> </dependency> </dependencies> <dependencyManagement> <dependencies> <dependency> <groupId>org.springframework.cloud</groupId> <artifactId>spring-cloud-dependencies</artifactId> <version>${spring-cloud.version}</version> <type>pom</type> <scope>import</scope> </dependency> </dependencies> </dependencyManagement> <build> <plugins> <plugin> <groupId>org.springframework.boot</groupId> <artifactId>spring-boot-maven-plugin</artifactId> </plugin> </plugins> </build> </project>
(6-3)helloserver的pom.xml配置:
<parent> <groupId>com.example</groupId> <artifactId>demoeurekaserver</artifactId> <version>0.0.1-SNAPSHOT</version> <relativePath>../eurekaserver/pom.xml</relativePath> </parent>
(6-4)helloserver的全部pom.xml配置:
<?xml version="1.0" encoding="UTF-8"?> <project xmlns="http://maven.apache.org/POM/4.0.0" xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" xsi:schemaLocation="http://maven.apache.org/POM/4.0.0 http://maven.apache.org/xsd/maven-4.0.0.xsd"> <modelVersion>4.0.0</modelVersion> <parent> <groupId>com.example</groupId> <artifactId>demoeurekaserver</artifactId> <version>0.0.1-SNAPSHOT</version> <relativePath>../eurekaserver/pom.xml</relativePath> </parent> <artifactId>helloserver</artifactId> <packaging>jar</packaging> <name>helloserver</name> <description>Demo project for Spring Boot</description> <properties> <start-class>com.example.helloserver.HelloserverApplication</start-class> </properties> <dependencies> <dependency> <groupId>org.springframework.boot</groupId> <artifactId>spring-boot-starter-web</artifactId> </dependency> <dependency> <groupId>org.springframework.boot</groupId> <artifactId>spring-boot-starter-test</artifactId> <scope>test</scope> </dependency> </dependencies> <dependencyManagement> <dependencies> <dependency> <groupId>org.springframework.cloud</groupId> <artifactId>spring-cloud-dependencies</artifactId> <version>${spring-cloud.version}</version> <type>pom</type> <scope>import</scope> </dependency> </dependencies> </dependencyManagement> <build> <plugins> <plugin> <groupId>org.springframework.boot</groupId> <artifactId>spring-boot-maven-plugin</artifactId> </plugin> </plugins> </build> </project>
(6-5)helloserver的application.yml配置:
server: port: 5556 spring: application: name: helloserver eureka: client: serviceUrl: defaultZone: http://localhost:5555/eureka/
(6-6)helloserver的啟動類:
@EnableEurekaServer @SpringBootApplication @RestController public class HelloserverApplication { private final Logger log = (Logger) LoggerFactory.getLogger(HelloserverApplication.class); @Autowired private DiscoveryClient client; @RequestMapping(name = "/hello", method = RequestMethod.GET) public String index() { ServiceInstance instance = client.getLocalServiceInstance(); log.info("/hello, host:" + instance.getHost() + ",service_id:" + instance.getServiceId()); return "Hello SpringCloud~"; } public static void main(String[] args) { SpringApplication.run(HelloserverApplication.class, args); } }
(7)分別啟動eurekaserver和helloserver,并測試:
(7-1)訪問eurekaserver:(可以很清楚的看到HELLOSERVER信息)
(7-2)訪問helloserver:
(7-3)查看helloserver控制臺信息:
以上是“SpringCloud之服務(wù)注冊與發(fā)現(xiàn)Spring Cloud Eureka的示例分析”這篇文章的所有內(nèi)容,感謝各位的閱讀!相信大家都有了一定的了解,希望分享的內(nèi)容對大家有所幫助,如果還想學(xué)習(xí)更多知識,歡迎關(guān)注創(chuàng)新互聯(lián)行業(yè)資訊頻道!
網(wǎng)頁題目:SpringCloud之服務(wù)注冊與發(fā)現(xiàn)SpringCloudEureka的示例分析
本文網(wǎng)址:http://chinadenli.net/article30/poopso.html
成都網(wǎng)站建設(shè)公司_創(chuàng)新互聯(lián),為您提供網(wǎng)站排名、軟件開發(fā)、電子商務(wù)、網(wǎng)站營銷、Google、網(wǎng)站收錄
聲明:本網(wǎng)站發(fā)布的內(nèi)容(圖片、視頻和文字)以用戶投稿、用戶轉(zhuǎn)載內(nèi)容為主,如果涉及侵權(quán)請盡快告知,我們將會在第一時(shí)間刪除。文章觀點(diǎn)不代表本網(wǎng)站立場,如需處理請聯(lián)系客服。電話:028-86922220;郵箱:631063699@qq.com。內(nèi)容未經(jīng)允許不得轉(zhuǎn)載,或轉(zhuǎn)載時(shí)需注明來源: 創(chuàng)新互聯(lián)