Spring Cloud为服务治理做了一层抽象接口,所以在Spring Cloud应用中可以支持多种不同的服务治理框架,如Netflix Eureka、Consul和Zookeeper。在Spring Cloud服务治理抽象层的作用下,可以无缝地切换服务治理实现,并且不影响任何其他的服务注册、服务发现、服务调用等逻辑。

Spring Cloud Eureka是Spring Cloud Netflix项目下的服务治理模块。而Spring Cloud Netflix项目是Spring Cloud的子项目之一,主要内容是对Netflix公司一系列开源产品的包装,它为Spring Boot应用提供了自配置的Netflix OSS整合。通过一些简单的注解,开发者就可以快速的在应用中配置一下常用模块并构建庞大的分布式系统。它主要提供的模块包括:服务发现(Eureka),断路器(Hystrix),智能路由(Zuul),客户端负载均衡(Ribbon)等。

一  下面通过一个简单的例子来尝试下Spring Cloud Eureka ,步骤如下:

1.创建Spring Boot项目,命名eureka,pom文件中还需要添加:

<dependency>
<groupId>org.springframework.cloud</groupId>
<artifactId>spring-cloud-starter-eureka-server</artifactId>
</dependency>

---

2.新建Application主类:

@EnableEurekaServer
@SpringBootApplication
public class Application
{
public static void main( String[] args )
{
SpringApplication.run(Application.class, args);
}

---通过@EnableEurekaServer激活服务注册中心

3.添加配置文件application.properties文件:

spring.application.name=eureka
server.port=8001
eureka.instance.hostname=localhost
eureka.client.register-with-eureka=false
eureka.client.fetch-registry=false

---默认设置下,注册中心会将自己作为客户端来注册自己,通过以上红色配置可关闭该行为。

4.启动服务,然后使用浏览器访问http://localhost:8001/  ,可查看服务监控页面,此时注册实例为空。

二  接下来创建两个服务提供者,并注册在Eureka上。

1.新建Spring Boot项目,命名client1, 增加pom依赖

<dependency>
<groupId>org.springframework.cloud</groupId>
<artifactId>spring-cloud-starter-eureka</artifactId>
</dependency>

---

2.添加主类

@EnableDiscoveryClient
@SpringBootApplication
public class App
{
public static void main( String[] args )
{
SpringApplication.run(App.class, args);
}
}

---通过@EnableDiscoveryClient激活DiscoveryClient,使Eureka可以发现该服务。

3.添加配置文件application.properties文件

spring.application.name=client
server.port=8071
eureka.client.serviceUrl.defaultZone=http://localhost:8001/eureka/

---eureka.client.serviceUrl.defaultZone属性为服务注册中心的配置,指定服务注册中心的地址

4.添加类InfoController.java

@RestControllerpublic class TestController {
@RequestMapping("/info")
public String msg() {
return "client1 servcie";
}
}

---

5.再创建一个一模一样的服务,命名client2,修改端口为8072,启动这两个服务,再访问http://localhost:8001/ ,可见

说明两个服务都已注册成功

三   创建一个服务调用者

1.新建Spring Boot项目,命名consumer,添加pom依赖

<dependency>
<groupId>org.springframework.cloud</groupId>
<artifactId>spring-cloud-starter-eureka</artifactId>
</dependency> <dependency>
<groupId>org.springframework.boot</groupId>
<artifactId>spring-boot-starter-actuator</artifactId>
</dependency>

---

2.新建主类

@EnableDiscoveryClient
@SpringBootApplication
public class App
{
@Bean
public RestTemplate restTemplate() {
return new RestTemplate();
} public static void main( String[] args )
{
SpringApplication.run(App.class, args);
}
}

--- 同样注册在Eureka上

3.添加配置文件

spring.application.name=consumer
server.port=8081
eureka.client.serviceUrl.defaultZone=http://localhost:8001/eureka/

--- 指定注册地址

4.添加TestController

@RestController
public class TestController { @Autowired
LoadBalancerClient loadBalancerClient; @Autowired
RestTemplate restTemplate; @GetMapping("/test")
public String test() { ServiceInstance serviceInstance = loadBalancerClient.choose("client");
String url = "http://" + serviceInstance.getHost() + ":" + serviceInstance.getPort() + "/info";
return restTemplate.getForObject(url, String.class);
} }

--- LoadBalancerClient 可支持负载均衡的client节点选择

5.启动服务,查看Eureka界面

使用浏览器访问 http://localhost:8081/test, 可看到显示client2 service,说明服务调用成功。

有时候重启服务报错说端口占用,则需强杀进程

lsof -i tcp:8081  然后 kill pid

参考 http://projects.spring.io/spring-cloud/spring-cloud.html

end

Spring Cloud Eureka 注册,发布,调用服务的更多相关文章

  1. Spring Cloud Eureka 注册安全一定要做到位!

    /eureka/ 参考配置如下: defaultZone: http://javastack:javastack@eureka1:8761/eureka/, http://javastack:java ...

  2. IDEA 创建Spring cloud Eureka 注册中心

    IDEA 创建Spring cloud Eureka 注册中心 一. 首先创建一个maven project Next之后填好groupId与artifactId,Next之后填好项目名与路径,点击F ...

  3. Spring Cloud Eureka注册中心(快速搭建)

    Spring Cloud 详解Eureka注册中心@(微服务)[java|spring-cloud|eureka] Eureka 注册中心是入门Spring Cloud微服务架构的必学组件,是学习所有 ...

  4. Spring Cloud Eureka 注册中心集群搭建,Greenwich 最新版!

    Spring Cloud 的注册中心可以由 Eureka.Consul.Zookeeper.ETCD 等来实现,这里推荐使用 Spring Cloud Eureka 来实现注册中心,它基于 Netfl ...

  5. Spring Cloud Eureka 分布式开发之服务注册中心、负载均衡、声明式服务调用实现

    介绍 本示例主要介绍 Spring Cloud 系列中的 Eureka,使你能快速上手负载均衡.声明式服务.服务注册中心等 Eureka Server Eureka 是 Netflix 的子模块,它是 ...

  6. Spring Cloud Eureka源码分析---服务注册

    本篇我们着重分析Eureka服务端的逻辑实现,主要涉及到服务的注册流程分析. 在Eureka的服务治理中,会涉及到下面一些概念: 服务注册:Eureka Client会通过发送REST请求的方式向Eu ...

  7. Spring Cloud Eureka 注册中心 服务消费者 服务提供者之间的关系以及高可用之间的联系

    注册中心:提供服务的注册与查询(发现) 服务提供者:服务的提供方,提供服务的一方. 服务消费者:服务的消费方,使用服务的一方. 我们没有注册中心,服务提供者与服务消费者同样可以调用,通过spring中 ...

  8. spring cloud配置注册中心显示服务的ip地址和端口

    1.在springcloud中服务的 Instance ID 默认值是: ${spring.cloud.client.hostname}:${spring.application.name}:${sp ...

  9. Spring Cloud 获取注册中心所有服务以及服务下的所有实例

    注册中心现有服务与实例数: 在任意客户端填写如下代码: /** * import org.springframework.cloud.client.ServiceInstance; * import ...

随机推荐

  1. scala mapPartitionsWithIndex函数的使用

    var rdd1=sc.makeRDD(Array((1,"A"),(2,"B"),(3,"C"),(4,"D")),2 ...

  2. 一些C语言里面的编程

    C语言的知识还是不要忘的好: 1.求最大公约数的函数: #include <stdio.h> #define min(a,b) (a)>(b)?(b):(a) int gcd(int ...

  3. JQuery中选择元素的方法:

    document.getElementById('div1');document.getElementsByTagName('div');getByClass(document,'box'); $(' ...

  4. ssh整合学习(1)

    Hibernate框架 1 hibernate核心配置文件 (0)orm思想 -对象关系映射 (1)数据库信息 (2)hibernate信息 (3)映射配置 (4)hibernate核心配置文件 -如 ...

  5. python学习笔记(excel中处理日期格式)

    涉及到处理excel文件中日期格式数据 这里自己整理下 两种方法 代码如下: @classmethod def get_time(cls, table, nrows): testtime = [] f ...

  6. 51nod 1270 dp

    http://www.51nod.com/onlineJudge/questionCode.html#!problemId=1270 简单的线性dp,最近狂刷水题真的是...药丸 差值最大得话要么是峰 ...

  7. mongodb底层存储和索引原理——本质是文档数据库,无表设计,同时wiredTiger存储引擎支持文档级别的锁,MMAPv1引擎基于mmap,二级索引(二级是文档的存储位置信息『文件id + 文件内offset 』)

    MongoDB是面向文档的数据库管理系统DBMS(显然mongodb不是oracle那样的RDBMS,而仅仅是DBMS). 想想一下MySQL中没有任何关系型数据库的表,而由JSON类型的对象组成数据 ...

  8. 旧板与IO板之间的连接

    COM3(底板)——COM3(IO板) COM4(底板)——COM2(IO板) 如果需要改东西就是执行下列命令 最后进行拍照测试和IO测试

  9. LeetCode OJ:First Bad Version(首个坏版本)

    You are a product manager and currently leading a team to develop a new product. Unfortunately, the ...

  10. SpringCloud教程 | 第十二篇: 断路器监控(Hystrix Dashboard)

    版权声明:本文为博主原创文章,欢迎转载,转载请注明作者.原文超链接 ,博主地址:http://blog.csdn.net/forezp. http://blog.csdn.net/forezp/art ...