Spring Cloud集成了Netflix的微服務開源管理軟件,包括Eureka。Eureka用于微服務注冊和發現的工具,
下面講下如何利用Spring Cloud實現Eureka的服務器
本次演示使用的NetBeans IDE8.2,JDK使用的是jdk1.8.0_121
1. 登錄http://start.spring.io/,生成Spring項目:
1)Group填上:com.accenture,Artifact填上:eureka-server
2) 點擊“Switch to the full version.",下面會展開所有的選項,滑動到“Cloud Discovery”部分,勾選“Eureka Server”
3)點擊“Generate Project”按鈕,Spring項目文件會自動打包成zip格式,并自動下載到本地。項目文件名稱為{Artifact}.zip,如本次生成的項目文件即為eurake-server.zip
2. 使用NetBeans,完成Eureka Server剩余的編碼和配置工作
1)打開NetBeans IDE,點擊File菜單,選擇Import Porject->From ZIP…,選擇剛才生成的項目文件導入
2)打開項目文件pom.xml,我們發現項目依賴里已經包含spring-cloud-starter-eureka-server
3) 導入后的項目是有問題的,問題描述是“依賴項沒有在本地庫”里
4) 在項目名稱處點擊右鍵,選擇“Resolve Project Problems”
會彈出下面的窗口:
點擊“Resolve…”按鈕,會啟動Priming構建,開始下載項目的依賴包到本地
待所有的依賴包都下載到本地庫后,問題窗口的標志會變成綠色
5) 打開主程序(包含main入口的程序),本演示里為“EurekaServerApplication.java”
導入“org.springframework.cloud.netflix.eureka.server.EnableEurekaServer;”,增加“@EnableEurekaServer”類注解
6)配置Eureka Server的端口和訪問網址,在默認設置下,該服務注冊中心也會將自己作為客戶端來嘗試注冊它自己,所以我們需要禁用它的客戶端注冊行為:
server.port=1111
eureka.client.register-with-eureka=false
eureka.client.fetch-registry=false
eureka.client.serviceUrl.defaultZone=http://localhost:${server.port}/eureka/
3. 到現在為止,Eureka Server的編程和配置都已經完成了,下面我們要運行Eureka-Server,并在瀏覽器里看下神秘的Eureka到底是什么樣子的
1) 點擊項目名稱,選擇Run Maven->Goals
在彈出的對話框里,Goals里填入“spring-boot:run”,點擊OK開始運行
在輸出框,我們可以看到類似于下面的輸出:
2017-02-27 22:37:49.257INFO44248 --- [main]o.s.j.e.a.AnnotationMBeanExporter: Located managed bean 'configurationPropertiesRebinder': registeringwith JMX server as MBean[org.springframework.cloud.context.properties:name=configurationPropertiesRebinder,context=c797fc,type=ConfigurationPropertiesRebinder]
2017-02-27 22:37:49.275INFO44248 --- [main]o.s.j.e.a.AnnotationMBeanExporter: Located managed bean 'refreshEndpoint': registering with JMX server asMBean[org.springframework.cloud.endpoint:name=refreshEndpoint,type=RefreshEndpoint]
2017-02-27 22:37:49.913INFO44248 --- [main]o.s.c.support.DefaultLifecycleProcessor: Starting beans in phase 0
2017-02-27 22:37:49.916INFO44248 --- [Thread-11]o.s.c.n.e.server.EurekaServerBootstrap: Setting the eureka configuration..
2017-02-27 22:37:49.916INFO44248 --- [main]o.s.c.n.e.s.EurekaServiceRegistry: Registering application unknown with eureka with status UP
2017-02-27 22:37:49.917INFO44248 --- [Thread-11]o.s.c.n.e.server.EurekaServerBootstrap: Eureka data center value eureka.datacenter is not set, defaulting todefault
2017-02-27 22:37:49.918INFO44248 --- [Thread-11]o.s.c.n.e.server.EurekaServerBootstrap: Eureka environment value eureka.environment is not set, defaulting totest
2017-02-27 22:37:49.942INFO44248 --- [Thread-11]o.s.c.n.e.server.EurekaServerBootstrap: isAws returned false
2017-02-27 22:37:49.944INFO44248 --- [Thread-11]o.s.c.n.e.server.EurekaServerBootstrap: Initialized server context
2017-02-27 22:37:49.944INFO44248 --- [Thread-11]c.n.e.r.PeerAwareInstanceRegistryImpl: Got 1 instances from neighboring DS node
2017-02-27 22:37:49.944INFO44248 --- [Thread-11]c.n.e.r.PeerAwareInstanceRegistryImpl: Renew threshold is: 1
2017-02-27 22:37:49.945INFO44248 --- [Thread-11]c.n.e.r.PeerAwareInstanceRegistryImpl: Changing status to UP
2017-02-27 22:37:49.963INFO44248 --- [Thread-11]e.s.EurekaServerInitializerConfiguration : Started Eureka Server
2017-02-27 22:37:50.396INFO44248 --- [main]s.b.c.e.t.TomcatEmbeddedServletContainer : Tomcat started on port(s): 1111(http)
2017-02-27 22:37:50.398INFO44248 --- [main].s.c.n.e.s.EurekaAutoServiceRegistration : Updating port to 1111
2017-02-27 22:37:50.407INFO44248 --- [main]com.accenture.EurekaServerApplication: Started EurekaServerApplication in 33.808 seconds (JVM running for46.782)
2)打開瀏覽器,輸入網址“http://localhost:1111/”,大名鼎鼎的Eureka界面就展現在我們面前,激動中。。。。
我們看到現在還沒有服務注冊到Eureka里
下一部分我們會在NetBeans IDE開發并實現一個微服務,并將該服務注冊到Eureka里,敬請期待