频道栏目
首页 > 资讯 > 其他 > 正文

Eureka Helloworld 简单入门事例以及遇到的问题

18-05-07        来源:[db:作者]  
收藏   我要投稿

Eureka Helloworld 简单入门事例以及遇到的问题。

Eureka 运行架构

High level architecture

Eureka Server:Eureka注册中心,具有服务发现和服务注册等功能
Application Service:将服务注册到Server,提供服务
Application Client:从注册中心中查找所需的服务,再请求调用具体提供服务的Service
Eureka Client 有两种: 提供服务的Application Service 和请求服务的Application Client

前期准备

Eureka Server:点击下载后,部署在Tomcat中,启动Tomcat,成功启动后:
eureka-server in Tomcat
启动前按照官方推荐的方式,修改配置优化启动方式(这种方式不要用在生产环境)
这里写图片描述
eureka-client.properties拷贝到项目中作为Application Service的配置文件,eureka-server.properties作为Eureak Server的配置文件,按官方推荐修改:

    # 取消这两个配置的注释
    eureka.waitTimeInMsWhenSyncEmpty=0
    eureka.numberRegistrySyncRetries=0

最后启动Tomcat.

项目结构

这里写图片描述
项目中的eureka-client.properties 拷贝自 eureka-server.war包中.
源码地址:Eureka-Sample Source Code
这里写图片描述
注意,源码中的配置conf有两个配置文件:sample-eureka-service.properties + sample-eureka-client.properties,使用官方给出的示例代码不会自动读取这些配置,所以本例中的配置不使用此处的配置文件,只使用拷贝过来的eureka-client.properties;再者,github上的eureka项目构建使用 Gradle,本文用的是maven的依赖:


    
        com.netflix.eureka
        eureka-client
        1.8.0 
    

源码中ExampleServiceBase + ExampleEurekaService作为Application Service,ExampleEurekaClient 作为 Application Client。其中 ExampleEurekaGovernatedService.java 可以不要,演示要ExampleEurekaService 已经足够了;后者是普通的启动方式,前者是在google/Guice IOC容器中启动,需要额外依赖Governated(netflix公司对Guice的封装)

运行配置

运行前修改下配置文件:eureka-client.properties

eureka.region=default # 和eureka-server为同一个区,不用修改
eureka.name=sample # eureka此处修改为sample
eureka.vipAddress=sample.mydomain.net # 修改虚拟地址,
eureka.port=8001 # 修改为可用端口,8080已被eureka-server占用
eureka.preferSameZone=false
eureka.shouldUseDns=false
eureka.serviceUrl.default=http://localhost:8080/eureka/v2/
eureka.shouldOnDemandUpdateStatusChange=false

注意,eureka-client.properties 配置文件是用于Application Service连接的配置,即运行ExampleEurekaService时会自动读取该配置文件。

启动示例

运行ExampleEurekaService,显示以下信息:
service-console
这里表示Applicaiton Service 正在连接Eureka-Server,由于Eureka自我保护模式,以及心跳周期长的原因(周期性心跳,默认时间为30秒),所以此处连接如没有其他问题,请持续等待;演示时一分钟后终于连接到了Eureka-Server,此时:
eureka-connected
运行控制台此时打印出:Service started and ready to process requests…
此时,说明Application Service已经注册到了Eureka-server中,开始接受流量,提供服务。

请求服务

Eureka中服务的注册和发现以域名为索引的访问形式,Client通过域名查找需要Server上的服务,所以在运行Applicaton Client(即ExampleEurekaClient这个类)时,需要指定所需服务的域名,如本例中,eureka-client.properties中配置了eureka.vipAddress=sample.mydomain.net,所以在ExampleEurekaClient中需要指定这个vipAddress:
client-conf
而后,运行ExampleEurekaClient,如下:
client-send
按照官方代码,运行到这里,就开始一直等service的响应,细看下代码,发现:
client-blocking
而ExampleEurekaClient中的发送方式:
client-fixed
明显,readLine()没有读取到终止符,造成了前面一直在阻塞…….
修改下request的内容,加上终止符即可.


最后,本文简单演示Eureka的Helloworld示例,熟悉下Eureka的基本概念和运作方式;网上资料大多都是with Spring Cloud,官方文档对演示示例没有详细的描述,自己还是希望先熟悉各组件再慢慢将其组合使用,对整个框架整体思路会清晰很多。

相关TAG标签
上一篇:静态路由和动态路由_静态路由解析
下一篇:带头结点的单链表【链表问题】
相关文章
图文推荐

关于我们 | 联系我们 | 广告服务 | 投资合作 | 版权申明 | 在线帮助 | 网站地图 | 作品发布 | Vip技术培训 | 举报中心

版权所有: 红黑联盟--致力于做实用的IT技术学习网站