Spring Cloud
《疯狂Spring Cloud微服务架构实战》,SpringClound学习心得,技术笔记分享
'嗯哼。
生生不息,“折腾”不止
展开
-
Spring Cloud_1_介绍与环境搭建
Spring Cloud介绍与环境搭建1、单体应用2、单体优化(架构演进)针对单体应用的问题,参考SOA架构将模块划分独立的服务模块 面向服务的架构(SOA) 是一个组件模式 将应用程序的不同功能单元(称为服务)通过这些服务之间定义良好的接口和契约联系起来 接口采用中立方式进行定义,独立于实现服务的硬件平台、操作系统和编程语言 使得构建在各种各样的...原创 2018-02-22 14:04:24 · 44746 阅读 · 2 评论 -
Spring Cloud_2_Spring Boot简介与配置
Spring Boot简介与配置SpringBoot简介SpringBoot使用Eeclips创建SpringBoot项目Idea创建SpringBoot项目1、SpringBoot简介Spring Cloud是基于SpringBoot搭建的,本小节进行大致讲解 开发一个全新的项目,需要先进行开发环境的搭建 要确定技术框架以及版本,还要考虑各个框架之间的版本...原创 2018-02-22 21:56:54 · 41751 阅读 · 0 评论 -
Spring Cloud_3_微服务发布与调用
微服务发布与调用认识Eureka框架运行Eureka服务器发布微服务调用微服务本章将讲述SpringCloud中Eureka的使用,包括在Eureka服务器上发布、调用微服务,Eureka的配置以及集群等内容1、Eureka介绍提供了Eureka服务器端与客户端主要用于服务管理(维护服务列表,自动检查其状态)SpringCloud集成了Netflix OSS的多个项目...原创 2018-02-23 16:42:47 · 39302 阅读 · 2 评论 -
Spring Cloud_4_Eureka集群搭建
Eureka集群搭建搭建Eureka集群1、Eureka集群搭建在介绍Eureka的时候,服务器实例、服务提供者实例都是只启动了一个,并没有体现高可用性本小节将对前面的Eureka应用进行改造,使其可以进行集群部署1.1、集群结构图上节改造前本案例将运行两个服务器实例、两个服务提供者实例,然后服务调用者请求服务本节改造后 Eureka服务...原创 2018-02-24 17:30:53 · 34352 阅读 · 0 评论 -
Spring Cloud_5_客户端健康检测与常用配置
客户端健康检测与常用配置Eureka常用配置客户端健康检测1、回顾回顾在微服务发布与调用中所讲的最简单Eureka集群架构图最小型Eureka集群Eureka客户端(服务者/调用者)分别向Eureka服务器进行注册通过浏览器访问调用者就可以间接访问到服务者Eureka客户端默认情况下每30秒会向Eureka服务器发送一个心跳检测请求,Eureka服务器则会知道...原创 2018-02-25 23:04:49 · 29319 阅读 · 0 评论 -
Spring Cloud_6_负载均衡框架Ribbon
负载均衡框架Ribbon认识Ribbon[ˈrɪbən]第一个Ribbon程序负载均衡是分布式架构的重点,负载均衡机制将决定着整个服务集群的性能与稳定根据Spring Cloud_4_Eureka集群搭建可知,Eureka服务实例可以进行集群部署,每个实例都均衡处理服务请求,那么这些请求是如何被分摊到各个服务实例中的?讲解Netflix的负载均衡项目Ribbon1、Ribb...原创 2018-02-26 18:00:20 · 23652 阅读 · 0 评论 -
Spring Cloud_7_Ribbon负载均衡器
Ribbon负载均衡器Ribbon负载均衡器1、Ribbon负载均衡器Ribbon的负载均衡接口,定义了服务器的操作,主要是用于进行服务器的选择在《Spring Cloud_6_负载均衡框架Ribbon》的案例中,客户端使用了RestClient类,在发送请求时,会使用负载均衡器(ILoadBalancer)接口,根据特定的逻辑来选择服务器,服务器列表可以使用listOfSer...原创 2018-02-28 16:55:55 · 21214 阅读 · 0 评论 -
Spring Cloud_8_SpringCloud与Ribbon
SpringCloud与RibbonSpringCloud中使用Ribbon在SpringCloud_7_Ribbon负载均衡器中,主要讲解Ribbon负载均衡机制SpringCloud集成了Ribbon,结合Eureka,可实现客户端的负载均衡在SpingCloud_4_Eureka集群中所使用RestTemplate(被@LoadBalancer修饰),都已经拥有负载均衡功能本小...原创 2018-03-03 16:11:09 · 13637 阅读 · 1 评论 -
Spring Cloud_9_RestTemplate负载均衡原理
RestTemplate负载均衡原理理解RestTemplate负载均衡原理1、@LoadBalanced注解概述RestTemplate本是spring-web项目中的一个REST客户端访问类RestTemplate遵循REST的设计原则,提供简单的API让调用去访问HTTP服务器RestTemplate本身不具备负载均衡的功能RestTemplate与SpringC...原创 2018-03-03 18:50:08 · 14475 阅读 · 1 评论 -
Spring Cloud_10_REST客户端Feign介绍
REST客户端Feign介绍REST客户端SpringCloud集群中,各个橘色的通信基于REST服务,因此在调用服务的时候,就不可避免的需要使用REST服务的请求客户端之前使用Spring自带的RestTemplate,RestTemplate使用的是HttpClient发送请求现在学习另一个REST的客户端Feign在学习Feign前,先了解REST客户端,简单讲述Apache ...原创 2018-03-04 13:59:06 · 15521 阅读 · 1 评论 -
Spring Cloud_11_Feign的使用
Feign的使用Feign的编码器和解码器1、编码器向服务发送请求的过程中,有些情况需要对请求的内容进行处理例如:服务端发布的服务接收的是JSON格式参数,而客户端使用的是对象,这种情况下,就可以使用编码器,将对象转换成JSON对象1.1、创建服务package com.atm.cloud;import org.springframework.stereo...原创 2018-03-05 09:55:38 · 12732 阅读 · 0 评论 -
Spring Cloud_12_自定义Feign客户端
自定义Feign客户端Feign使用一个Client接口发送请求,默认情况下,使用HttpURLConnection连接HTTP服务当然我们也可以实现自己的Feign客户端1、构建服务器端1.1、创建一个简单的服务端请求package com.atm.cloud;import org.springframework.stereotype.Controller;...原创 2018-03-05 11:04:53 · 12960 阅读 · 0 评论 -
Spring Cloud_13_Feign第三方注解与请求拦截器
Feign第三方注解与请求拦截器1、使用第三方直接1.1、引入依赖如果想使用JAXRS规范来注解,可以使用Feign的“feign-jaxrs”模块<!-- Feign 对 JAXRS 的支持 --><dependency> <groupId>io.github.openfeign</groupId> <...原创 2018-03-05 14:14:43 · 17829 阅读 · 0 评论 -
Spring Cloud_14_SpringCloud整合Feign
SpringCloud整合Feign1、准备工作新建Maven项目:atm_spring_feign_server(8761端口)新建Maven项目:atm_spring_feign_provider启动8080与8081端口提供“/person/{personId}”与“/hello”服务新建Maven项目:atm_spring_feign_invoker(9000端口)...原创 2018-03-07 21:55:44 · 14122 阅读 · 1 评论 -
Spring Cloud_15_Hystrix介绍
Hystrix介绍编写一个简单的Hello World程序容错框架当服务器端发生异常,无法响应,但是客户端不知道,则会一直发送请求,这种情况就可能导致整个系统瘫痪,所以要引入容错机制传统容错,如:在数据库加入超时机制,当规定时间内没有响应则认为发送错误,但是这种方法治标不治本,一旦不是数据库发送错误,则数据库的超时机制就不再工作了人肉运维:手工重启服务器Netflix提供的一个容...原创 2018-03-12 10:14:23 · 13638 阅读 · 0 评论 -
Spring Cloud_16_Hystrix的使用(一)
Hystrix的使用(一)将业务逻辑封装在命令中,交给Hystrix去执行,Hystrix则会帮我们保护程序命令如何执行?其中有什么配置?回退有什么相关配置?1、内部流程从之前的例子看,当服务器出现无响应现象的时候,Hystrix会自动使用容错机制,看似简单,其实有一套较为复杂的执行逻辑第一步:在命令开始执行时,会做一些准备工作(如:为命令创建相应的线程池等)...原创 2018-03-12 14:52:06 · 13054 阅读 · 0 评论 -
Spring Cloud_17_Hystrix的使用-断路器(二)
Hystrix的使用-断路器(二)执行逻辑执行流程看看断路器是如何被开启?如何被关闭?1、断路器开启整个链路达到一定的阀值,默认情况下,10秒内产生超过20次请求,则符合第一个条件满足第一个条件的情况下,如果请求的错误百分比大于阀值,则会开启断路器,默认为50%(如:10内发送30次请求,其中15次是失败的,则会开启断路器)package com.a...原创 2018-03-12 17:27:43 · 12433 阅读 · 1 评论 -
Spring Cloud_18_Hystrix的使用-隔离与缓存(三)
Hystrix的使用-隔离与缓存(三)1、隔离策略thread(线程,消耗可能大点,异步超时)semaphore(信号量,不支持超时、异步)1.1、编写命令package com.atm.cloud;import com.netflix.hystrix.HystrixCommand;import com.netflix.hystrix.HystrixComman...原创 2018-03-13 21:17:54 · 14170 阅读 · 0 评论 -
Spring Cloud_19_整合Hystrix/基本整合与配置(一)
整合Hystrix/基本整合与配置(一)基本整合与配置新建Maven项目:atm_eureka_hystrix_server新建Maven项目:atm_eureka_hystrix_provider新建Maven项目:atm_eureka_hystrix_invoker可回顾之前Spring Cloud_4_Eureka集群搭建1、调用者整合Hystrix1.1、引入依赖...原创 2018-03-14 17:14:53 · 11589 阅读 · 0 评论 -
Spring Cloud_20_整合Hystrix/请求合并与缓存(二)
整合Hystrix/请求合并与缓存(二)1、读取缓存新建过滤器使用缓存注解多次同一请求(同一请求中调用同样的资源),可考虑使用缓存1.1、添加过滤器初始化时,启动上下文package com.atm.cloud.filter;import java.io.IOException;import javax.servlet.Filter;import ...原创 2018-03-16 09:30:16 · 12025 阅读 · 1 评论 -
Spring Cloud_21_整合Hystrix/整合Feign(三)
整合Hystrix/整合Feign(三)在上一节的基础上,整合Feignhttp://cloud.spring.io/spring-cloud-static/Dalston.SR3/#_features直接在客户端(调用者)加入依赖就好了1、Feign整合Hystrix添加依赖编写接口与实现回退1.1、调用者引入依赖<!-- Feign -->&...原创 2018-03-19 09:44:09 · 21129 阅读 · 2 评论 -
Spring Cloud_22_网关Zuul/介绍与使用(一)
网关Zuul/介绍与使用(一)在之前的例子中,都是通过浏览器或者HttpClient模拟浏览器向服务发送请求在实际环境中,一个集群肯定是多个服务提供者的,如何统一起来对外使用呢?外部服务不能知道每一个服务提供者在哪, 只需要记住统一提供的出口遍可以1、Zuul介绍Zuul是Netflix的一个子项目Zuul提供代理、过滤、路由等功能如果集群中提供API/Web服务需要与外...原创 2018-03-19 23:00:13 · 14783 阅读 · 0 评论 -
Spring Cloud_23_网关Zuul/集群中使用Zuul(二)
网关Zuul/集群中使用Zuul(二)SpringCloud中来使用ZuulZuul自带负载均衡功能回顾原来的SpringCloud集群在SpringCloud中使用Zuul框架后(Zuul网关也会作为客户端注册到Eureka服务器中) 1、建立集群项目Eureka服务器服务提供者服务调用者Zuul网关1.1、Eureka服务器端(8761)...原创 2018-03-20 09:24:25 · 17330 阅读 · 0 评论 -
Spring Cloud_24_网关Zuul/路由配置
网关Zuul/路由配置Zuul自带负载均衡功能,何时使用负载均衡,何时使用普通转发?1、简单路由SimpleHostRoutingFilter配置连接池zuul.host.maxTotalConnections:目标主机的最大连接数,默认值为200,配置该项,相当于调用了PoolingHttpClientConnectionManager的setMaxTotal方法zuu...原创 2018-03-21 09:32:21 · 17649 阅读 · 0 评论 -
Spring Cloud_25_网关Zuul/功能进阶
网关Zuul/功能进阶之前章节已经学过Zuul路由配置的知识,Zuul的请求会经过多个阶段,每个阶段都会有多个过滤器其中负责路由的阶段就叫做“routing”过滤器1、过滤器优先级实际过程中,是routing过滤器中将请求转发至源服务数字越小,优先级越高routing过滤器中,最终只会选择一个进行执行,那么为什么也会有优先级呢?会通过外部的一个值,来决定执行哪个过滤器,...原创 2018-03-22 09:37:55 · 13735 阅读 · 0 评论 -
Spring Cloud_26_消息驱动/Stream介绍
消息驱动/Stream介绍1、关于消息驱动消息驱动Bean 用于处理企业之间的消息通信,SpringCloud提供了相关模块,基于这些模块可以在微服务中构建消息应用,让微服务可以与其他服务组件进行消息通信消息代理中间件2、消息代理程序结构目前市面上有很多消息代理中间件,如ActivitiMQ、RabbitMQ在使用这些消息代理中间件的时候,我们需要使用其AP...原创 2018-03-24 10:54:21 · 11486 阅读 · 0 评论 -
Spring Cloud_27_消息驱动/RabbitMQ的使用
消息驱动/RabbitMQ的使用1、RabbitMQ服务器安装 这一章所使用的RibbitMQ的服务器版本是3.6.11(Windows版本),RibbitMQ的服务器要使用Erlang语言,所以需要先下载Erlang(20.4 64bit)1.1、安装ErlangErlang傻瓜式安装1.2、安装RabbitMQ-Server消息代理中间件傻瓜式安装安装...原创 2018-03-26 10:13:28 · 16215 阅读 · 0 评论 -
Spring Cloud_28_消息驱动/Kafka的使用
消息驱动/Kafka的使用与RabbitMQ一样,充当消息代理中间件的角色1、下载Zookeeper/KafkaZooKeeper Kafka依赖于Zookeeper,Zookeeper是一个服务的管理框架,在启动Kafka(2.11)服务之前,需要先启动Zookeeper(3.4.8)Kafka2、启动Zookeeper进入%Zookeeper_Home...原创 2018-03-27 14:06:42 · 12378 阅读 · 0 评论 -
Spring Cloud_29_消息驱动/整合SpringCloud
消息驱动/整合SpringCloud如何在SpringCloud集群中进行消息开发?1、准备工作Eureka服务器Eureka客户端,Producer:用于生产消息,Consumer:用于消费消息RabbitMQ作为服务在window系统中运行,所以暂用RabbitMQ进行搭建测试,之后再更换为kafkaserver: port: 9000spring: ...原创 2018-03-28 09:16:18 · 11712 阅读 · 0 评论 -
Spring Cloud_30_SpringCloud配置中心/概述
SpringCloud配置中心/概述之前学习过SpringCloud中Eureka、Ribbon、Feign、Hystrix、Zuul、Stream(RabbitMQ、Kafka)等,都是使用application.yml进行配置的在实际应用中,集群中会有多个服务,每个服务都可能部署多个实例,这个时候会出现多个配置,如何做到修改了配置而不需要重启服务?如果修改一些常规配置都要重启服务,这明...原创 2018-03-29 09:33:07 · 10932 阅读 · 0 评论 -
Spring Cloud_31_SpringCloud配置中心/例子
SpringCloud配置中心/例子Config的作用:对集群配置的统一管理Config的作用:对集群配置的统一管理客户端连接配置服务器的时候默认连接8888端口1、创建Config服务器创建Config服务器之前,需要先创建SVN服务器,上一章节已经创建完成现在来创建Config服务器1.1、引入依赖<dependencyManagement>...原创 2018-03-30 09:15:28 · 14897 阅读 · 1 评论 -
Spring Cloud_32_SpringCloud配置中心/配置加密
SpringCloud配置中心/配置加密上一节讲到:config客户端回去config服务器读取配置,而config服务器则是去SVN仓库读取配置在实际应用中,会设计到许多敏感数据(如:数据库密码),这些敏感数据会保存到SVN仓库中SpringCloud为这部分敏感数据提供加密/解密功能,对加密后的密文传输给客户端之前会进行解密配置服务器支持对称(AES)/非对称加密(RSA)1...原创 2018-04-09 14:10:44 · 12854 阅读 · 0 评论 -
Spring Cloud_33_SpringCloud配置中心/常用配置
SpringCloud配置中心/常用配置除了上节所常用的加密解密,其实还需要对客户端进行一些额外配置:服务器健康检测、客户端重试机制等1、服务器健康状态默认情况下服务器会访问配置的SVN的URI,如果连接不上,服务器的健康状态就会设置成down除了检测SVN的URI是否连接正常,还可以检测URI下的目录是否可以连接spring: cloud: config...原创 2018-04-10 09:15:04 · 10853 阅读 · 0 评论 -
Spring Cloud_34_SpringCloud使用配置中心
SpringCloud使用配置中心之前章节讲过:配置服务器决定去哪里读取配置文件,配置客户端决定读取什么配置文件1、准备工作eureka-server:Eureka服务器,端口为8761eureka-config-server:Eureka客户端,同时也是配置服务器,端口为8899eureka-config-client:Eureka客户端,同时也是配置客户端,端口为...原创 2018-04-14 09:56:14 · 8734 阅读 · 1 评论