微服务框架——SpringCloud
1.SpringCloud微服务框架
a.概念:SpringCloud是基于SpringBoot的微服务框架
b.五大神兽:Eureka(服务发现)、Ribbon(客服端负载均衡)、Hystrix(断路器)、Zuul(服务网关)、Spring Cloud Config(分布式配置)
2.Eureka服务发现
a.组成:Eureka服务器和Eureka客户端
b.Eureka服务器(注册中心)
①新建springboot项目,依赖选择Eureka Server
②pom文件关键依赖
<parent>
<groupId>org.springframework.boot</groupId>
<artifactId>spring-boot-starter-parent</artifactId>
<version>2.1.3.RELEASE</version>
<relativePath/> <!-- lookup parent from repository -->
</parent> <dependencies>
<dependency>
<groupId>org.springframework.cloud</groupId>
<artifactId>spring-cloud-starter-netflix-eureka-server</artifactId>
</dependency> ...... </dependencies> ......
③application.yml文件
# 服务名称
spring:
application:
name: eureka-server
# 服务端口号
server:
port: 8081 #Eureka 相关配置
eureka:
instance:
hostname: localhost
client:
service-url:
defaultZone: http://localhost:${server.port}/eureka/
# 是否从其他的服务中心同步服务列表
fetch-registry: false
# 是否把自己作为服务注册到其他服务注册中心
register-with-eureka: false
④启动类添加注解@EnableEurekaServer
@SpringBootApplication
@EnableEurekaServer
public class EurekaServerApplication { public static void main(String[] args) {
SpringApplication.run(EurekaServerApplication.class, args);
} }
⑤启动后访问 localhost:8081 可进入管理员界面
c.Eureka客户端(生产者)
①新建springboot项目,依赖选择 Eureka Discovery 、Web
②pom文件关键依赖
<parent>
<groupId>org.springframework.boot</groupId>
<artifactId>spring-boot-starter-parent</artifactId>
<version>2.1.3.RELEASE</version>
<relativePath/> <!-- lookup parent from repository -->
</parent> <dependencies>
<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> ...... </dependencies> ......
③application.yml文件
spring:
application:
name: eureka-client-producer
server:
port: 8082 eureka:
client:
service-url:
defaultZone: http://localhost:8081/eureka/
④启动类添加注解@EnableEurekaClient
@SpringBootApplication
@EnableEurekaClient
public class EurekaClientProducerApplication { public static void main(String[] args) {
SpringApplication.run(EurekaClientProducerApplication.class, args);
} }
⑤创建controller供外部调用
@RestController
public class CommonController { @Value("${server.port}")
String port; @Value("${spring.application.name}")
String name; @RequestMapping(value = "/printProducer")
public String printProducer(String param){
return "[" + name + "]请求参数:" + param + ",服务端口:" + port;
}
}
3.Ribbon负载均衡
a.Eureka客户端(消费者) + Ribbon负载均衡
①新建springboot项目,依赖选择 Eureka Discovery 、Web 以及 Ribbon
②pom文件关键依赖
<parent>
<groupId>org.springframework.boot</groupId>
<artifactId>spring-boot-starter-parent</artifactId>
<version>2.1.3.RELEASE</version>
<relativePath/> <!-- lookup parent from repository -->
</parent> <dependencies>
<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-ribbon</artifactId>
</dependency> ...... </dependencies> ......
③application.yml文件
spring:
application:
name: eureka-client-consumer
server:
port: 8085 eureka:
client:
service-url:
defaultZone: http://localhost:8081/eureka/
④启动类添加注解@EnableDiscoveryClient并且加入restTemplate
@SpringBootApplication
@EnableEurekaClient
public class EurekaClientConsumerApplication { public static void main(String[] args) {
SpringApplication.run(EurekaClientConsumerApplication.class, args);
} @Bean
@LoadBalanced
RestTemplate restTemplate()
{
return new RestTemplate();
} }
⑤使用restTemplate调用服务
@RestController
public class CommonController { @Resource
RestTemplate restTemplate; @RequestMapping(value = "/print")
public String print(String param){
String result = restTemplate.getForObject("http://EUREKA-CLIENT-PRODUCER/printProducer?param=" + param, String.class);
return result;
} }
4.Hystrix断路器
a.消费者增加Hystrix依赖,pom中添加
<dependency>
<groupId>org.springframework.cloud</groupId>
<artifactId>spring-cloud-starter-netflix-hystrix</artifactId>
</dependency>
b.启动类添加注解@EnableHystrix
@SpringBootApplication
@EnableEurekaClient
@EnableHystrix
public class EurekaClientConsumerApplication { ...... }
c.具体使用
@RestController
public class CommonController { @Resource
RestTemplate restTemplate; /* 断路器配置,当无法调用如下方法时,就会调用自定的errorCallback方法。 */
@HystrixCommand(fallbackMethod = "errorCallback")
@RequestMapping(value = "/print")
public String print(String param){
String result = restTemplate.getForObject("http://EUREKA-CLIENT-PRODUCER/printProducer?param=" + param, String.class);
return result;
} public String errorCallback(String param){
return "连接消费服务失败,请求参数:" + param;
} }
微服务框架——SpringCloud的更多相关文章
- 微服务框架SpringCloud(Dalston版)学习 (一):Eureka服务注册与发现
eureka-server eureka服务端,提供服务的注册与发现,类似于zookeeper 新建spring-boot工程,pom依赖: <dependency> <groupI ...
- 微服务框架SpringCloud与Dubbo
#v1.0.0# 1.背景 Dubbo,是阿里巴巴服务化治理的核心框架,并被广泛应用于阿里巴巴集团的各成员站点.阿里巴巴近几年对开源社区的贡献不论在国内还是国外都是引人注目的,比如:JStorm捐赠给 ...
- 微服务框架——SpringCloud(三)
1.Zuul服务网关 作用:路由转发和过滤,将请求转发到微服务或拦截请求.Zuul默认集成了负载均衡功能. 2.Zuul实现路由 a.新建springboot项目,依赖选择 Eureka Discov ...
- 微服务框架——SpringCloud(二)
1.Feign声明式服务调用(负载均衡+熔断器) a.概念:Feign是一个声明式的Web Service客户端,它的目的就是让Web Service调用更加简单.Feign整合了Ribbon和Hys ...
- 微服务框架——SpringCloud(四)
1.Spring Cloud Config 分布式配置 a.Config服务器 ①新建springboot项目,依赖选择Config Server ②pom文件关键依赖 <parent> ...
- java框架之SpringCloud(1)-微服务及SpringCloud介绍
微服务概述 是什么 业界大牛 Martin Fowler 这样描述微服务: 参考[微服务(Microservices)-微服务原作者Martin Flower博客翻译]. 下面是关于上述博客中的部分重 ...
- 基于Spring-Cloud的微服务框架设计
基于Spring-Cloud的微服务框架设计 先进行大的整体的框架整理,然后在针对每一项进行具体的详细介绍
- 微服务框架Dubbo与Springcloud的区别
微服务框架Dubbo与Springcloud的区别 微服务主要的优势如下: 1.降低复杂度 将原来偶合在一起的复杂业务拆分为单个服务,规避了原本复杂度无止境的积累.每一个微服务专注于单一功能,并通过定 ...
- springcolud 的学习(二).SpringCloud微服务框架
为什么选择SpringCloud因为SpringCloud出现,对微服务技术提供了非常大的帮助,因为SpringCloud 提供了一套完整的微服务解决方案,不像其他框架只是解决了微服务中某个问题. 服 ...
随机推荐
- 003 win7如何配置adb环境变量
1.首先右击计算机——属性——高级系统设置——环境变量: 2.弹出”环境变量“对话框,单击”新建“一个环境变量. 3.在新建系统变量里,配置变量名:Android 变量值:D:\Users\Admin ...
- 《11招玩转网络安全》之第三招:Web暴力破解-Low级别
Docker中启动LocalDVWA容器,准备DVWA环境.在浏览器地址栏输入http://127.0.0.1,中打开DVWA靶机.自动跳转到了http://127.0.0.1/login.php登录 ...
- docker学习------registry可视化的实现
1.Harbor的发现 之前一直在使用registry,但docker pull下来的基础镜像并没用携带UI界面,所以查找了一波开源工具,发现了Harbor这一工具,下面对工具进行一个学习. 2.部 ...
- 3D Slicer中文教程(五)—三维视图颜色改变
3D Slicer在分割后三维重建的图像,效果很好,但是存在一定的不足,默认的颜色并不是很合适,这时手动设置三维视图下的需要的颜色就很有必要了.如下图所示,默认的三维重建后的颜色. 这样的颜色显然不是 ...
- Unity AssetBundle的生成、加载和热更新
当前使用的是unity2018.2.6版本. 生成AssetBundle 这个版本生成AssetBundle有两种方式,一种是在资源的Inspector面板下边配置AssetBundle名称,然后调用 ...
- codeforces 343D 树剖后odt维护
子树修改+路径修改+单点查询 树链剖分+区间维护即可 由于只有单点查询,我直接用了odt,复杂度还行 #include<bits/stdc++.h> #define endl '\n' # ...
- gym 102059A 树链剖分后odt维护区间
题意 一棵树 多次修改,每次修改一个点到根的所有边的颜色,并询问现在有哪些颜色染了恰好$m$条边 题解: 稍加思考可以知道,从某个点到根节点的颜色数,均摊复杂度很低,因此,可以考虑珂朵莉树维护重链剖分 ...
- GitLab实战操作指南
一.Git原理 1.Git是什么? Git是目前世界上最先进的分布式版本控制系统(没有之一). 2.Git有什么特点? 简单来说就是:高端大气上档次! 3.GIt与SVN区别 SVN管理: 属于集中式 ...
- Uni-app中Class绑定与Style绑定
为了节约性能,我们将Class与Style的表达式通过compiler硬编码到uni-app中 支持语法和转换效果如下: Class支持语法: <view :class="{ acti ...
- Eclipse:An error has occurred. See error log for more details. java.lang.NullPointerException
问题描述 在使用 Eclipse Clean 项目时报错:An error has occurred. See error log for more details. java.lang.Null ...