
Spring Cloud 2.x
西红柿系番茄
知其然,知其所以然。
展开
-
SpringCloud2.x(一)——引言
一、微服务架构概述1.1、单体应用架构存在的问题一个归档包(例如war格式)包含所有功能的应用程序,通常称为单体应用。存在问题:复杂性高 技术债务 部署频率低 可靠性差 扩展能力受限 阻碍技术创新1.2、如何解决单体应用架构存在的问题单体应用架构 --> 分布式架构 --> SOA架构 --> 微服务架构。1.3、什么是微服务微服务架构风格...原创 2018-08-15 00:08:25 · 558 阅读 · 0 评论 -
SpringCloud2.x(二)微服务注册与发现——Eureka
如果直接在服务消费者项目指定服务提供者地址的话,会带来很多问题。比如服务提供者的网络地址(IP和端口)发生了变化,服务消费者无法自动感知,需要手动修改并重新部署。 无法动态增减每个微服务的集群节点。 服务之间调用混乱,难于管理。服务发现组件提供了解决以上问题的能力。一、服务发现简介服务提供者、服务消费者、服务发现组件这三者的关系大致如下: 各个微服务在启动时,将自己的网络地址等...原创 2018-08-15 22:34:11 · 1320 阅读 · 0 评论 -
SpringCloud2.x(三)客户端负载均衡——Ribbon
之前,我们是这样调用服务提供者的但是,如果服务提供者部署了多个实例,怎么实现负载均衡呢?答案就是使用Ribbon。一、Ribbon简介Ribbon是Netflix发布的负载均衡器,它有助于控制HTTP和TCP客户端的行为。为Ribbon配置服务提供者地址列表后,Ribbon就可基于某种均衡算法,自动地帮助服务消费者去请求。Ribbon默认为我们提供了很多的负载均衡算法,例如...原创 2019-02-17 01:28:04 · 710 阅读 · 0 评论 -
SpringCloud2.x(四)声明式REST调用——Feign
在服务提供者项目microservice-provider增加一个带参数的接口 @GetMapping("/pay_with_params") public String pay(String orderCode, int totalPrice) { return "支付成功-->订单编号:" + orderCode + ",金额:" + totalPrice; ...原创 2019-02-17 13:15:00 · 1059 阅读 · 0 评论 -
SpringCloud2.x(五)微服务容错处理——Hystrix
系统运行过程中,如果服务提供者响应非常缓慢,那么消费者对提供者的请求就会被强制等待,直到提供者响应或超时。在高负载情况下,如果不做任何处理,此类问题可能会导致服务消费者的资源耗竭甚至整个系统的崩溃。一、雪崩效应把“基础服务故障”导致“级联故障”的现象称为雪崩效应。雪崩效应描述的是提供者不可用导致消费者不可用,并将不可用逐渐放大的过程。产生原因:在应用中,默认所有的请求都使用一个线程池处...原创 2019-02-17 16:10:02 · 801 阅读 · 0 评论 -
SpringCloud2.x(六)构建微服务网关——Zuul
一、为什么使用服务网关不使用服务网关的时候,客户端直接与各个微服务通信,如图这样会带来以下问题客户端会多次请求不同的微服务,增加了客户端的复杂性。 存在跨域请求,在一定场景下处理相对复杂。 认证复杂,每个服务都需要独立认证。 难以重构,随着项目的迭代,可能需要重新划分微服务。 某些微服务可能使用了防火墙/浏览器不友好的协议,直接访问会有一定的困难。微服务网关是介于客...原创 2019-02-19 23:43:18 · 1075 阅读 · 0 评论 -
SpringCloud2.x(七)统一管理微服务配置——Spring Cloud Config
一、为什么要统一管理微服务配置对于传统的单体应用,通常使用配置文件管理所有配置。比如Spring Boot开发的单体应用,配置内容可以放在application.yml文件,需要切换环境的话可以设置多个Profile并在启动应用时指定spring.pfofiles.active={profile}。然而,在微服务架构中,配置管理一般有以下需求集中管理配置:一个使用微服务架构的应用系统可...原创 2019-02-22 00:15:16 · 1318 阅读 · 0 评论