认识Eureka (F版)
Spring Cloud为开发者提供了在分布式系统中的一些常用的组件(例如配置管理,服务发现,断路器,智能路由,微代理,控制总线,一次性令牌,全局锁定,决策竞选,分布式会话集群状态)。使用Spring Cloud开发人员可以快速地完成实现这些模式的服务和应用程序。它们在任何分布式环境中都能很好地工作
Eureka
学过 Dubbo 的一定不会陌生 ZooKeeper ,那么学 Spring Cloud 的就不能陌生 Eureka。它是 Netflix 开源的一款基于REST(Representational State Transfer)风格的服务发现框架,目前已被 Spring Cloud 集成在其子项目 spring-cloud-netflix 中,用于 Spring Cloud 的服务注册发现功能。
- 纯正的
Servlet应用,jar/war 包部署 - 使用
Jersey框架实现自身的RESTful HTTP接口 - peer 之间的同步与服务的注册全部通过 HTTP 协议实现
- 利用
JDK Timer实现 心跳检测、定时清理过期服务、节点同步等功能(动态添加删除节点、弹性) - 使用
Google的guava包管理内存缓存 - 目前 2.0 已经停止开源,但在
Finchley版中Spring Cloud所采用的是 1.9.x 版本(持续维护),所以完全不用担心,同时Spring Cloud还提供了Eureka、Consul、ZooKeeper、Etcd等多款服务注册发现功能的框架,完全不用担心会在一棵树上吊死
Eureka 的 Server 与 Client
Eureka Server:提供服务注册与发现,Client节点启动后,会向Eureka Server发送注册事件,Eureka Server注册表中将会存储所有可用服务节点的信息,服务节点的信息可以在界面中直观的看到。基于Jersey框架实现自身的RESTful HTTP接口,只要满足规范任何语言程序都能向其进行注册Eureka Client:任何形式的客户端,只要满足Eureka Server订制的注册标准。
你好 Eureka Server
搭建一个 Eureka Server 是最为容易的,只需要一个依赖即可完成。在 Finchley 版本中 artifactId 与早期的有所差异,所以大家在使用 Spring Cloud 一定要注意自己所使用的版本,如果询问它人相关问题,也应该告知对方你所采用的版本
依赖
1 |
<!-- 此处我只给出了 Eureka Server 需要用到的包依赖, |
配置文件
在 src/main/resources 目录下创建一个 bootstrap.yml 的文件,文中我已经将部分需要注意的配置项罗列出来,并附写好相关说明,更多配置可以参考 EurekaInstanceConfigBean 、 EurekaClientConfigBean 、 EurekaServerConfigBean 。绝大多数情况下对于 Eureka Server 只需了解每个配置的作用及其意义即可,因为错误的配置反而会破坏原有的保护特性
1 |
server: |
主函数
与往常 Spring Boot 启动类类似,不同的是多了一个 @EnableEurekaServer 注解,用来标识当前工程是Eureka Server,到此我们 Server 就算是搭建完成了。
1 |
package com.battcn; import org.springframework.boot.SpringApplication; |
访问 http://localhost:7071/ 能看到如下内容就代表项目搭建成功,图中红色的表示我们关闭了 Eureka 保护模式,在网络波动的情况下 Eureka Server 可能无法及时的保护客户端实例
Eureka Server UI
你好 Eureka Client
搭建一个 Eureka Client 也是相当容易的,只需要两个小小的依赖即可完成。
依赖
1 |
<!-- 此处我只给出了 Eureka Server 需要用到的包依赖, |
配置文件
下面罗列一部分需要注意的配置项,需要注意的都已经写好相关说明,更多配置可以参考 EurekaInstanceConfigBean 、 EurekaClientConfigBean 、 InetUtilsProperties 以下配置适用于大部分情况
1 |
server: |
扩展知识
如果你觉得 Eureka Server UI 中默认显示的 instance-id 让你看着不爽,你可以试着在根目录下创建一个 application.properties 填写如下内容,因为Spring Cloud 和 Spring Boot 启动装载的配置有优先级之分,bootstrap 文件优先于 application 文件之前装载,所以一些配置只在 application 中生效
1 |
# 默认值:XB-201704242009:eureka-client:7072 |
主函数
与往常 Spring Boot 启动类类似,不同的是多了一个 @EnableDiscoveryClient 注解,用来标识当前工程是Discovery Client。因为 Spring Cloud 提供了非常多的服务注册发现的组件,如 euerka、zookeeper、consul、etcd、所以为统一标识客户端身份,所以它用的是 @EnableDiscoveryClient 注解
1 |
package com.battcn; import org.springframework.boot.SpringApplication; |
Eureka Server UI
认识Eureka (F版)的更多相关文章
- 基于Ubuntu12.04-server版的openstack F版搭建步骤
本文为双节点搭建,分为计算(IP1)和控制节点(IP2) 说明: 计算节点组件: 1.mysql 2.keystone 3.Nova 4.glance 5.rabbitmq 控制节点组件: 1.cin ...
- 趣味编程:CPS风格代码(C#,F#版)
CPS风格代码(C#版) using System; namespace fp { class CPS { static int add(int x, int y) => x + y; stat ...
- Feign拦截器应用 (F版)
Spring Cloud 为开发者提供了在分布式系统中的一些常用的组件(例如配置管理,服务发现,断路器,智能路由,微代理,控制总线,一次性令牌,全局锁定,决策竞选,分布式会话集群状态).使用Sprin ...
- 注解式HTTP请求Feign (F版)
Spring Cloud 为开发者提供了在分布式系统中的一些常用的组件(例如配置管理,服务发现,断路器,智能路由,微代理,控制总线,一次性令牌,全局锁定,决策竞选,分布式会话集群状态).使用Sprin ...
- Ribbon软负载 (F版)
Spring Cloud 为开发者提供了在分布式系统中的一些常用的组件(例如配置管理,服务发现,断路器,智能路由,微代理,控制总线,一次性令牌,全局锁定,决策竞选,分布式会话集群状态).使用Sprin ...
- Spring cloud Eureka错误锦集(二)
最近学习spring cloud,在测试Eureka作为服务注册中心的时候碰到了问题,错误提示如下: "D:\Program\Java\JDK1.8\bin\java" -XX:T ...
- 白话SpringCloud | 第二章:服务注册与发现(Eureka)-上
前言 从本章节开始,正式进入SpringCloud的基础教程.从第一章<什么是SpringCloud>中我们可以知道,一个微服务框架覆盖的东西是很多的,而如何去管理这些服务或者说API接口 ...
- SpringCloud学习笔记-Eureka基础
Spring Cloud Eureka是Spring Cloud Netflix微服务套件中的一部分,它基于Netflix Eureka做了二次封装,主要负责完成微服务架构中的微服务治理功能. 服务端 ...
- OpenStack G版以后的Availability Zone与Aggregate Hosts
关于Availability Zone与Aggregate Hosts的概念解析,可以参考这篇文章:http://blog.chinaunix.net/uid-20940095-id-3875022. ...
随机推荐
- Java实现 LeetCode 560 和为K的子数组(某著名排序大法改编)
560. 和为K的子数组 给定一个整数数组和一个整数 k,你需要找到该数组中和为 k 的连续的子数组的个数. 示例 1 : 输入:nums = [1,1,1], k = 2 输出: 2 , [1,1] ...
- Java实现k个数乘(cheng)(自然数的k乘积问题)
k个数乘(cheng) 题目描述 桐桐想把一个自然数N分解成K个大于l的自然数相乘的形式,要求这K个数按从小到大排列,而且除了第K个数之外,前面(K-l)个数是N分解出来的最小自然数.例如:N=24, ...
- Java中输入时IO包与Scanner的区别
最常用的一个IO控制台输入的 import java.io.BufferedReader; import java.io.IOException; import java.io.InputStream ...
- 逐行解读HashMap源码
[本文版权归微信公众号"代码艺术"(ID:onblog)所有,若是转载请务必保留本段原创声明,违者必究.若是文章有不足之处,欢迎关注微信公众号私信与我进行交流!] 一.写在前面 相 ...
- 为.netcore助力--WebApiClient正式发布core版本
1 前言 WebApiClient已成熟稳定,发布了WebApiClient.JIT和WebApiClient.AOT两个nuget包,累计近10w次下载.我对它的高可扩展性设计相当满意和自豪,但We ...
- Netty源码学习系列之4-ServerBootstrap的bind方法
前言 今天研究ServerBootstrap的bind方法,该方法可以说是netty的重中之重.核心中的核心.前两节的NioEventLoopGroup和ServerBootstrap的初始化就是为b ...
- java关键字final用法详解
final关键字在java中也是属于比较常用的一种,因此也算得上是一个比较重要的关键字,有必要对它进行深入的学习. 一.定义:用来说明最终属性,表明一个类不能派生出子类,或者成员方法不能被覆盖,或者成 ...
- LeetCode 75,90%的人想不出最佳解的简单题
本文始发于个人公众号:TechFlow,原创不易,求个关注 今天是LeetCode专题的44篇文章,我们一起来看下LeetCode的75题,颜色排序 Sort Colors. 这题的官方难度是Medi ...
- 如何优雅的用js动态的添加html代码?
把想要的结构写在HTML里,用一个display:none的标签来包裹. 一般而言,会使用: 不设置为type="text/javascript"的script标签 textare ...
- @atcoder - AGC002E@ Candy Piles
目录 @description@ @solution@ @accepted code@ @details@ @description@ 给定 N 堆糖果,第 i 堆包含 ai 个糖果. 现在两人进行博 ...