Spring Cloud
我还可以加班
知道你会来,所以一直在等!
展开
-
1、Spring Cloud01
学习Spring Cloud之前先写一个跨服务调用的简单例子,看一下大概是什么样子的,这其实就相当于微服务的底层了。创建一个名为orders(服务提供者)的spring boot工程,添加Web依赖,并且创建一个HelloCotroller:@RestControllerpublic class HelloController { @GetMapping("/hello") ...原创 2019-06-13 20:53:22 · 232 阅读 · 0 评论 -
10、Spring Cloud10——声明式服务调用
前几篇已经展示了Hystrix+RestTemplate的方式调用服务,实际上在consumer的BookService里面,如果要挨个的去调用provider中的接口,BookService里面首先要注入RestTemplate,然后写相应的方法,每一个方法去调用provider中BookController中的接口,但是你会发现这些方法具有极大的相似性,你会发现这个BookService里面首...原创 2019-06-15 16:52:21 · 239 阅读 · 0 评论 -
11、Spring Cloud11——Feign的继承特性
大家可能已经发现,在feign-consumer中BookService里面写的代码和provider中BookController中写的代码挺像的:BookService:@FeignClient("provider")//该注解表示这是一个Feign的客户端,绑定的provider表示要访问的服务提供者的名字叫providerpublic interface BookService ...原创 2019-06-15 20:23:50 · 550 阅读 · 0 评论 -
12、Spring Cloud12——Feign详细配置
我们知道Feign其实就是对Hystrix的容错、服务降级、异常处理、负载均衡等进行的封装,这些在feign中通通都有,那么大家可能会想到容错的问题,在Feign中如何配置呢?发生错误该怎么办呢?去哪里去调用呢?首先在feign-conssumer中创建一个UserServiceFallback@Componentpublic class UserServiceFallback implem...原创 2019-06-15 20:54:42 · 283 阅读 · 0 评论 -
13、Sping Cloud13——网关介绍
什么是API网关?当我现在建立了很多个服务之后,大家发现,我每次访问都是直接访问consumer的,然后由consumer去访问provider,像现在这种情况,如果我不想访问consumer,就想直接去访问provider,一样也是可以访问的。那么这样的话就会很乱,所以当我的微服务有成百上千个的时候,我希望给所有的服务有一个统一的入口,所有的请求都从这儿进,所有的请求都从这儿出。这样的话我要去...原创 2019-06-15 22:16:30 · 211 阅读 · 0 评论 -
14、Spring Clou14——路由配置细节
首先我们来回忆一下上篇文章我们配置路由规则的那两行代码:zuul.routes.api-a.path=/api-a/**zuul.routes.api-a.serviceId=feign-consumer我们说当我的访问地址符合/api-a/**规则的时候,会被自动定位到feign-consumer服务上去,不过两行代码有点麻烦,我们可以用下面一行代码来代替,如下:zuul.routes...原创 2019-06-15 22:58:48 · 222 阅读 · 0 评论 -
15、Spring Cloud15——SpringCloud Config分布式配置中心
为什么需要分布式配置中心呢?随着我们的分布式项目越来越大,我们可能需要将配置文件抽取出来单独管理,Spring Cloud Config对这种需求提供了支持。Spring Cloud Config为分布式系统中的外部配置提供服务器和客户端支持。我们可以使用Config Server在所有环境中管理应用程序的外部属性,Config Server也称为分布式配置中心,本质上它就是一个独立的微服务应用...原创 2019-06-16 00:22:04 · 263 阅读 · 0 评论 -
22、Spring Cloud22——SpringCloudStream的使用
上篇文章我们看了Spring Cloud Stream的基本使用,但是上篇文章中的消息我们是从RabbitMQ的web管理页面发来的,如果我们想要从代码中发送消息该如何实现呢?自定义消息通道上一篇我们使用的消息通道实际上是系统默认提供的,就是那个Sink.class,它里面有一个常量叫做INPUT,接下来我们来看一下自己定义消息通道,我们来看看怎么弄。我们先来看一下,实际上默认情况下这里是定...原创 2019-06-21 15:41:06 · 354 阅读 · 0 评论 -
16、Spring Cloud16——Spring Colud Config之客户端配置
上一篇搭建了分布式配置中心服务端,现在我们来学习如何在客户端使用它吧。首先创建一个名为config-client1的新的Module客户端并且添加如下依赖:在resources下新建一个名为bootstrap.properties(或者bootstrap.yaml都可以)的配置文件:#取名字必须和仓库中文件夹的名字一致spring.application.name=client1#要去c...原创 2019-06-17 20:27:56 · 467 阅读 · 0 评论 -
17、Spring Cloud17——加密解密服务
在为服务架构中,由于独立的服务个数众多,前期测试的工作量大,一些原本由运维人员维护的敏感信息会被我直接写在微服务中,提高开发效率,但是这种明文存储方式显然是非常危险的,所以我们要对这些信息进行加密,而Spring Cloud Config提供了对称密码、非对称密码的功能来完成我们的这一需求。加密方式一般有以下几种方案:1、Base64,这其实不是一种加密的方法,而是一种编码方案,叫Base64...原创 2019-06-18 01:17:04 · 1763 阅读 · 0 评论 -
19、Spring Cloud ——Spring Cloud Bus之RabbitMQ介绍
为什么需要使用消息中间件?我们把Spring Cloud Bus称为消息总线,在使用微服务的时候,我们不可避免的需要在服务之间来做调用,调用的方式有很多种,之前用的Feign、RestTemplate只是其中之一而已,一般来说使用Feign或者RestTemplate来调用一个方法,调用完之后,很短时间内就能知道调用的结果。但是有一些调用我并不想马上就知道结果,甚至说没办法马上就知道结果,比如说...原创 2019-06-19 21:24:36 · 662 阅读 · 0 评论 -
21、Spring Cloud21——Spring Cloud Stream介绍
Spring Cloud Stream是一个构建消息驱动的微服务框架,它构建在Spring Boot 之上用以创建工业级的应用程序,并且通过Spring Integration提供了和消息代理的连接。Spring Cloud Stream为一些供应商的消息中间件产品提供了个性化的自动化配置实现(目前仅支持RabbitMQ和Kafka),同时引入了发布订阅、消费和区分的语义概念。现在我们来看看Spr...原创 2019-06-19 21:18:49 · 250 阅读 · 0 评论 -
9、Spring Cloud08——断路器03
Hystrix请求合并请求合并就是consumer反复的请求provider同一个接口,只是传的参数不一样,为了提高HTTP的通信效率,把它连着调用的很多个接口合成一个请求发出去,然后在provider上处理,处理完成后,返回一个一个结果就ok了,但是这不是所有的请求都能合并,这是有要求的,比如说,请求的时间里的特别近。服务端的接口也有要求,返回的数据要支持多个请求的,一般是list集合。比如...原创 2019-06-15 00:34:35 · 198 阅读 · 0 评论 -
2、Spring Cloud02——服务注册中心
服务注册中心和dubbo中的zokeerper一样,dubbo里面需要搭建服务注册中心,Spring Cloud里面也需要搭建服务注册中心(不同于zokeerper的是Spring Cloud里面的注册中心就是一个Spring Boot项目),使用普遍的是Spring Cloud Eureka,它来自Spring Cloud Netfilex包括:Eureka、Ribbon、Hystrix、Fei...原创 2019-06-13 20:53:59 · 320 阅读 · 0 评论 -
3、Spring Cloud03——服务注册
上一篇已经有了服务注册中心Eureka,接下来就可以往这上面注册一个服务。在原工程上创建一个新的Module(provider),就是一个spring boot工程,provider的applicat.properties配置文件,先注册到eureka1上面去,因为两个eureka会进行数据的同步,也可以指定同时注册到两个eureka上面去,在eureka.client.service-url...原创 2019-06-13 20:54:26 · 268 阅读 · 0 评论 -
4、Spring Cloud04——引入RestTemplate
接下来来学习一个工具,这个工具叫做RestTemplate实际是就是Restful风格的Http请求的操作模板,RestTemplate是属于spring里面的东西,因为前面通过IO流解析有点麻烦,可以粉状一下,所以我们需要引入RestTemplate,通过它来发送网络请求。在consumer的启动类中做如下修改:它是spring里面一个特别基础的工具,就是一个网络请求的工具。在UserHe...原创 2019-06-13 21:47:57 · 478 阅读 · 0 评论 -
5、Spring Cloud05——Eruek中的核心概念
服务提供者Eureka服务治理体系支持跨平台,虽然我们前文使用了Spring Boot来作为服务提供者,但是对于其他技术平台只要支持Eureka通信机制,一样也是可以作为服务提供者,换句话说,服务提供者既可以是Java写的,也可以是python写的,也可以是js写的。这些服务提供者将自己注册到Eureka上,供其它应用发现然后调用,这就是我们的服务提供者,服务提供者主要有如下一些功能:服务注册...原创 2019-06-13 22:54:29 · 423 阅读 · 0 评论 -
6、Spring Cloud06——RestTemplate的用法详解
通过上一篇的了解https://blog.csdn.net/weixin_44868863/article/details/91899227,接下来来演示一下RestTemplate的具体用法。首先在cloud中使用Maven创建一个公共的模块commons,这个公共的模块到时候会被其他的几个模块所依赖.在commons中创建一个Book类然后在provider和consumer里面引用co...原创 2019-06-14 10:16:58 · 274 阅读 · 0 评论 -
Spring Cloud的五大核心组件
springcloud是微服务架构的集大成者,将一系列优秀的组件进行了整合。基于springboot构建,对我们熟悉spring的程序员来说,上手比较容易。通过一些简单的注解,我们就可以快速的在应用中配置一下常用模块并构建庞大的分布式系统。SpringCloud的组件相当繁杂,拥有诸多子项目。重点关注Netflix服务发现——Netflix Eureka客服端负载均衡——Netflix ...转载 2019-06-14 11:28:26 · 1962 阅读 · 0 评论 -
20、Sprng Cloud20——SpringCloudBus的应用
这个消息中间件,在微服务中使用它可以更新我们的数据,而且更新还比较方便。比如说我们有两个微服务A和B,当我的微服务A/微服务B启动的时候,会从Config-Server中加载配置文件,而Config-Server则会通过git clone命令将配置中心的配置文件先clone下来在本地保存一份,然后再返回给微服务A/微服务B。这是我们之前的工作流程,现在我们结合Spring Cloud Bus来...原创 2019-06-19 15:00:53 · 359 阅读 · 0 评论 -
7、Spring Cloud07——断路器01
为什么需要断路器,在开发中,如果是前后端不分的话,很少使用断路器,但是在微服务中,断路器是一个非常重要的工具,因为在微服务里面,整个系统出错的概率远远高于单机服务,在微服务中可能有很多个单机服务,每个单机服务正常运行整个微服务系统才能正常运行,随着服务数量的增加,系统能正常运行的概率越低。采用微服务这个问题是无法避免的,我们能做的就是当一个微服务系统中的某一个单机服务出现问题后,希望它不要影响到整...原创 2019-06-14 21:15:11 · 241 阅读 · 0 评论 -
8、Spring Cloud08——断路器02
异常处理服务降级一方面可能是去调用provider没调通,会发生服务降级。另一方面可能在是自己本身就抛出异常了,这种情况也会发生服务降级。那么自己本身抛出异常是怎么一回事呢?比如说在BookService中的hello方法中加入一行必错的代码:那么在这个hello方法本身在执行的时候时候就会抛异常,抛异常就会导致服务降级,不用等到调用provider调不通的时候再去服务降级。还有就是在Bo...原创 2019-06-14 23:08:23 · 209 阅读 · 0 评论 -
18、Spring Cloud18——配置中心服务化
什么是配置中心服务化?我们前两篇讲的分布式配置中心,实际上并没有引入eureka,这样是不合理的,相当于config-client里面把config-server的地址写死了,config-server如果以后换了地址,所有的config-client都得改,而且这个config-server如果你想要部署集群也不好处理,所以为了解决这个问题还是引入eureka。首先启动eureka,然后让c...原创 2019-06-18 10:45:49 · 282 阅读 · 0 评论