Spring Cloud 学习笔记一
一、spring cloud 搭建注册中心(Eureka server)
1、spring cloud中提供了多种分步式服务组件,其都依赖于注册中心(eureka),注册中心的服务者与发现者都通过Eureka server相互通信,服务者与发现者都是Eureka client,同时注册到Eureka server 中,然后通过服务名相互调用接口,故我们需要首先搭建注册中心(Eureka Server),以下以inlij idea 为例:
a、inlij idea新建项目->选择spring initializer->next->next->选择web web、cloud discovery Eureka server->完成
b、打开项目pom文件,可以看到已自动添加Eureka server服务:
<dependency>
<groupId>org.springframework.boot</groupId>
<artifactId>spring-boot-starter-web</artifactId>
</dependency>
<dependency>
<groupId>org.springframework.cloud</groupId>
<artifactId>spring-cloud-starter-netflix-eureka-server</artifactId>
</dependency>
C、打开application.properties文件,配置注册中心地址,如下:
spring.application.name=euraka-service
server.port=8088
eureka.instance.hostname=localhost
eureka.client.register-with-eureka=false
eureka.client.fetch-registry=false
eureka.client.serviceUrl.defaultZone=http://${eureka.instance.hostname}:${server.port}/eureka/
D、配置运行项目,打开localhost:8088/, 出现发下界面表示成功:
@SpringBootApplication
@EnableEurekaServer
public class EurakaServiceApplication {
public static void main(String[] args) {
SpringApplication.run(EurakaServiceApplication.class, args);
}
}
注:上面已注册了client,第一次运行应只注册了自已
1、搭建Eureka client(服务提供者)
A、inlij idea新建项目->选择spring initializer->next->next->选择web web、cloud discovery Eureka discovery->完成
B、打开项目pom文件,可以看到已自动添加Eureka client服务:
<dependency>
<groupId>org.springframework.boot</groupId>
<artifactId>spring-boot-starter-web</artifactId>
</dependency>
<dependency>
<groupId>org.springframework.cloud</groupId>
<artifactId>spring-cloud-starter-netflix-eureka-client</artifactId>
</dependency>
C、打开application.properties文件,配置注册中心地址,如下:
spring.application.name=euraka-client
server.port=8089
eureka.instance.hostname=localhost //注册中心地址,这里是本地
eureka.client.serviceUrl.defaultZone=http://${eureka.instance.hostname}:8088/eureka/
C、配置运行项目后,可在注册中心务中看到,如下图:
@SpringBootApplication
@EnableEurekaClient
public class EurekaClientApplication {
public static void main(String[] args) {
SpringApplication.run(EurekaClientApplication.class, args);
}
}
1、搭建注册中心(服务发现者)Eureka client,创建项目如2所示,所有都不变,然后运行如下图:
注:现在eureka demo 就可以访问Eureka client 中的接口了,后面我们将使用feign来访问
二、使用feign来现实访问服务者之间的接口
1、feign是spring cloud 中用于服务之间访问最简单的方式,使用起来非常方便,用使接口加注解就可完成服务间调用,当然这里不讲原理,只讲用法
A、inlij idea新建项目->选择spring initializer->next->next->选择web web、Cloud routing feign->完成。
B、打开项目pom文件,可以看到已自动添加feign服务:
<dependency>
<groupId>org.springframework.boot</groupId>
<artifactId>spring-boot-starter-web</artifactId>
</dependency>
<dependency>
<groupId>org.springframework.cloud</groupId>
<artifactId>spring-cloud-starter-netflix-eureka-client</artifactId>
</dependency>
<dependency>
<groupId>org.springframework.cloud</groupId>
<artifactId>spring-cloud-starter-openfeign</artifactId>
</dependency>
C、打开application.properties文件,配置注册中心地址,如下:
spring.application.name=feign-service
server.port=8094
eureka.instance.hostname=localhost
eureka.client.serviceUrl.defaultZone=http://${eureka.instance.hostname}:8088/eureka/
D、配置feign,eureka client
@SpringBootApplication
@EnableEurekaClient
@EnableFeignClients
public class FeignServiceApplication {
public static void main(String[] args) {
SpringApplication.run(FeignServiceApplication.class, args);
}
}
E、添加接口,并使用注解配置访问eureka client 服务,调用getdemoData方法
@FeignClient(value = "euraka-client")
public interface feignInterface {
@RequestMapping("/getdemoData")
public String getEurekaClient();
}
F、编写controller,如下图
@RestController
public class feignContrller {
@Autowired
private feignInterface feignInterfaces;
@GetMapping("/getFeignData")
public String getFeignData(){
return feignInterfaces.getEurekaClient();
}
}
G、运行访问是否成功
三、注册配置中心
1、配置中心是用来统一管理配置,配置文件可以放在git上,也可以放在本地,也可以布署在另一台服务器上,这样我们在更改配置而不影响原有代码,也不必重新打包项目
2、开始搭建配置中心服务项目(config server)
A、inlij idea新建项目->选择spring initializer->next->next->选择web web、cloud cofing config server->完成
A、打开pom文件,查看引用
<dependency>
<groupId>org.springframework.boot</groupId>
<artifactId>spring-boot-starter-web</artifactId>
</dependency>
<dependency>
<groupId>org.springframework.cloud</groupId>
<artifactId>spring-cloud-config-server</artifactId>
</dependency>
<dependency>
<groupId>org.springframework.cloud</groupId>
<artifactId>spring-cloud-starter-netflix-eureka-server</artifactId>
</dependency>
C、打开application.properties文件,配置注册中心地址,如下:
spring.application.name=config-service
server.port=8092
eureka.instance.hostname=localhost
eureka.client.serviceUrl.defaultZone=http://${eureka.instance.hostname}:8088/eureka/
spring.profiles.active = native
spring.cloud.config.server.native.searchLocations=classpath:/resources/config-service/
注:这里首先把项目注册到注册中心,然后开启本地配置中心,配置本地路径
D、编写本地配置文件resources\config-service\config-dev.yml
config:
userName: whc
password: 123456
E、注解配置中心
@SpringBootApplication
@EnableEurekaClient
@EnableConfigServer
public class ConfigServiceApplication {
public static void main(String[] args) {
SpringApplication.run(ConfigServiceApplication.class, args);
}
}
F、运行配置中心,输入如下地址:
http://localhost:8092/config/dev
结果如下,表示成功:
2、注册配置中心客户端(config client)
A、inlij idea新建项目->选择spring initializer->next->next->选择web web、cloud cofing config Client->完成
B、打开pom文件,查看配置引用
<dependency>
<groupId>org.springframework.boot</groupId>
<artifactId>spring-boot-starter-web</artifactId>
</dependency>
<dependency>
<groupId>org.springframework.cloud</groupId>
<artifactId>spring-cloud-starter-config</artifactId>
</dependency>
<dependency>
<groupId>org.springframework.cloud</groupId>
<artifactId>spring-cloud-starter-netflix-eureka-client</artifactId>
</dependency>
A、由于spring cloud会先去读bootstrap.properties文件,不能直接配置applicat
ion.properties文件,我们需要新建bootstrap.properties文件,配置如下:
spring.application.name=config-client
server.port=8093
eureka.instance.hostname=localhost
eureka.client.serviceUrl.defaultZone=http://${eureka.instance.hostname}:8088/eureka/
spring.cloud.config.enabled=true
spring.cloud.config.discovery.enabled=true
spring.cloud.config.discovery.serviceId=config-service
spring.cloud.config.name=config
spring.cloud.config.profile=dev
注:首先配置了注册中心,然后配置了配置中心项目的serviceId,指明了配置文件名name,再指明了配置环境dev,spring cloud 会自动去找config-service服务下的配置文件config-dev.yml文件
B、配置注解,如下:
@SpringBootApplication
@EnableEurekaClient
public class ConfigClientApplication {
public static void main(String[] args) {
SpringApplication.run(ConfigClientApplication.class, args);
}
}
注:发现我们只配置了注册中心
C、编写读取配置文件controller,如下:
@RestController
public class demoController {
@Value("${config.userName}")
private String userName;
@Value("${config.password}")
private String userPwd;
@GetMapping("/getUserNameAndPwd")
public String getUserNameAndPwd(){
return "UserName:"+userName+",password:"+userPwd;
}
}
D、运行结果如下:
四、配置网关(zuul-service)
1、网关是spring cloud中很重要的角色,它可以解决跨域的问题;网关可以把请求映射到多个地址,通过项目名来区分请求,并转发给对应的服务
A、inlij idea新建项目->选择spring initializer->next->next->选择web web、cloud routing Zuul->完成
B、打开pom文件,查看引用
<dependency>
<groupId>org.springframework.boot</groupId>
<artifactId>spring-boot-starter-web</artifactId>
</dependency>
<dependency>
<groupId>org.springframework.cloud</groupId>
<artifactId>spring-cloud-starter-netflix-eureka-client</artifactId>
</dependency>
<dependency>
<groupId>org.springframework.cloud</groupId>
<artifactId>spring-cloud-starter-netflix-zuul</artifactId>
</dependency>
C、打开application.properties文件,配置注册中心地址,如下:
spring.application.name=zuul-service
server.port=8091
eureka.instance.hostname=localhost
eureka.client.serviceUrl.defaultZone=http://${eureka.instance.hostname}:8088/eureka/
zuul.routes.api-a.path=/eureka-client/**
zuul.routes.api-a.serviceId=euraka-client
zuul.routes.api-b.path=/eureka-demo/**
zuul.routes.api-b.serviceId=euraka-demo
注:首先配置注册中心,然后配置zuul 路由项目,就可以完成网关映射
D、注解配置
@SpringBootApplication
@EnableEurekaClient
@EnableZuulProxy
public class ZuulServiceApplication {
public static void main(String[] args) {
SpringApplication.run(ZuulServiceApplication.class, args);
}
}
E、运行查看结果
Spring Cloud 学习笔记一的更多相关文章
- Spring Cloud学习笔记--Spring Boot初次搭建
1. Spring Boot简介 初次接触Spring的时候,我感觉这是一个很难接触的框架,因为其庞杂的配置文件,我最不喜欢的就是xml文件,这种文件的可读性很不好.所以很久以来我的Spring学习都 ...
- Spring Cloud 学习笔记 (一)-- Eureka 服务器
开局一张图,截取了本人学习资料中的一张图,很好地展示了Eureka的架构. Eureka服务器 管理服务的作用.细分为服务注册,服务发现. 所有的客户端在Eureka服务器上注册服务,再从Eureka ...
- Spring Cloud 学习笔记(二)——Netflix
4 Spring Cloud Netflix Spring Cloud 通过自动配置和绑定到Spring环境和其他Spring编程模型惯例,为Spring Boot应用程序提供Netflix OSS集 ...
- Spring Cloud 学习笔记(一)——入门、特征、配置
[TOC] 0 放在前面 0.1 参考文档 http://cloud.spring.io/spring-cloud-static/Brixton.SR7/ https://springcloud.cc ...
- Spring Cloud学习笔记-006
服务容错保护:Spring Cloud Hystrix 在微服务架构中,我们将系统拆分成了很多服务单元,各单元的应用间通过服务注册与订阅的方式互相依赖.由于每个单元都在不同的进程中运行,依赖通过远程调 ...
- Spring Cloud学习笔记-005
服务消费者 之前已经搭建好了微服务中的核心组件——服务注册中心(包括单节点模式和高可用模式).也有了服务提供者,接下来搭建一个服务消费者,它主要完成两个目标,发现服务以及消费服务.其中,服务发现的任务 ...
- Spring Cloud学习笔记-002
搭建Spring Cloud注册中心:Eureka 服务注册:在服务治理框架中,通常都会构建一个注册中心,每个服务单元向注册中心登记自己提供的服务,将主机与端口号.版本号.通信协议等一些附加信息告诉注 ...
- Spring Cloud学习笔记-007
声明式服务调用:Spring Cloud Feign Feign基于Netflix Feign实现,整合了Spring Cloud Ribbon和Spring Cloud Hystrix,除了提供这两 ...
- Spring Cloud学习笔记-008
继承特性 通过上节的示例实践,当使用Spring MVC的注解来绑定服务接口时,几乎完全可以从服务提供方的Controller中依靠复制操作,构建出相应的服务客户端绑定接口.既然存在这么多复制操作,自 ...
- Spring Cloud学习笔记-009
API网关服务:Spring Cloud Zuul API网关是一个更为智能的应用服务器,它的定义类似于面向对象设计模式中的Façade模式,它的存在就像是整个微服务架构系统的门面一样,所有的外部客户 ...
随机推荐
- MySQL——视图/触发器/事务/存储过程/函数/流程控制
一 视图 视图是一个虚拟表(非真实存在),其本质是[根据SQL语句获取动态的数据集,并为其命名],用户使用时只需使用[名称]即可获取结果集,可以将该结果集当做表来使用. 使用视图我们可以把查询过程中的 ...
- 从0开始学自定义View -1
PS:好久没有写博客了,之前的东西有所忘记,百度一下竟然查到了自己的写过的博客,访问量还可以,一开始的写博客的初衷是把自己不会的记录下来,现在没想到也有博友会关注我,这就给了我动力,工作之余把零零碎碎 ...
- 猫狗大战("简单的二维背包")
题面:https://www.luogu.com.cn/problem/P1489 看上去是一道简单的二维费用背包,但是要特别小心循环顺序. Ⅰ先循环物品,再循环限制条件. Ⅱ每一个限制条件都必须从后 ...
- js上传文件过大导致上传失败原因以及解决办法
背景:项目需要用到上传视频功能,由于视频有知识产权,要求必须上传到自己的服务器上不允许用第三方视频网站接口上传,于是一开始开始用的是input type=file去上传,小的视频上传没有问题,上传将近 ...
- 09_CSS入门和高级技巧(7)
浏览器兼容问题 1.现在中国网民用什么浏览器? 中国流量最大的网站就是百度,百度在统计着每一个访问者的浏览器.地域.操作系统.分辨率等等信息. 百度流量研究院:http://tongji.baidu. ...
- leetcode240——搜索二维矩阵(medium)
一.题目描述 编写一个高效的算法来搜索 m x n 矩阵 matrix 中的一个目标值 target.该矩阵具有以下特性: 每行的元素从左到右升序排列. 每列的元素从上到下升序排列. 示例: 现有矩阵 ...
- VA01销售订单批导问题解决
1业务场景 事务代码:VA01创建销售订单,VA02修改销售订单 可以通过BAPI_SALESORDER_CREATEFROMDAT2批量创建 可以通过BAPI_SALESORDER_CHANGE批量 ...
- markdown:列表、表格、代码实现
插入列表 1. dsf2. dsds 插入表格header 1 | header 2---|---row 1 col 1 | row 1 col 2row 2 col 1 | row 2 col 2 ...
- 豹子安全-注入工具-疑问_MySQL_基于联合查询_按钮【获取基本信息】不能成功的解决方法。
豹子安全-注入工具-疑问_MySQL_基于联合查询_按钮[获取基本信息]不能成功的解决方法. 网站: http://www.leosec.net 如下GIF影片所示:
- kali2020解决安装pip的问题
在以前的版本中,我们需要安装pip时,只需要执行下面命令即可安装: apt-get install python-pip 但是在更新到2020.1以后,上面的命令安装会提示无法定位安装包的问题! 解决 ...