基于 Spring Cloud 的微服务架构实践指南(下)
show me the code and talk to me,做的出来更要说的明白
本文源码,请点击learnSpringCloud
我是布尔bl,你的支持是我分享的动力!
一、引入
上回 基于 Spring Cloud 的微服务架构实践指南(上) 介绍了 Spring Cloud 的常见组件,我们接着继续进入 Spring Cloud 的实战教程,撸起袖子,真枪实弹干一场。在实战演练中感受一下 Spring Cloud 的魅力所在。在教程中,我会继续将 Spring Cloud 常见组件进行整合。整个过程就像搭积木一样,一点一点地完成一个微服务工程的搭建。实战演练是比较繁琐的,但是只要我们真正地去做了,就会收获很多。

二、hystrix 组件( 服务熔断 )
hystrix 组件主要作用是服务熔断以及服务降级。可以在我们犯错的时候,再给我们一次机会。他就像家里的短路开关,对程序起到保护作用。另一方面其实觉得和 java的异常机制相似。当项目发生未知异常, hystrix 组件就会挺身而出,作为项目的贴身保镖,为项目保驾护航。当然,你认我的代码没有bug,那么你可以把他放在一边。另外hystrix 组件提供了一个监控功能,但是没有图形化,我们可以使用相关依赖引入图像化界面。
2.1 pom 文件
我们引入 hystrix的依赖。
<dependency>
<groupId>org.springframework.cloud</groupId>
<artifactId>spring-cloud-starter-hystrix</artifactId>
</dependency>
<dependency>
<groupId>org.springframework.cloud</groupId>
<artifactId>spring-cloud-starter-hystrix-dashboard</artifactId>
</dependency>
<dependency>
<groupId>org.springframework.boot</groupId>
<artifactId>spring-boot-actuator</artifactId>
</dependency>
2.2 yml 文件
引入必要模块后,我们就要去配置 yml 文件了。
server:
port: 8010 # 端口
spring:
application:
name: microservicloud-hystrix # 给模块起一个名字
eureka:
client:
service-url:
defaultZone: http://localhost:7001/eureka # 注册中心地址
instance:
instance-id: microservicloud-hystrix-8010
prefer-ip-address: true
2.3 启动类
@SpringBootApplication
@EnableEurekaClient
@EnableCircuitBreaker //启动断路器
@EnableDiscoveryClient // 启动图像化监控
@RestController
public class AppApllcation8005 {
public static void main( String[] args ) {
SpringApplication.run(AppApllcation8005.class, args);
}
@GetMapping("/hellohystrix")
@HystrixCommand(fallbackMethod = "fallback") // 发生异常执行响应方法
public String hystrix() {
int i = 1 / 0;
return "hellohystrix";
}
public String fallback() {
return "出错了";
}
}
2.4 启动效果
启动注册中以及 hystrix 组件项目。
访问 http://localhost:8010/hellohystrix 接口:

访问 http://localhost:8010/hystrix 接口:

三、zuul组件(服务网关)
zuul 组件主要是提供路由与过滤器功能。一般作为项目的大门守卫,对所有进入项目的接口进行检查。就像地铁的安保人员一样,会对每一个进入地铁的人员进行一一 的检查,发现不符合地铁管理条例的人员不予进入。这就是过滤功能,同时当你迷路的时候,你可以询问安保人,他会为你指导方向,这就是路由功能。
加入服务网关的项目架构

3.1 pom 文件
<dependency>
<groupId>org.springframework.cloud</groupId>
<artifactId>spring-cloud-starter-zuul</artifactId>
</dependency>
3.2 yml 文件
server:
port: 8005 # 端口
spring:
application:
name: microservicloud-zuul-gateway # 项目名称
eureka:
client:
service-url:
defaultZone: http://localhost:7001/eureka # 注册中心
3.3 启动类
@SpringBootApplication
@EnableEurekaClient
@EnableZuulProxy // 启动zuul 组件
public class AppApllcation8005 {
public static void main( String[] args ) {
SpringApplication.run(AppApllcation8005.class, args);
}
}
3.4 启动效果
访问 http://localhost:8005/microservicloud-dept/list 接口:

可以看到我们通过网关地址就访问到了服务端接口。这就是服务网关的路由功能。
四、config组件(配置中心)
当项目越来越多,伴随的配置文件也越来越多。我们是否可以将这次杂乱无章的文件统一进行管理呢,答案是可以的。这就是 config 组件的作用。config 组件主要是利用 git 作为配置服务站,实现文件统一管理。当配置文件更新的时候,我们就可以拉去最新的文件。

五、github
https://github.com/buerbl/learnSpringCloud
六、关注微信公众号,随时移动端阅读
基于 Spring Cloud 的微服务架构实践指南(下)的更多相关文章
- 基于 Spring Cloud 的微服务架构实践指南(上)
show me the code and talk to me,做的出来更要说的明白 GitHub 项目learnSpringCloud同步收录 我是布尔bl,你的支持是我分享的动力! 一. 引入 上 ...
- 干货|基于 Spring Cloud 的微服务落地
转自 微服务架构模式的核心在于如何识别服务的边界,设计出合理的微服务.但如果要将微服务架构运用到生产项目上,并且能够发挥该架构模式的重要作用,则需要微服务框架的支持. 在Java生态圈,目前使用较多的 ...
- 基于Spring Cloud的微服务落地
微服务架构模式的核心在于如何识别服务的边界,设计出合理的微服务.但如果要将微服务架构运用到生产项目上,并且能够发挥该架构模式的重要作用,则需要微服务框架的支持. 在Java生态圈,目前使用较多的微服务 ...
- Cola Cloud 基于 Spring Boot, Spring Cloud 构建微服务架构企业级开发平台
Cola Cloud 基于 Spring Boot, Spring Cloud 构建微服务架构企业级开发平台: https://gitee.com/leecho/cola-cloud
- Spring Cloud构建微服务架构(一)服务注册与发现
Spring Cloud简介 Spring Cloud是一个基于Spring Boot实现的云应用开发工具,它为基于JVM的云应用开发中的配置管理.服务发现.断路器.智能路由.微代理.控制总线.全局锁 ...
- Spring Cloud构建微服务架构(二)服务消费者
Netflix Ribbon is an Inter Process Communication (IPC) cloud library. Ribbon primarily provides clie ...
- Spring Cloud构建微服务架构:服务网关(路由配置)【Dalston版】
转载:http://blog.didispace.com/spring-cloud-starter-dalston-6-2/ 原创 2017-08-26 翟永超 Spring Cloud 被围观 ...
- 基于Spring Cloud的微服务入门教程
(本教程的原地址发布在本人的简书上:http://www.jianshu.com/p/947d57d042e7,若各位看官有什么问题或不同看法请在这里或简书留言,谢谢!) 本人也是前段时间才开始接触S ...
- Spring Cloud构建微服务架构
Dalston版本 由于Brixton和Camden版本的教程已经停止更新,所以笔者计划在2017年上半年完成Dalston版本的教程编写(原计划完成Camden版本教程,但由于写了两篇Dalston ...
随机推荐
- C语言程序设计(一) 为什么要学C语言
第一章 为什么要学C语言 学编程的过程,其实就是学习怎样用编程语言说话,让编译器听懂的过程. 汇编语言缺少“可移植性” 除了机器语言和汇编语言以外,几乎所有的编程语言都被统称为高级语言,它的特点是更接 ...
- C++ 结构体sturct练习
#define _CRT_SECURE_NO_WARNINGS #include <stdio.h> struct Student { ];// 姓名 int id; //id int a ...
- 五分钟学Java:如何学习Java面试必考的JVM虚拟机
原创声明 本文首发于微信公众号[程序员黄小斜] 本文作者:黄小斜 转载请务必在文章开头注明出处和作者. 本文思维导图 为什么要学习JVM虚拟机 最近的你有没有参加Java面试呢?你有没有发现,Java ...
- go极其ide的安装
一.下载软件开发包 官网:https://golang.google.cn/ 二. 安装和配置SDK windows使用.msi一键安装 配置环境变量 GOROOT,自动的,默认将go安装到C:/ ...
- go例子(三) 使用context实现发牌手策略
使用context包实现发牌手策略, 发牌手策略:罗永浩在介绍TNT工作站时描述,将一个任务分发给多个处理者处理,谁先处理完使用谁的结果,取消其他的处理者的任务. 经典的例子:同时在百度.google ...
- AVR单片机教程——走向高层
本文隶属于AVR单片机教程系列. 在系列教程的最后一篇中,我将向你推荐3个可以深造的方向:RTOS.C++.事件驱动.掌握这些技术可以帮助你更快.更好地开发更大的项目. 本文涉及到许多概念性的内容 ...
- org.mybatis.spring.MyBatisSystemException: nested exception is org.apache.ibatis.binding.BindingException: Parameter 'employeeId' not found. Available parameters are [page, map, param1, param2] 解决方法
原因很简单就是没映射到接口添加 @Param 注解 ->@Param("map") 然后在mapper.xml map.employeeId 再次测试 已经解决 ->
- 【面试必备】用了那么多次 ping,是时候知道 ping 是如何工作的了!
每日一句英语学习,每天进步一点点: 前言 在日常生活或工作中,我们在判断与对方网络是否畅通,使用的最多的莫过于 ping 命令了. “那你知道 ping 是如何工作的吗?” —— 来自小林的灵魂拷问 ...
- 阿里淘宝的S1级别bug,到底是谁的锅?
3月25日,阿里的淘宝APP在IOS系统上出现BUG: 在打开淘宝APP以后,用户就会收到系统弹窗通知:“您使用的程序是测试/内测版本,将于当地时间2020-03-28到期,到期后将无法使用,请尽快下 ...
- WEB应用之httpd基础入门(三)
前文我们聊到了httpd的路径别名.访问日志定义.basic认证配置,回顾请参考https://www.cnblogs.com/qiuhom-1874/p/12561236.html:今天我们来聊一聊 ...