Spring Cloud(2):搭建Eureka
Eureka Server的搭建:
使用IDEA工具
File->New Project->Spring Initializr->next
Next
Next->Next创建即可
修改启动类:
package org.dreamtech.eureka; import org.springframework.boot.SpringApplication;
import org.springframework.boot.autoconfigure.SpringBootApplication;
import org.springframework.cloud.netflix.eureka.server.EnableEurekaServer; @SpringBootApplication
@EnableEurekaServer
public class EurekaApplication { public static void main(String[] args) {
SpringApplication.run(EurekaApplication.class, args);
} }
进行配置:
server:
port: 8761
eureka:
instance:
hostname: localhost
client:
# 声明自己是服务端
register-with-eureka: false
fetch-registry: false
# 注册中心地址
service-url:
defaultZone: http://${eureka.instance.hostname}:${server.port}/eureka/
启动后访问:http://localhost:8761/进入管控台
由于只有服务端没有客户端,这里显示空
Eureka Client客户端的搭建:
正常的创建一个SpringMVC项目:
Controller:
package org.dreamtech.product.controller; import org.dreamtech.product.service.ProductService;
import org.springframework.beans.factory.annotation.Autowired;
import org.springframework.web.bind.annotation.RequestMapping;
import org.springframework.web.bind.annotation.RequestParam;
import org.springframework.web.bind.annotation.RestController; @RestController
@RequestMapping("/api/product")
public class ProductController { private final ProductService productService; @Autowired
public ProductController(ProductService productService) {
this.productService = productService;
} @RequestMapping("/list")
public Object list(){
return productService.getProductList();
} @RequestMapping("/find")
public Object findById(@RequestParam("id") int id){
return productService.findById(id);
} }
Service:
package org.dreamtech.product.service; import org.dreamtech.product.domain.Product; import java.util.List; public interface ProductService {
List<Product> getProductList();
Product findById(int id);
}
package org.dreamtech.product.service.impl; import org.dreamtech.product.domain.Product;
import org.dreamtech.product.service.ProductService;
import org.springframework.stereotype.Service; import java.util.*; @Service
public class ProductServiceImpl implements ProductService {
// 模拟DAO层操作
private static final Map<Integer, Product> productDao = new HashMap<>(); static {
Product p1 = new Product(1, "iPhone1", 1111, 10);
Product p2 = new Product(2, "iPhone2", 2222, 10);
Product p3 = new Product(3, "iPhone3", 3333, 10);
Product p4 = new Product(4, "iPhone4", 4444, 10);
Product p5 = new Product(5, "iPhone5", 5555, 10);
Product p6 = new Product(6, "iPhone6", 6666, 10);
Product p7 = new Product(6, "iPhone7", 7777, 10);
productDao.put(1, p1);
productDao.put(2, p2);
productDao.put(3, p3);
productDao.put(4, p4);
productDao.put(5, p5);
productDao.put(6, p6);
productDao.put(7, p7);
} @Override
public List<Product> getProductList() {
Collection<Product> temp = productDao.values();
return new ArrayList<>(temp);
} @Override
public Product findById(int id) {
return productDao.get(id);
}
}
商品实体类:
package org.dreamtech.product.domain; import java.io.Serializable; public class Product implements Serializable {
//ID
private int id;
//商品名称
private String name;
//商品价格
private int price;
//商品库存
private int store; public int getId() {
return id;
} public void setId(int id) {
this.id = id;
} public String getName() {
return name;
} public void setName(String name) {
this.name = name;
} public int getPrice() {
return price;
} public void setPrice(int price) {
this.price = price;
} public int getStore() {
return store;
} public void setStore(int store) {
this.store = store;
} public Product(int id, String name, int price, int store) {
this.id = id;
this.name = name;
this.price = price;
this.store = store;
}
}
启动项目,访问:http://localhost:8080/api/product/list
响应如下说明成功:
[{
"id": 1,
"name": "iPhone1",
"price": 1111,
"store": 10
}, {
"id": 2,
"name": "iPhone2",
"price": 2222,
"store": 10
}, {
"id": 3,
"name": "iPhone3",
"price": 3333,
"store": 10
}, {
"id": 4,
"name": "iPhone4",
"price": 4444,
"store": 10
}, {
"id": 5,
"name": "iPhone5",
"price": 5555,
"store": 10
}, {
"id": 6,
"name": "iPhone6",
"price": 6666,
"store": 10
}, {
"id": 6,
"name": "iPhone7",
"price": 7777,
"store": 10
}]
引入Eureka:
server:
port: 8771
# 指定注册中心地址
eureka:
client:
service-url:
defaultZone: http://localhost:8761/eureka/
# 服务的名称
spring:
application:
name: product-service
IDEA模拟启动多个服务:
访问:http://localhost:8761/
如果显示如上图,说明搭建成功
如果出现这些红字:Eureka的自我保护,由于网络原因出现无法调用的情况不会剔除服务
比如某个人被困在荒岛上,不能说这个人死了,可能过一段时间他会获救,如果关闭了自我保护,阎王就说你死了,谁都救不了你
EMERGENCY! EUREKA MAY BE INCORRECTLY CLAIMING INSTANCES ARE UP WHEN THEY'RE NOT. RENEWALS ARE LESSER THAN THRESHOLD AND HENCE THE INSTANCES ARE NOT BEING EXPIRED JUST TO BE SAFE.
关闭自我保护:
server:
enable-self-preservation: false
Spring Cloud(2):搭建Eureka的更多相关文章
- Spring Cloud 如何搭建eureka
Eureka Server 的搭建 eureka 是 Spring Cloud 的注册中心,提供服务注册和服务发现的功能. 利用idea 快速创建一个eureka应用File - NewProject ...
- Spring Cloud环境搭建: Eureka Server
项目目录结构, 总共三个文件 ├── pom.xml └── src ├── main │ ├── java │ │ └── com │ │ └── rockbb │ │ ...
- spring cloud config搭建说明例子(二)-添加eureka
添加注册eureka 服务端 ConfigServer pom.xml <dependency> <groupId>org.springframework.cloud</ ...
- Spring Cloud 入门 之 Eureka 篇(一)
原文地址:Spring Cloud 入门 之 Eureka 篇(一) 博客地址:http://www.extlight.com 一.前言 Spring Cloud 是一系列框架的有序集合.它利用 Sp ...
- SpringCloud实战之初级入门(三)— spring cloud config搭建git配置中心
目录 1.环境介绍 2.配置中心 2.1 创建工程 2.2 修改配置文件 2.3 在github中加入配置文件 2.3 修改启动文件 3. 访问配置中心 1.环境介绍 上一篇文章中,我们介绍了如何利用 ...
- spring cloud config搭建说明例子(四)-补充配置文件
服务端 ConfigServer pom.xml <dependency> <groupId>org.springframework.cloud</groupId> ...
- spring cloud config搭建说明例子(三)-添加actuator
添加心跳 服务端 ConfigServer pom.xml添加actuator包 <dependency> <groupId>org.springframework.cloud ...
- Spring Cloud 系列之 Eureka 实现服务注册与发现
如果你对 Spring Cloud 体系还不是很了解,可以先读一下 Spring Cloud 都有哪些模块 Eureka 是 Netflix 开源的服务注册发现组件,服务发现可以说是微服务架构的核心功 ...
- 基于Spring cloud Ribbon和Eureka实现客户端负载均衡
前言 本案例将基于Spring cloud Ribbon和Eureka实现客户端负载均衡,其中Ribbon用于实现客户端负载均衡,Eureka主要是用于服务注册及发现: 传统的服务端负载均衡 常见的服 ...
- spring cloud config与eureka配合使用
前面两篇介绍了Spring Cloud Config服务端和客户端的简单配置,本篇介绍Spring Cloud Config与Eureka配合使用 前言 默认情况下,配置客户端启动时,都是通过配置属性 ...
随机推荐
- 服务器修改密码cmd
net user 账号 要修改的密码
- win7下在eclipse3.7中使用hadoop1.2.1插件运行MadReduce例子
环境 win7+hadoop_1.2.1+eclipse 3.7+maven 3 1.在win7下下载hadoop_1.2.1 2.安装hadoop的eclipse插件,注意eclipse 4.x版本 ...
- error C2872: “flann”: 不明确的符号 --- PCL 与OpenCV2 的flann命名空间冲突问题的解决方法
error C2872: "flann": 不明确的符号 - PCL 与OpenCV2命名空间冲突问题的解决方法 error C2872: "flann" 如果 ...
- EPEL for CentOS or Redhat
注:地址可能会变 RHEL/CentOS 7 64 Bit # wget http://dl.fedoraproject.org/pub/epel/beta/7/x86_64/epel-release ...
- OpenStack基础知识-virtualenv工具详解
1.virtualenv介绍 virtualenv通过创建一个单独的虚拟化python运行环境,将我们所需的依赖安装进去,不同项目之间相互不干扰,从而解决不同的项目之间依赖不同,造成的冲突问题 2.安 ...
- limit 检索记录行
LIMIT 子句可以被用于强制 SELECT 语句返回指定的记录数.LIMIT 接受一个或两个数字参数.参数必须是一个整数常量.如果给定两个参数,第一个参数指定第一个返回记录行的偏移量,第二个参数指定 ...
- 浅谈UML——九种图(二)
前言 看我UML视频,对UML图有了一定的了解,终于明白了,为什么一幅图代表了千言万语.每一种图都有其特殊的存在,都在软件开发过程中起了至关重要的作用.那么如何阅读?如何绘制?请看下去: 1 行为图 ...
- hdu6070(分数规划/二分+线段树区间更新,区间最值)
题目链接: http://acm.hdu.edu.cn/showproblem.php?pid=6070 题意: 给出一个题目提交序列, 从中选出一个正确率最小的子串. 选中的子串中每个题目当且仅当最 ...
- 白白的(baibaide)——树状数组套主席树+splay
题目 [题目描述] 有一个长度为 $n$ 的序列 $a_1, a_2, \dots, a_n$,一开始每个位置都是白色.如果一个区间中每个位置都是白色,则称这是一个白白的区间.如果一个白白的区间向左或 ...
- Shell操作相关的快捷键 --Linux
一.shell和bash shell --unix --Bourne shell ,bash --linux --Bourne again shell.bash (GNU Bourne-Again S ...