文档章节

Spring Cloud 学习笔记

xiaoye08050141
 xiaoye08050141
发布于 2017/05/24 17:12
字数 876
阅读 305
收藏 7
点赞 0
评论 0

工程搭建

1、http://start.spring.io/ 

   

下载工程

2、import 工程

修改pom文件    

<?xml version="1.0" encoding="UTF-8"?>
<project xmlns="http://maven.apache.org/POM/4.0.0" xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"
	xsi:schemaLocation="http://maven.apache.org/POM/4.0.0 http://maven.apache.org/xsd/maven-4.0.0.xsd">
	<modelVersion>4.0.0</modelVersion>

	<groupId>org.xiaoye.clearworld</groupId>
	<artifactId>clearworld-eureka</artifactId>
	<version>0.0.1-SNAPSHOT</version>
	<packaging>pom</packaging>

	<name>clearworld-eureka</name>
	<description>Demo project for Spring Boot</description>

	<parent>
		<groupId>org.springframework.boot</groupId>
		<artifactId>spring-boot-starter-parent</artifactId>
		<version>1.5.3.RELEASE</version>
		<relativePath/> <!-- lookup parent from repository -->
	</parent>

	<properties>
		<project.build.sourceEncoding>UTF-8</project.build.sourceEncoding>
		<project.reporting.outputEncoding>UTF-8</project.reporting.outputEncoding>
		<java.version>1.8</java.version>
		<spring-cloud.version>Dalston.RELEASE</spring-cloud.version>
	</properties>

	<dependencies>
		<dependency>
			<groupId>org.springframework.cloud</groupId>
			<artifactId>spring-cloud-starter-eureka-server</artifactId>
		</dependency>
		<dependency>
			<groupId>org.springframework.boot</groupId>
			<artifactId>spring-boot-starter-web</artifactId>
		</dependency>

		<dependency>
			<groupId>org.springframework.boot</groupId>
			<artifactId>spring-boot-starter-test</artifactId>
			<scope>test</scope>
		</dependency>
	</dependencies>

	<dependencyManagement>
		<dependencies>
			<dependency>
				<groupId>org.springframework.cloud</groupId>
				<artifactId>spring-cloud-dependencies</artifactId>
				<version>${spring-cloud.version}</version>
				<type>pom</type>
				<scope>import</scope>
			</dependency>
		</dependencies>
	</dependencyManagement>

	<build>
		<plugins>
			<plugin>
				<groupId>org.springframework.boot</groupId>
				<artifactId>spring-boot-maven-plugin</artifactId>
			</plugin>
		</plugins>
	</build>
</project>

3、服务注册中心:新建maven模块【clearworld-eureka-register】

修改pom文件

<?xml version="1.0"?>
<project
	xsi:schemaLocation="http://maven.apache.org/POM/4.0.0 http://maven.apache.org/xsd/maven-4.0.0.xsd"
	xmlns="http://maven.apache.org/POM/4.0.0" xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance">
	<modelVersion>4.0.0</modelVersion>
	
	<parent>
		<groupId>org.xiaoye.clearworld</groupId>
		<artifactId>clearworld-eureka</artifactId>
		<version>0.0.1-SNAPSHOT</version>
	</parent>
	
	<artifactId>clearworld-eureka-register</artifactId>
	<name>clearworld-eureka-register</name>
	<url>http://maven.apache.org</url>

	<properties>
		<project.build.sourceEncoding>UTF-8</project.build.sourceEncoding>
	</properties>

	<dependencies></dependencies>
</project>

增加配置application.properties

## 端口号
server.port = 8000
## session 超时时间
server.sessionTimeout = 30

eureka.instance.hostname = localhost
eureka.client.registerWithEureka = false
eureka.client.fetchRegistry = false
eureka.client.serviceUrl.defaultZone = http://${eureka.instance.hostname}:${server.port}/eureka/

创建启动类

@EnableEurekaServer
@SpringBootApplication
public class AppStarter {
    
    public static void main(String[] args) {
        SpringApplication.run(AppStarter.class, args);
    }
}

4、服务提供方:新建maven模块【clearworld-eureka-server】

修改pom文件

<?xml version="1.0"?>
<project
	xsi:schemaLocation="http://maven.apache.org/POM/4.0.0 http://maven.apache.org/xsd/maven-4.0.0.xsd"
	xmlns="http://maven.apache.org/POM/4.0.0" xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance">
	<modelVersion>4.0.0</modelVersion>

	<parent>
		<groupId>org.xiaoye.clearworld</groupId>
		<artifactId>clearworld-eureka</artifactId>
		<version>0.0.1-SNAPSHOT</version>
	</parent>

	<artifactId>clearworld-eureka-server</artifactId>
	<name>clearworld-eureka-server</name>
	<url>http://maven.apache.org</url>

	<properties>
		<project.build.sourceEncoding>UTF-8</project.build.sourceEncoding>
	</properties>
	
	<dependencies></dependencies>
</project>

增加配置application.properties

## 系统名称
application.system-name = eureka-server
## 端口号
server.port = 8001
## session 超时时间
server.sessionTimeout = 30

spring.application.name = ${application.system-name}
eureka.client.serviceUrl.defaultZone=http://localhost:8000/eureka/

增加启动类:

@EnableEurekaClient
@SpringBootApplication
public class AppStarter {
    
    public static void main(String[] args) {
        SpringApplication.run(AppStarter.class, args);
    }
}

增加Controller

@RestController
public class TestController {

    @RequestMapping("hello")
    public String hello(@RequestParam String name) {
        return "你好," + name;
    }
}

5、服务消费方:新建maven模块【clearworld-eureka-client】

修改pom文件

<?xml version="1.0"?>
<project
	xsi:schemaLocation="http://maven.apache.org/POM/4.0.0 http://maven.apache.org/xsd/maven-4.0.0.xsd"
	xmlns="http://maven.apache.org/POM/4.0.0" xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance">
	<modelVersion>4.0.0</modelVersion>
	
	<parent>
		<groupId>org.xiaoye.clearworld</groupId>
		<artifactId>clearworld-eureka</artifactId>
		<version>0.0.1-SNAPSHOT</version>
	</parent>
	
	<artifactId>clearworld-eureka-ribbon</artifactId>
	<name>clearworld-eureka-ribbon</name>
	<url>http://maven.apache.org</url>
	
	<properties>
		<project.build.sourceEncoding>UTF-8</project.build.sourceEncoding>
	</properties>
	
	<dependencies>
		<dependency>
			<groupId>org.springframework.cloud</groupId>
			<artifactId>spring-cloud-starter-ribbon</artifactId>
		</dependency>
	</dependencies>
</project>

增加配置application.properties

## 系统名称
application.system-name = eureka-client
## 端口号
server.port = 8004
## session 超时时间
server.sessionTimeout = 30

spring.application.name = ${application.system-name}
eureka.client.serviceUrl.defaultZone=http://localhost:8000/eureka/

增加启动类

@EnableDiscoveryClient
@SpringBootApplication
public class AppStarter {
    
    public static void main(String[] args) {
        SpringApplication.run(AppStarter.class, args);
    }
    
    @Bean
    @LoadBalanced
    RestTemplate restTemplate() {
        return new RestTemplate();
    }
}

增加Controller

// Controller 控制器
@RestController
public class TestController {

    @Autowired
    private TestService service;
    
    @RequestMapping("execute")
    public String execute() {
        String message = service.execute();
        return message;
    }
}

// 服务接口类
public interface TestService {

    public String execute();

}

// 服务接口实现类
@Service
public class TestServiceImpl implements TestService {
    
    @Autowired
    RestTemplate template;

    @Override
    public String execute() {
        return template.getForObject("http://EUREKA-SERVER/hello?name='叶生'", String.class);
    }
}

6、测试

启动说明:

    a、启动服务注册中心,端口号:8000

    b、启动服务提供方,端口号:8001

    c、启动服务提供方,端口号:8002

    d、启动服务消费方,端口号:8004

访问:http://localhost:8000/  打开服务中心

访问:http://localhost:8004/execute

返回:你好,'叶生'

 

结束。

 

异常解析:

1、服务提供方只启动一次(这里只启动端口:8001的服务)

访问:http://localhost:8004/execute

服务消费方后台异常:java.lang.IllegalStateException: No instances available for EUREKA-SERVER

解决:

1、解决方案一:再启动一个服务提供方

2、解决方案二:

    a、取消服务消费方启动类中的“@LoadBalanced”注解(此为负载均衡注解,个人认为需要多个服务,具体待了解)

    b、修改请求服务提供方的地址为:

return template.getForObject("http://localhost:8001/hello?name='叶生'", String.class);

 

© 著作权归作者所有

共有 人打赏支持
xiaoye08050141
粉丝 0
博文 29
码字总数 17546
作品 0
深圳
后端工程师
Spring Boot和Spring Cloud学习资源推荐

比较好的学习资源,分享一下。 1、Spring Boot官方文档:http://projects.spring.io/spring-boot/ 2、Spring Cloud官方文档:http://projects.spring.io/spring-cloud/ Spring Boot学习地址 ...

懂得-奉献
2017/10/20
0
1
spring-cloud项目学习与实践记录之——服务注册与发现

先简单介绍一下spring cloud简介: 本系列文章的背景:本系列文章是基于本人之前的一个完整的综合站点管理系统,采用新的spring cloud系统进行微服务化的一个演变过程。原系统是一个模块化的...

cavion
07/14
0
0
Spring Cloud Gateway 整合Eureka路由转发

前面我们对Spring Cloud Gateway进行了一个入门的学习,具体文章可以查看《Spring Cloud Gateway 网关尝鲜》进行学习。 网关负责转发工作,那么它需要知道后端的服务信息,今天我们来学习下S...

尹吉欢
07/13
0
0
学习Java和Spring Boot Cloud ,不妨看看这个

专注于编程、互联网动态。最终将总结的技术、心得、经验(数据结构与算法、源码分析等)分享给大家,这里不只限于技术!还有职场心得、生活感悟、以及面经。 1 java版web项目 java版web项目,...

b644rofp20z37485o35m
05/04
0
0
python 安装配置 及 虚拟环境 for windows

python 安装配置 for windows 分布式实战(干货) spring cloud 实战(干货) mybatis 实战(干货) spring boot 实战(干货) React 入门实战(干货) 构建中小型互联网企业架构(干货) py...

qq_27384769
04/19
0
0
SpringCloud 微服务 (十三) 服务网关 Zuul 路由

壹 本篇延续上篇Zuul基础学习,做一个实践测试 在之前学习的篇章中,一直积累学习,所以这边已经存在注册中心,product服务,order服务,config配置中心等等服务,每次写demo,注册中心和配置中心都是...

___大侠
07/09
0
0
Spring Cloud构建微服务架构服务注册与发现

Spring Cloud简介 Spring Cloud是一个基于Spring Boot实现的云应用开发工具,它为基于JVM的云应用开发中涉及的配置管理、服务发现、断路器、智能路由、微代理、控制总线、全局锁、决策竞选、...

明理萝
06/11
0
0
手把手教学系列——疯狂Spring Cloud教学视频

大家好,我是《疯狂Spring Cloud微服务架构实战》一书的作者杨恩雄,该书的配套教学视频已经录制完成,目的是为了让更多的朋友能轻松地学习Spring Cloud。本书与配套视频,适合Spring Cloud的...

杨大仙的程序空间
2017/10/18
0
24
Spring Cloud云服务架构 - common-service 项目过程构建

我们将对common-service整个项目进行剖析,将整个构建的流程给记录下来,让更多的关注者来参考学习。 首先在构建spring cloud的common-service之前,我们需要准备的技术: Maven(项目构建)...

itcloud
昨天
0
0
Spring Cloud--Honghu Cloud分布式微服务云系统—组件化

Spring Cloud集成项目有很多,下面我们列举一下和Spring Cloud相关的优秀项目,我们的企业架构中用到了很多的优秀项目,说白了,也是站在巨人的肩膀上去整合的。在学习Spring Cloud之前大家必...

itcloud
04/26
0
0

没有更多内容

加载失败,请刷新页面

加载更多

下一页

告警系统主脚本、告警系统配置文件、告警系统监控项目

告警系统主脚本 为方便需要,所有的shell脚本放到 /usr/local/sbin/ 目录下 切换到 /usr/local/sbin/ 目录下,创建告警系统脚本 #!/bin/bash#Written by aming.# 是否发送邮件的开关(1表...

Zhouliang6
7分钟前
1
0
不要再问我跨域的问题了

原文链接:web.jobbole.com 【RTC实时互联网大会 限时免费 马上报名】www.bagevent.com 写下这篇文章后我想,要不以后就把这种基础的常见知识都归到这个“不要再问我XX的问题”,形成一系列内...

阿K1225
9分钟前
0
0
Tomcat配置虚拟路径

<?xml version="1.0" encoding="UTF-8"?> <Context docBase="/data/dispute_https/headPortrait/" path="/headPortrait" reloadable="true"/> <!-- 该文件名为headPortrait.xml,放在${tomca......

Helios51
11分钟前
0
0
开源PaaS Rainbond 3.6.1 Released

本次3.6.1版本更新,重点修复了3.6.0版本部分情况下会出现的BUG,同时改进了内部市场、参数验证、历史消息等功能,详细更新记录如下—— 3.6.1 功能改进 云帮初次使用跳转至注册页面 消息添加...

好雨云帮
11分钟前
0
0
Unsupported major.minor version 52.0

执行代码的jdk版本 低于 编译的jdk版本 其中52.0 对应的就是 jdk1.8版本。

@林文龙
11分钟前
0
0
聊聊spring cloud的AbstractLoadBalancingClient

序 本文主要研究一下spring cloud的AbstractLoadBalancingClient AbstractLoadBalancingClient spring-cloud-netflix-ribbon-2.0.0.RELEASE-sources.jar!/org/springframework/cloud/netfli......

go4it
12分钟前
0
0
博客改版通知

先上博客地址 --> http://metaphors.name 最近将博客从 Jekyll 迁到了 Hexo,所以简书、开源中国、博客园、CSDN文章中的的部分图片丢了,原文链接也不可用了,不过没关系,原文链接都会转到博...

Metaphors
13分钟前
0
0
vue基础知识练习

一、Hello World <div id="itany">{{msg}} <!-- 两对大括号{{}}称为模板,用来进行数据的绑定显示在页面中 --> </div><script src="js/vue.js"></script><script>var vm=new Vue({......

一个yuanbeth
16分钟前
0
0
spring @Transactional注解参数详解

原文:事物注解方式: @Transactional 当标于类前时, 标示类中所有方法都进行事物处理 , 例子: 1 @Transactional public class TestServiceBean implements TestService {} 当类中某些方法不需...

binhu
19分钟前
0
0
CORS 跨域实践

本文首发于个人微信公众号《andyqian》,期待你的关注~ 前言 系统通常都是由单体应用逐渐演化而来,演化成为前后端分离的分布式应用。在享受分布式系统带来的诸多好处之时,随之而来的也有不...

andyqian
26分钟前
7
0

没有更多内容

加载失败,请刷新页面

加载更多

下一页

返回顶部
顶部