因为工作需要,写了这个东东。我自己也才了解不久,有可能有错误的地方,请大家给以指正。
要介绍eureka、我们先说说之前我们使用的分布式接口工具、ejb或者webservice 。ejb因为其内网的传输效率高而被广泛应用。webservice因为使用的是http协议且可以进行加密传输也被广泛应用。随着互联网的发展,ejb和webservice的在集群化的短板尤显突出。虽然也有一些集群化方案解决、如webservice可以使用方向代理进行分流,但是开发起来的效果不是很好。如filter过滤等等。
eureka弥补了以上的问题、且在开发速度上有较大的提交。它能像ejb那样直接调用server的接口,且在集群分配上能够动态设置。以webservice为例:他类似在webservice的server和client中间加了一个服务器。所有的eureka在server端代码在启动的时候先将自己的服务注册到eureka,客户端在启动时向eurka寻找自己的服务,寻找到后由eurka将客户端的请求转发给server执行后返回给client。
以下代码以springboot项目为例创建eureka项目。在springboot中的eureka的包文件中已经包含了eureka的服务器,因此我们不需要进行eureka的服务器安装。
1、首先我们到http://start.spring.io/下载项目maven的demo 。要求包文件包含web包。下载后我们导入demo工程。
<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>spring.cloud</groupId> <artifactId>spring-boot-cloud</artifactId> <version>1.0-SNAPSHOT</version> <packaging>jar</packaging> <properties> <project.build.sourceEncoding>UTF-8</project.build.sourceEncoding> <java.version>1.8</java.version> <spring.version>4.2.4.RELEASE</spring.version> <spring-boot.version>1.3.1.RELEASE</spring-boot.version> <platform-bom.version>2.0.1.RELEASE</platform-bom.version> </properties> <dependencies> <dependency> <groupId>org.springframework.boot</groupId> <artifactId>spring-boot-starter</artifactId> </dependency> <dependency> <groupId>org.springframework.boot</groupId> <artifactId>spring-boot-starter-actuator</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</groupId> <artifactId>spring-framework-bom</artifactId> <version>${spring.version}</version> <type>pom</type> <scope>import</scope> </dependency> <dependency> <groupId>org.springframework.boot</groupId> <artifactId>spring-boot-dependencies</artifactId> <version>${spring-boot.version}</version> <type>pom</type> <scope>import</scope> </dependency> <dependency> <groupId>io.spring.platform</groupId> <artifactId>platform-bom</artifactId> <version>${platform-bom.version}</version> <type>pom</type> <scope>import</scope> </dependency> <dependency> <groupId>org.springframework.cloud</groupId> <artifactId>spring-cloud-starter-parent</artifactId> <version>Angel.SR4</version> <type>pom</type> <scope>import</scope> </dependency> </dependencies> </dependencyManagement> <build> <plugins> <plugin> <groupId>org.springframework.boot</groupId> <artifactId>spring-boot-maven-plugin</artifactId> <configuration> <executable>true</executable> </configuration> <executions> <execution> <goals> <goal>repackage</goal> </goals> </execution> </executions> </plugin> </plugins> </build> </project>
package org.mvnsearch.boot.registry.server; import org.springframework.boot.SpringApplication; import org.springframework.boot.autoconfigure.SpringBootApplication; import org.springframework.cloud.netflix.eureka.server.EnableEurekaServer; @SpringBootApplication @EnableEurekaServer public class CloudRegistryServerApplication { public static void main(String[] args) { SpringApplication.run(CloudRegistryServerApplication.class,args); } }
在resources目录下添加application.yml
spring: application: name: eureka server: port: 8761 eureka: instance: hostname: localhost client: registerWithEureka: false fetchRegistry: false server: waitTimeInMsWhenSyncEmpty: 0
这样我们运行main后,@EnableEurekaServer就将服务注册到了Eureka.我们可以通过http://localhost:8761/eureka能查看注册的情况。这仅仅是个服务端程序。客户端的代码类似。添加@EnableEurekaClient即可
----------------------
服务端可以优化为以下代码、所有的服务端都可以自动注册
1、application.properties
eureka.instance.preferIpAddress=true eureka.client.serviceUrl.defaultZone=http://localhost:8761/eureka/
2、pom加入
<dependency> <groupId>org.springframework.cloud</groupId> <artifactId>spring-cloud-starter-eureka</artifactId> <version>1.0.4.RELEASE</version> </dependency>
------------------------------------------------------------------------------------------------------------------------------------------
客户端:现在我们也可以不用直接注册到eureka,可以通过zull的方式注册。配置如下:
#自己的web端口 我们通过http://localhost:1111访问自己 server: port: 1111 management: port: 1110 #自己的引用名称,注册到eureka也会是这个名称 spring: application: name: xxx-web-server #eureka服务配置 eureka: instance: prefer-ip-address: true client: service-url: defaultZone: http://localhost:8761/eureka/ #这里的zull承担了路由的功能,所有http://localhost/order/**的链接都会被路由到ytx-sea#rch-server的eureka服务上,eureka也可就在项目中jar包一起存在,随着java的启动一起运行。 zuul: routes: users: path: /order/** serviceId: ytx-search-server stripPrefix: true
java代码
@SpringBootApplication @EnableZuulProxy //zuul作为eureka的代理服务器,监管eureka服务费 @EnableDiscoveryClient //eureka会去自动扫描,将注册到eureka的服务自动加载进来 @EnableFeignClients public class XXXServerApplication { public static void main(String[] args) { SpringApplication.run(XXXServerApplication.class, args); } }
controller代码
@RestController @RequestMapping("/xxx") public class XXXCodeController { @Autowired private XXXservice XXXservice; //这里的xxxservice如果是服务端实现的程序,我们可以直接调用 }
http://cloud.51cto.com/art/201505/477946_all.htm
相关推荐
公京检第1512992号 智能球型摄像机 DS-2DE52XYZW-ABC_VWS GB2818.pdf
标题"基于ABC和IF-ABC算法优化蛋白质结构附matlab代码.zip"揭示了这个压缩包文件的主要内容,它涉及到两种优化算法——ABC(Artificial Bee Colony,人工蜂群算法)和IF-ABC(Improved ABC,改进型ABC算法),并且...
在数据库的世界里,"DataBase--Abc.rar_ABC" 提供了一套实现数据库基本操作的工具或教程,旨在帮助用户建立高效、稳定的数据库应用。数据库是信息管理的核心,它能够存储、管理和检索数据,使得数据处理变得更为便捷...
【基于风险以可靠性为中心的检修作业指导书RCM-ABC】是一种先进的设备管理和检修策略,旨在确保设备的安全、质量和效率。RCM-ABC的核心理念是将风险管理和可靠性工程相结合,通过对设备的分类(A、B、C三类)以及...
欧姆龙F3W-ABC区域传感器是一款在工业自动化领域广泛应用的传感器产品。这款传感器主要用于检测和感知物体的存在,尤其适用于区域监控和安全防护。它采用先进的技术,提供精确、可靠的检测性能,确保生产线的高效...
《Anybus Communicator-7153-ABC Config Tool 3.04:全面解析与应用指南》 在工业自动化领域,通信工具扮演着至关重要的角色。本文将深入探讨“Anybus Communicator-7153-ABC Config Tool 3.04”,这是一款专为配置...
本文详细探讨了自动化仓库区域规划与物流量分析,并提出了基于EIQ-ABC的规划方法。这种方法通过EIQ分析法对订单数据进行分析,并结合ABC分类法确定仓库类型,进而对自动化立体仓库以及输送线进行详细布置规划。文章...
标题中的"WRITE-abc.rar_ABC"可能是一个压缩文件的名称,其中"WRITE"可能是某个程序或算法的简称,"abc"可能是一个用户或项目的标识符,而".rar"表明这是一个RAR格式的压缩文件,RAR是一种常见的文件压缩格式,用于...
UGNX8.5视频教程--ABC-UG论坛
"手机常识--ABC基本"这一主题涵盖了手机的日常使用、保养以及可能出现的问题解决方法。 一、手机的基本操作 1. 开关机:正确地开关机有助于手机系统的稳定运行。长按电源键可开机或关机,部分手机有专门的开关机...
17. APPPT–ABC成果報告與檢討:APPPT-ABC可能是应用滲透測試監管 ABC(PT-ABC)的特定案例或项目。 18. Next: PT-AABC:这部分可能提到的是PT-ABC架构的下一个发展阶段或变体。 19. 結語與建議:可能包含演讲者对...
K-ABC 对特殊学龄前儿童的预测有效性学校心理学第 32 卷。.luly 1995 年 K-ABC 对特殊学龄前儿童的预测有效性 JANIS M. WILLIAMS 和 SYLVIA VOELKER 加拿大安大略省温莎温莎大学 PHILIP W . RICCIARDI The Child...
1-abc.net File Encrypter v6.00 (Activated) Full Setup
行业教育软件-abc360上课平台 2.0.3.zip
PasswordBox (ICBC-ABC) 是一款专为工商银行网银(工行)及农业银行(农行)网银用户提供的口令卡管理工具。 功能特点: 1、使用户免于携带口令卡的麻烦,即方便口令卡密码查询,又加强了口令卡密码的安全性。 2...
(K-ABC) 对学习障碍儿童的评估 学校心理学第 25 卷,1988 年 10 月 考夫曼儿童评估电池 (K-ABC) 对学习障碍儿童的评估 MAYA RETHAZI 和 ANNE KEETON威尔逊安大略教育研究所 考夫曼儿童评估小组 (K-ABC) 的作者断言,...
库存管理--ABC分类法 库存管理是企业在日常运营中面临的一个重要问题,ABC分类法是库存管理中的一种常用方法。ABC分类法的基本思想是将库存商品按品种和占用资金的多少分为特别重要的库存(A类)、一般重要的库存...
1.Python实现CEEMDAN-ABC-VMD-DBO-CNN-LSTM时间序列预测(完整源码和数据) anaconda + pycharm + python +Tensorflow 注意事项:保姆级注释,几乎一行一注释,方便小白入门学习! 2.代码特点:参数化编程、参数可...
《ZUP_v135-ALL-ABC.rar:探索蝴蝶指标与ZUP_v135在外汇交易中的应用》 在金融市场的交易分析中,技术指标扮演着至关重要的角色,帮助交易者理解市场动态,预测价格走势。"ZUP_v135-ALL-ABC.rar" 是一个包含了ZUP_...