图灵学院
红烧咸鱼丶
一个没有梦想的废物咸鱼
展开
-
微服务开发(17)--Hystrix的原理&&Zuul的原理图
Hystrix的基本运行流程创建Command对象我们会判断熔断器是否开启当熔断器开启的时候,我们不会执行自己真正的逻辑,而是直接执行器降级方法,执行FallBack方法若FallBack方法执行成功,则返回Fallback方法的执行结果若Fallback方法执行失败,则抛出异常当熔断器关闭的时候,表示需要执行正常的逻辑当熔断器关闭走向正常的逻辑的时候,会先判断当前的...原创 2019-11-27 18:04:55 · 619 阅读 · 0 评论 -
微服务开发(16)--SpringBoot源码分析外部tomcat启动war包的原理
前面我们已经介绍了SpringBoot的内置Tomcat的启动过程原理那么,SpringBoot打包成war包的时候,又是怎么运行的?在此之前先记结论SpringBoot程序是jar的方式,是通过IOC容器启动的方式,带动了Tomcat的启动;若SpringBoot程序是war包的方式,则是Tomcat启动带动了IOC容器的启动如何写一个war类型的SpringBoot程序首先打包...原创 2019-11-26 16:45:37 · 529 阅读 · 0 评论 -
微服务开发(12)--Hystrix的使用
分布式系统遇到的问题我们在使用分布式架构模式的情况下,会遇到服务雪崩等问题,先来明确几个概念服务扇出在分布式系统中,存在服务A调用服务B,而服务B又去调用服务C,服务D,这样的调用过程就是服务扇出服务雪崩或者级联故障在我们某一条扇出的服务调用链路中有一个服务,由于响应时间过程或者抛出异常,导致服务调用者老被占用越来越多的资源,从而导致整个系统崩溃,整个的过程就叫做服务雪崩或...原创 2019-11-26 15:13:00 · 249 阅读 · 0 评论 -
微服务开发(13)--ZUUL的使用
什么是网关Zuul是Netflix开源的微服务网关,它可以和Eureka,Ribbon,Hystrix等组件配合使用。Zuul的核心是一系列的过滤器Zuul网关也有负载均衡的功能,该负载均衡是服务端的负载均衡,因为客户访问网关,由服务网关来决定跳到哪一个服务,而不是自己决定的。一:主要功能身份认证与安全:识别每一个资源的验证要求,并且拒绝那些与要求不符合的请求审查与监控:在边缘位置...原创 2019-11-22 15:53:27 · 439 阅读 · 0 评论 -
微服务开发(10)--Feign的使用
SpringCloud OpenFeign什么是FeignFeign是Netflix开发的声明式,模板化的Http客户端。Feign可以帮助我们更加快捷的,优雅的调用Http API与Ribbon对比来说,Feign的速度相对会慢一点,Feign的底层实际上就是使用了Ribbon进行调用的Feign使用的是动态代理,而Ribbon使用的是拦截器Ribbon借由RestTemplate来...原创 2019-11-19 00:33:38 · 505 阅读 · 0 评论 -
微服务开发(9)--Ribbon的使用
SpringCloud Ribbon什么是RibbonSpringCloud Ribbon是基于NetFilix ribbon实现的一套客户端的负载均衡工具,Ribbon客户端组件提供一系列的完善的配置,如超时,重试等。通过Load Balancer(LB)获取到服务提供的所有机器实例,Ribbon会自动基于某种规则(轮询,随机)去调用这些服务。Ribbon也可以实现我们自己的负载均衡算法。...原创 2019-11-18 23:26:21 · 260 阅读 · 0 评论 -
微服务开发(11)--Ribbon&Feign源码解析
Ribbon源码解析Ribbon的使用流程图从上图我们可以看到我们首先创建了一个Eureka集群,端口号分别为8001和8002User1服务和User2服务作为服务的提供方将自己的服务信息注册到Eureka中此时Order服务作为服务的消费者,我们会首先从Eureka中拉取服务注册列表,放到本地,做为缓存ribbon拉取的服务注册列表则是Order本都服务的注册列表,而不是自己从E...原创 2019-11-18 21:17:53 · 498 阅读 · 0 评论 -
微服务开发(8)--Eureka源码深入分析(客户端)
Eureka客户端解析下图是我们Eureka客户端的主要流程分析:根据上图分析源码1. 查看我们的pom文件,发现我们导入了maven依赖 <!--Eureka的客户端依赖--> <dependency> <groupId>org.springframework.cloud</groupId&...原创 2019-11-13 00:39:55 · 547 阅读 · 0 评论 -
微服务开发(7)--Eureka源码深入分析(Server服务端)
看源码的方法:先使用: 先看官方文档快速掌握框架的基本使用抓主线: 找一个demo入手,顺腾摸瓜快速静态看一遍框架的主线源码(抓大放小),记得画出源码的主流程图,一定不要一开始就陷入源码的细枝末节,否则会把自己绕晕画图做笔记: 总结框架的一些核心功能点,从这些功能点入手深入到源码的细节,边看源码走向图,并对关键源码的理解做笔记,把源码里的闪光点都记录下来,后来可以借鉴到工作项目中,理解能力...原创 2019-11-13 00:10:38 · 321 阅读 · 0 评论 -
微服务开发(6)--微服务介绍及Eureka服务注册与发现详解
微服务入门一:微服务概述1. 微服务是什么(1)微服务的核心就是把传统的单机应用,根据业务将单机应用拆分成为一个个的服务,将其彻底的解耦,每一个服务都是提供特定的功能,一个服务只做一件事,类似进程,每个服务都能够单独部署,甚至可以拥有自己的数据库。这样的一个个小的服务就是微服务。(2) 比如传统的单机电商应用,可以将整个服务化为订单,支付,库存,物流,积分等模块(这里的模块就是一个一个的s...原创 2019-11-11 17:40:11 · 425 阅读 · 0 评论 -
微服务开发(4)-- 手写starter启动器
自定义Starter在SpringBoot中我们已经分析了stater的原理,现在我们自己手写一个starter自定义starter的步骤(1)自定义starter(2)使用starter代码实现创建starter引入maven依赖<?xml version="1.0" encoding="UTF-8"?><project xmlns="http://ma...原创 2019-11-08 18:16:30 · 493 阅读 · 0 评论 -
微服务开发(5)--SpringBoot的内置Tomcat启动过程
内容讲解本章节我们主要讲解:(1)以redis的自动装配为例,如何修改RedisTemplate的序列化器(2)Bean的后置处理器的作用以及工作的时机(3)BeanPostProcess,InitializingBean以及自定义@Init的执行时机(4)tomcat的启动流程(==重点 ==)(5)如何扫描自己的组件,以及如何调用到@Import的注解如何修改RedisTem...原创 2019-11-07 23:39:22 · 1667 阅读 · 0 评论 -
微服务开发(2)-- SpringBoot整合JDBC&Druid&MyBatis
SpringBoot整合JDBC代码实现导入maven依赖<?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" ...原创 2019-11-06 23:03:57 · 161 阅读 · 0 评论 -
微服务开发(3)-- SpringBoot自动装配原理详解
SpringBoot自动装配原理详解这里我们以redis的集成为例,先体会下有自动装配和没有自动装配功能的代码的配置不使用自动装配功能(1)加入配置<dependency> <groupId>org.springframework.data</groupId> <artifactId>spring-data-redis</art...原创 2019-11-06 21:23:33 · 828 阅读 · 0 评论 -
微服务开发(1)-- SpringBoot快速开始
一. SpringBoot的微服务开发利器什么是微服务,微服务和微服务架构的区别?目前而言,对于微服务业界没有一个统一的标准定义,但是通常而言提倡把单一的应用程序划分为一组小的服务每个小的服务都会运行在自己的进程中,服务之间通过轻量级的通信机制(http和rest api)来进行通信,那么这一个个的小服务就是微服务。单体架构:传统的单一电商应用来说,订单,支付,用户,商品,库存等模块...原创 2019-11-05 10:30:45 · 200 阅读 · 0 评论