spring cloud study

本次学习基于spring cloud Greenwich SR1 版本

学习要点:

Spring Boot/Spring Cloud应用开发套路

  • 加依赖
  • 加注解
  • 写配置

Eureka (服务注册与发现)

Eureka是Netflix开源的服务发现组件,本身是一个基于REST的服务,包含Server和Client两部分,Spring Cloud将它集成在子项目Spring Cloud Netflix中

Eureka Server (快速入门)

遵循开发套路

  • 添加依赖
<dependencies>
<dependency>
<groupId>org.springframework.cloud</groupId>
<artifactId>spring-cloud-starter-netflix-eureka-server</artifactId>
</dependency>
</dependencies>
  • 添加注解 @EnableEurekaServer
@SpringBootApplication
@EnableEurekaServer
public class EurekaApplication { public static void main(String[] args) {
SpringApplication.run(EurekaApplication.class, args);
}
}
server:
port: 8001 spring:
application:
name: microservice-discovery-eureka eureka:
client:
service-url:
#erueka server的地址,记住/eureka不要掉了
defaultZone: http://localhost:8001/eureka
# 是否从eureka server注册,这里我们选择false
fetch-registry: false
# 是否从eureka server 中拉取服务
register-with-eureka: false

启动项目,访问http://localhost:8001/

Eureka Client

<dependency>
<groupId>org.springframework.cloud</groupId>
<artifactId>spring-cloud-starter-netflix-eureka-client</artifactId>
</dependency>
@SpringBootApplication
@EnableDiscoveryClient
public class ProvideApplication { public static void main(String[] args) {
SpringApplication.run(ProvideApplication.class, args);
}
}

在Greenwich SR1版本中可以省略@EnableEurekaClient和@EnableDiscoveryClient注解,但为了养成好习惯,建议加上相应注解

@EnableDiscoveryClient: 可以配合不同的服务发现server 使用
@EnableEurekaClient: 只能配合 Eureka server 使用
server:
port: 9001
spring:
application:
name: microservice-provide-user
datasource:
driverClassName: com.mysql.jdbc.Driver
url: jdbc:mysql://localhost:3306/cloud-study?useUnicode=true&characterEncoding=UTF-8&autoReconnect=true&useSSL=false&allowMultiQueries=true
username: root
password: root
jpa:
hibernate:
ddl-auto: update
show-sql: true eureka:
client:
service-url:
defaultZone: http://localhost:8001/eureka/
instance:
# 是否显示ip,如果不设置那么就会显示主机名,默认false
prefer-ip-address: true

启动项目,可以发现项目已经被注册进eureka

完整代码:

microservice-discovery-eureka

microservice-provide-user

eureka 深入

Eureka包含两个组件:Eureka Server 和 Eureka Client:

  • Eureka Server负责提供服务发现的能力,各个微服务启动时,会向Eureka Server注册自己的信息(例如IP、端口、微服务名称等)
  • Eureka Client是一个Java客户端,可以与EurekaServer交互
  • client启动后,会周期性的像server发送心跳,默认情况下 30s,如果server在一定时间内没有收到client的心跳,那么server会注销实例90s
  • Eureka Server遵循CAP原则,符合AP。eureka集群中每个节点之间都是平等状态。如果一个节点宕机,不会进行选举。因此可以很有效的保证可用性

搭建erueka集群

在host中添加

127.0.0.1 peer1 peer2

可以再microservice-discovery-eureka 的基础上修改application.yml

spring:
application:
name: microservice-discovery-eureka-cluster
eureka:
client:
serviceUrl:
defaultZone: http://peer2:8002/eureka/,http://peer1:8003/eureka/
---
spring:
profiles: peer1
server:
port: 8002
eureka:
instance:
hostname: peer1
---
spring:
profiles: peer2
server:
port: 8003
eureka:
instance:
hostname: peer2

修改microservice-provide-userapplication.yml

server:
port: 9002
spring:
application:
name: microservice-provide-user
datasource:
driverClassName: com.mysql.jdbc.Driver
url: jdbc:mysql://localhost:3306/cloud-study?useUnicode=true&characterEncoding=UTF-8&autoReconnect=true&useSSL=false&allowMultiQueries=true
username: root
password: root
jpa:
show-sql: true
eureka:
client:
service-url:
defaultZone: http://peer1:8002/eureka/,http://peer2:8003/eureka/
instance:
prefer-ip-address: true

启动服务

spring cloud(Greenwich SR)- Eureka的更多相关文章

  1. spring cloud(学习笔记)高可用注册中心(Eureka)的实现(二)

    绪论 前几天我用一种方式实现了spring cloud的高可用,达到两个注册中心,详情见spring cloud(学习笔记)高可用注册中心(Eureka)的实现(一),今天我意外发现,注册中心可以无限 ...

  2. Spring Cloud(十二):分布式链路跟踪 Sleuth 与 Zipkin【Finchley 版】

    Spring Cloud(十二):分布式链路跟踪 Sleuth 与 Zipkin[Finchley 版]  发表于 2018-04-24 |  随着业务发展,系统拆分导致系统调用链路愈发复杂一个前端请 ...

  3. 跟我学Spring Cloud(Finchley版)-20-Spring Cloud Config-Git仓库配置详解 原

    在跟我学Spring Cloud(Finchley版)-19-配置中心-Spring Cloud Config 一节中,已实现使用Git仓库作为Config Server的后端存储,本节详细探讨如何配 ...

  4. spring cloud(学习笔记)高可用注册中心(Eureka)的实现(一)

    最近在学习的时候,发现微服务架构中,假如只有一个注册中心,那这个注册中心挂了可怎么办,这样的系统,既不安全,稳定性也不好,网上和书上找了一会,发现这个spring cloud早就想到了,并帮我们解决了 ...

  5. Spring Cloud(十四)Config 配置中心与客户端的使用与详细

    前言 在上一篇 文章 中我们直接用了本应在本文中配置的Config Server,对Config也有了一个基本的认识,即 Spring Cloud Config 是一种用来动态获取Git.SVN.本地 ...

  6. spring cloud(学习笔记)微服务启动错误(1)

    今天下午在启动spring cloud微服务的时候,报了这个错误: Error starting ApplicationContext. To display the auto-configurati ...

  7. Spring Cloud (十五)Stream 入门、主要概念与自定义消息发送与接收

    前言 不写随笔的日子仿佛就是什么都没有产出一般--上节说到要学Spring Cloud Bus,这里发现按照官方文档的顺序反而会更好些,因为不必去后边的章节去为当前章节去打基础,所以我们先学习Spri ...

  8. Spring Cloud(十二)声名式服务调用:Feign 的使用(下)

    前言 本文是对上一篇博文的扩充,很多平时用不到的特性就开始简略一写,Spring Cloud各版本之间的差距很大的,用不到的可能下一个版本就被kill掉了.由于笔者写本文开始的时候误解了Feign的继 ...

  9. spring cloud(学习笔记) Enreka服务治理

    服务治理是微服务架构最为核心和基础的模块,主要用来实现各个微服务实例的自动化注册和发现. 记录一下服务注册中心的搭建以及高可用注册中心的实现 1.首先创建两个基础 的spring boot工程,spr ...

随机推荐

  1. execl开发 新接触

    https//www.baidu.com/home/news/data/newspage?nid=3186684148848912913&n_type=0&p_from=1&d ...

  2. sql server编写archive通用模板脚本实现自动分批删除数据

    博主做过比较多项目的archive脚本编写,对于这种删除数据的脚本开发,肯定是一开始的话用最简单的一个delete语句,然后由于部分表数据量比较大啊,索引比较多啊,会发现删除数据很慢而且影响系统的正常 ...

  3. 站内搜索(ELK)之数据表字典类型字段的索引思路

    数据表字典类型的字段,如人员表中的“性别”.流程表中的“处理状态”,此类字段中的值高度重复,不建议放到可检索的索引字段中,原因如下: 若数据表字典类型字段的值索引到单独的索引字段中,因字典数据字符数一 ...

  4. Hadoop点滴-HDFS命令行接口

    1.-help[cmd] 显示命令的帮助信息 ./hdfs dfs -help ls1 2.-ls(r) 显示当前目录下的所有文件 -R层层循出文件夹 ./hdfs dfs -ls /log/map ...

  5. 阿里云服务器CentOS6.9安装Mysql

    上篇讲了CentOS6.9安装tomcat,这篇来讲mysql的安装 1.查看CentOS是否安装了MySQL yum list installed | grep mysql //查看CentOS是否 ...

  6. Linux 常用解压和压缩命令

    .tar 解包 tar xvf filename.tar.tar 打包 tar cvf filename.tar dirname.gz 解压1 gunzip filename.gz.gz 解压2 gz ...

  7. Angular7 HttpClient处理多个请求

    1. MergeMap - 串联请求 后一个请求需要前一个请求的返回结果时,需要使用串联请求. 可以使用MergeMap实现, 优势是减少嵌套,优化代码: 代码如下: import {HttpClie ...

  8. 触电JavaScript-如何将json 二维数组转换为 JSON object

    最近因为项目中使用的是 ActiveReports .Net 产品,因为他们最近新出了  ActiveReports JS 版本,所以内心有点痒痒,想试试这个纯前端版本报表控件到底如何,毕竟我们项目有 ...

  9. springcloud -- sleuth+zipkin整合rabbitMQ详解

    为什么使用RabbitMQ? 我们已经知道,zipkin的原理是服务之间的调用关系会通过HTTP方式上报到zipkin-server端,然后我们再通过zipkin-ui去调用查看追踪服务之间的调用链路 ...

  10. Django2.0入门:第一章、Django是啥

    Django介绍 缘起 随着Python语言的兴起,越来越多的程序员开始转向这门语言的学习.在我们学习完Python基础之后,就可以选择利用Python这门语言进行Web应用开发.而众多Python ...