Spring Cloud官方文档中文版-服务发现:Eureka服务端
官方文档地址为:http://cloud.spring.io/spring-cloud-static/Dalston.SR3/#spring-cloud-eureka-server
文中例子我做了一些测试在:http://git.oschina.net/dreamingodd/spring-cloud-preparation
Service Discovery: Eureka Server 服务发现:Eureka服务端
How to Include Eureka Server 如何创建Eureka服务端
To include Eureka Server in your project use the starter with group org.springframework.cloud and artifact id spring-cloud-starter-eureka-server. See the Spring Cloud Project page for details on setting up your build system with the current Spring Cloud Release Train.
使用Eureka服务需要引入org.springframework.cloud的spring-cloud-starter-eureka-server项目。可以参考http://projects.spring.io/spring-cloud/来创建你的第一个Eureka服务。
How to Run a Eureka Server 如何运行Eureka服务端
@SpringBootApplication
@EnableEurekaServer
public class Application {
public static void main(String[] args) {
new SpringApplicationBuilder(Application.class).web(true).run(args);
}
}
The server has a home page with a UI, and HTTP API endpoints per the normal Eureka functionality under /eureka/*.
Eureka服务端有一个默认的UI主页,每个Eureka服务端你都有一个HTTP API节点在/eureka/*
Eureka background reading: see flux capacitor and google group discussion.
想了解更多Eureka背景知识,推荐阅读 https://github.com/cfregly/fluxcapacitor/wiki/NetflixOSS-FAQ#eureka-service-discovery-load-balancerhttps://groups.google.com/forum/?fromgroups#!topic/eureka_netflix/g3p2r7gHnN0
TIP Due to Gradle’s dependency resolution rules and the lack of a parent bom feature, simply depending on spring-cloud-starter-eureka-server can cause failures on application startup. To remedy this the Spring Boot Gradle plugin must be added and the Spring cloud starter parent bom must be imported like so:
gradle引入:
build.gradle
buildscript {
dependencies {
classpath("org.springframework.boot:spring-boot-gradle-plugin:1.3.5.RELEASE")
}
}
apply plugin: "spring-boot"
dependencyManagement {
imports {
mavenBom "org.springframework.cloud:spring-cloud-dependencies:Brixton.RELEASE"
}
}
High Availability, Zones and Regions 高可用,地区和地域
The Eureka server does not have a backend store, but the service instances in the registry all have to send heartbeats to keep their registrations up to date (so this can be done in memory). Clients also have an in-memory cache of eureka registrations (so they don’t have to go to the registry for every single request to a service).
Eureka服务器并不在后端存储,但注册机中的服务实例都必须用心跳信息维持他们的最新的注册状态(也就是说可以在内存完成)。客户端同样也有一份注册信息缓存存在内存里。
By default every Eureka server is also a Eureka client and requires (at least one) service URL to locate a peer. If you don’t provide it the service will run and work, but it will shower your logs with a lot of noise about not being able to register with the peer. 默认情况下,每一个Eureka服务器也时一个Eureka客户端,同样需要(至少一个)service URL来定位节点。虽然即使开发人员不提供仍然能跑,但是会大量打出无法注册的垃圾log。
See also below for details of Ribbon support on the client side for Zones and Regions.
Standalone Mode 单机模式
The combination of the two caches (client and server) and the heartbeats make a standalone Eureka server fairly resilient to failure, as long as there is some sort of monitor or elastic runtime keeping it alive (e.g. Cloud Foundry). In standalone mode, you might prefer to switch off the client side behaviour, so it doesn’t keep trying and failing to reach its peers. Example:
只要存在某种监控或弹性运行时间来使服务存活(如Cloud Foundry),两个缓存和心跳协议的组合就能让单机的Eureka服务器对故障保有相当的弹性。单机模式下,开发人员可能更喜欢关闭服务器的客户端行为,这样服务端就不必一直尝试失败地访问节点。
application.yml (Standalone Eureka Server)
server:
port: 8761
eureka:
instance:
hostname: localhost
client:
registerWithEureka: false
fetchRegistry: false
serviceUrl:
defaultZone: http://${eureka.instance.hostname}:${server.port}/eureka/
Notice that the serviceUrl is pointing to the same host as the local instance.
注意serviceUrl跟本地实例是一样的。
Peer Awareness 节点感知(高可用)
Eureka can be made even more resilient and available by running multiple instances and asking them to register with each other. In fact, this is the default behaviour, so all you need to do to make it work is add a valid serviceUrl to a peer, e.g.
Eureka服务器通过跑多个实例并要求注册彼此,可以变得更具弹性。实际上,这是Eureka的默认使用方式,那么你需要给节点加入有效的serviceUrl使其正常工作。例如:
application.yml (Two Peer Aware Eureka Servers)
---
spring:
profiles: peer1
eureka:
instance:
hostname: peer1
client:
serviceUrl:
defaultZone: http://peer2/eureka/
---
spring:
profiles: peer2
eureka:
instance:
hostname: peer2
client:
serviceUrl:
defaultZone: http://peer1/eureka/
In this example we have a YAML file that can be used to run the same server on 2 hosts (peer1 and peer2), by running it in different Spring profiles. You could use this configuration to test the peer awareness on a single host (there’s not much value in doing that in production) by manipulating /etc/hosts to resolve the host names. In fact, the eureka.instance.hostname is not needed if you are running on a machine that knows its own hostname (it is looked up using java.net.InetAddress by default).
通过运行不同的Spring profile,本例中的YAML配置文件是在不同主机上的同一服务器(节点1和节点2)。开发人员通过操纵/etc/hosts伪造127.0.0.1的主机名,可以在同一主机上测试(这样做生产环境上没有价值)。实际上,eureka.instance.hostname这个配置项在生产环境没有用(PC会查询java.net.InetAddres获取到)。
You can add multiple peers to a system, and as long as they are all connected to each other by at least one edge, they will synchronize the registrations amongst themselves. If the peers are physically separated (inside a data centre or between multiple data centres) then the system can in principle survive split-brain type failures.
只要节点之间互相连接,开发人员可以为系统添加多个节点,它们之间会同步注册信息。如果节点是物理分离的(在一个或多个数据中心),那么系统原则上可以无视split-brain型故障而运行。
Prefer IP Address 使用IP
In some cases, it is preferable for Eureka to advertise the IP Adresses of services rather than the hostname. Set eureka.instance.preferIpAddress to true and when the application registers with eureka, it will use its IP Address rather than its hostname.
某些情况下,使用IP比hostname好。eureka.instance.preferIpAddress=true可以做到这一点。
dreamingodd原创文章,如转载请注明出处。
Spring Cloud官方文档中文版-服务发现:Eureka服务端的更多相关文章
- Spring Cloud官方文档中文版-服务发现:Eureka客户端
官方文档地址为:http://cloud.spring.io/spring-cloud-static/Dalston.SR2/#_spring_cloud_netflix 文中例子我做了一些测试在:h ...
- Spring Cloud官方文档中文版-Spring Cloud Config(上)-服务端(配置中心)
官方文档地址为:http://cloud.spring.io/spring-cloud-static/Dalston.SR2/#spring-cloud-feign 文中例子我做了一些测试在:http ...
- Spring Cloud官方文档中文版-客户端负载均衡:Ribbon
官方文档地址为:http://cloud.spring.io/spring-cloud-static/Dalston.SR2/#_spring_cloud_netflix 文中例子我做了一些测试在:h ...
- Spring Cloud官方文档中文版-Spring Cloud Config(上)
官方文档地址为:http://cloud.spring.io/spring-cloud-static/Dalston.SR2/#spring-cloud-feign 文中例子我做了一些测试在:http ...
- Spring Cloud官方文档中文版-Spring Cloud Config(下)-客户端等
官方文档地址为:http://cloud.spring.io/spring-cloud-static/Dalston.SR2/#_serving_alternative_formats 文中例子我做了 ...
- Spring Cloud官方文档中文版-声明式Rest客户端:Feign
官方文档地址为:http://cloud.spring.io/spring-cloud-static/Dalston.SR2/#spring-cloud-feign 文中例子我做了一些测试在:http ...
- spring cloud官方文档提到的服务开发的12项要素。
I. Codebase 从一个代码库部署到多个环境. II. Dependencies 使用显式的声明隔离依赖,即模块单独运行,并可以显式管理依赖. III. Config 在系统外部存储配置信息. ...
- Spring 4 官方文档学习(十二)View技术
关键词:view technology.template.template engine.markup.内容较多,按需查用即可. 介绍 Thymeleaf Groovy Markup Template ...
- Spring 4 官方文档学习(十一)Web MVC 框架之配置Spring MVC
内容列表: 启用MVC Java config 或 MVC XML namespace 修改已提供的配置 类型转换和格式化 校验 拦截器 内容协商 View Controllers View Reso ...
随机推荐
- 暑假集训D10总结
刷题 今天上了一天的树,然后就下不来了,(根本就没上去吧) 打了道256行的SpalySplay,然后在COGS上过了道4星半的[NOI2005]维护数列,然后--我发现!@#在内网上竟然E了(喵喵喵 ...
- 双向循环链表(C语言描述)(四)
下面以一个电子英汉词典程序(以下简称电子词典)为例,应用双向循环链表.分离数据结构,可以使逻辑代码独立于数据结构操作代码,程序结构更清晰,代码更简洁:电子词典的增.删.查.改操作分别对应于链表的插入. ...
- 解决 apache poi 转换 word(docx) 文件到 html 文件表格没边框的问题
一.起因 这几天在做电子签章问题,要通过替换docx文件中的占位符生成包含业务数据的合同数据,再转换成html文件,转换成pdf文件.遇到的问题是:通过apache poi转换docx到html时,原 ...
- hdu--1045--Fire Net,NYOJ--587--dfs--blockhouses
/* Name: NYOJ--587--blockhouses Author: shen_渊 Date: 16/04/17 21:43 Description: dfs,逐个点深度优先搜索,不管能不能 ...
- 9. Palindrome Number 回文 my second leetcode 20170807
Determine whether an integer is a palindrome. Do this without extra space. click to show spoilers. S ...
- promise处理多个相互依赖的异步请求
在项目中,经常会遇到多个相互依赖的异步请求.如有a,b,c三个ajax请求,b需要依赖a返回的数据,c又需要a和b请求返回的数据.如果采用请求嵌套请求的方式自然是不可取的.导致代码难以维护,如何请求很 ...
- Maven干货
好处: 1. 依赖管理:对jar包统一管理 2. 项目构建: 项目编码完成后,对项目进行编译.测试.打包.部署.之前项目构建通过eclipse工具实现.今天学习新的工具也可以实现这些过程.比如:通过m ...
- 使用 ESXi 虚拟化 Ryzen 1700
最近开发的一个项目,需要多台机器支持,PC + 各种虚拟机,整得很乱,一怒之下,购买一台Ryzen 1700 + 32GB机器自行搭建服务器.经历两天时间,不停的踩坑,终于完成: Ryzen 1700 ...
- Oracle impdp通过network_link不落地方式导入数据
--Oracle impdp通过network_link不落地方式导入数据 -----------------------------------------------------2014/01/1 ...
- ReactiveCocoa源码解读(二)
上一篇解读了ReactiveCocoa的三个重要的类的底层实现,本篇继续. 一.RACMulticastConnection 1.应用 RACMulticastConnection: 用于当一个信号被 ...