`
sunbin
  • 浏览: 341861 次
  • 性别: Icon_minigender_1
  • 来自: 深圳
社区版块
存档分类
最新评论

Eurka-ABC

 
阅读更多

 因为工作需要,写了这个东东。我自己也才了解不久,有可能有错误的地方,请大家给以指正。

     要介绍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

 

 

 

 

 

 

分享到:
评论
1 楼 jewelknife 2016-03-16  
hi, 你好, 请问你们是上了spring-cloud相关服务了么

相关推荐

Global site tag (gtag.js) - Google Analytics