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. Android仿IOS底部弹出选择菜单ActionSheet

    使用Dialog的实现方式,解决原ActionSheet使用Fragment实现而出现的部分手机取消按钮被遮盖的问题 java部分代码: import android.app.Dialog; impo ...

  2. SQL命令查询Oracle存储过程信息(代码内容等)

    SELECT * FROM ALL_SOURCE  where TYPE='PROCEDURE'  AND TEXT LIKE '%0997500%'; --查询ALL_SOURCE中,(脚本代码)内 ...

  3. viewport简介

    Viewport的用处:手机拥有了浏览器的初期,人们并没有专门为移动设备设计页面,造成的直接结果就是,访问的页面是直接将电脑页面进行缩放,操作起来有诸多不便,viewport就是用来解决这个问题的 1 ...

  4. 5.6 WebDriver API实例讲解(41-50)

    41.操作Web页面的滚动条 (1)滑动页面的滚动条到页面的最下面. (2)滑动页面的滚动条到页面的某个元素. (3)滑动页面的滚动条向下移动某个数量的像素. package apiSample; i ...

  5. python 爬虫001-http请求过程

    HTTP 请求流程 一次完整的HTTP请求过程从TCP三次握手建立连接成功后开始,客户端按照指定的格式开始向服务端发送HTTP请求,服务端接收请求后,解析HTTP请求,处理完业务逻辑,最后返回一个HT ...

  6. LeetCode OJ:Evaluate Reverse Polish Notation(逆波兰表示法的计算器)

    Evaluate the value of an arithmetic expression in Reverse Polish Notation. Valid operators are +, -, ...

  7. 条款30:透彻了解inline的里里外外。

    inline可以带来各种好处: 首先其可以使得消除函数调用带来的开销,再者编译器对这种非函数的代码可以做出更多的优化策略.   但是inline函数首先肯定是会导致程序代码的大小更加的庞大,这样会带来 ...

  8. Linux各文件及目录说明2018-03-01更新

    本人wechat:YWNlODAyMzU5MTEzMTQ=. *** /etc /etc/sysconfig/network-scripts/ifcfg-eth0 /etc/sysconfig/clo ...

  9. Web目录结构

    /: Web应用的跟目录,该目录下所有文件在客户端都可以访问(JSP,HTML) /WEB-INF: 存放应用使用的各种资源.该目录及其子目录对客户端都是不可以访问的, 其中包括web.xml(部署表 ...

  10. HAWQ取代传统数仓实践(十七)——事实表技术之累积度量

    累积度量指的是聚合从序列内第一个元素到当前元素的数据,例如统计从每年的一月到当前月份的累积销售额.本篇说明如何在销售订单示例中实现累积月销售数量和金额,并对数据仓库模式.初始装载.定期装载做相应地修改 ...