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. 关于JDK1.8 HashMap扩容部分源码分析

    今天回顾hashmap源码的时候发现一个很有意思的地方,那就是jdk1.8在hashmap扩容上面的优化. 首先大家可能都知道,1.8比1.7多出了一个红黑树化的操作,当然在扩容的时候也要对红黑树进行 ...

  2. 缓存技术内部交流_01_Ehcache3简介

    参考资料: http://www.ehcache.org/documentation/3.2/getting-started.html http://www.ehcache.org/documenta ...

  3. android传感器使用

    android传感器的使用以加速度传感器.方向传感器.磁场.压力.温度.光感.特别的距离传感器为例介绍. 首先所在的类需要implement SensorEventListener.使用传感器分为以下 ...

  4. js关闭浏览器窗口及检查浏览器关闭事件

    js关闭浏览器窗口,不弹出提示框.支持ie6+,火狐,谷歌等浏览器,下面以一个示例为大家详细介绍下具体的实现方法,感兴趣的朋友可以参考下   js关闭浏览器窗口 js关闭浏览器窗口,不弹出提示框.支持 ...

  5. CSS3 content属性学习

    css3中出现了 ":before",":after"伪类, 你可以这样写: h1:after{ content:'h1后插入的文本'; ... } 这两个选择 ...

  6. python+mitmproxy抓包过滤+redis消息订阅+websocket实时消息发送,日志实时输出到web界面

    本实例实现需求 在游戏SDK测试中,经常需要测试游戏中SDK的埋点日志是否接入正确.本实例通过抓包(客户端http/https 请求)来判定埋点日志是是否接入正确. 实现细节:使用django项目,后 ...

  7. Oracle DBLink连接数过多的问题(Ora-02020)

    前不久开发人员编译存储时报ORA -02020 错,如下是解决方案步骤.   报错全信息: Error:OR A -04052在查: 找远程对象 NIP.PB_PERADDRESSLIST@DB_NI ...

  8. YCSB benchmark测试cassandra性能——和web服务器测试性能结果类似

    转自:http://www.itdadao.com/articles/c15a531189p0.html http://www.cnblogs.com/bettersky/p/6158172.html ...

  9. Elasticsearch压缩索引——lucene倒排索引本质是列存储+使用嵌套文档可以大幅度提高压缩率

    注意:由于是重复数据,词法不具有通用性!文章价值不大! 摘自:https://segmentfault.com/a/1190000002695169 Doc Values 会压缩存储重复的内容. 给定 ...

  10. day5-shelve模块

    一.概述 前面章节我们讲述了json和pickle模块的序列化和反序列化处理,他们有一个不足是在python 3中不能多次dump和load,shelve模块则可以规避这个问题.shelve模块是一个 ...