SpringCloud
这Leslie_Lau
有点儿阳光
展开
-
大话SpringCloud---nacos的持久化介绍与配置
在讨论Nacos的持久化之前,我们需要先说一下为什么需要这个东西。首先Nacos作为一个服务注册中心和服务配置中心,负责统领整个微服务的服务管理与配置管理。使用它,我们就可以替代Spring Cloud Bus与Spring Cloud Config甚至Eureka等一众服务注册中心。所以它的重要性不言而喻,而在实际生产中,万一它就挂了呢?就是我们熟知的 “单点故障”。试想一下我们的Nacos只有一个实例,这个实例万一因为某些不可抗力的因素宕机了,比如机房断电、运维人员突然关它、机房着火等等。那就因为这原创 2020-08-30 07:49:22 · 287 阅读 · 0 评论 -
大话SpringCloud---Nacos中namespace、group与dataid的关系
网上说烂的两个问题:如果实际开发中,通常一个系统会准备,dev开发环境,test测试环境,prod生产环境,那如何保证指定环境启动时服务能正确读取到Nacos上相应环境的配置文件呢?一个大型分布式微服务系统会有很多微服务子项目,每个微服务项目又都会有相应的开发环境、测试环境、预发环境、正式环境…那么怎么对这些微服务配置进行管理呢?直接进入主题,Nacos有分类管理的操作。抛出三个概念,namespace(命令空间)、group(分组)、dataid。dataid:Nacos 中的原创 2020-08-26 20:30:18 · 6161 阅读 · 0 评论 -
大话SpringCloud---nacos小介绍与各服务注册中心比较
相信大家伙学微服务的话,一般都是先学服务注册中心的吧。比如Eureka、Zookeeper、Consul等等。上面这三个的区别之前也介绍过,无非就是CAP理论中满足两个,Eureka保证了可用性,但损失了一致性。而另外两个确保了一致性,但一定程度丢失了可用性。其实服务注册中心远远不止这三个。前几年是这三位主流,但之后Eureka停更了,Zookeeper技术太过于“老旧”,社区活跃度很低而且还不支持可视化修改。对比而言consul反而成为了我的最爱,社区活跃度高,学习阶段没有这么大流量访问需求,cons原创 2020-08-26 10:25:48 · 465 阅读 · 0 评论 -
大话SpringCloud---为什么需要Spring Cloud Alibaba?
本篇纯扯前言小扯现在软件后端开发普遍都偏向微服务开发了,而我们Java程序员开发有谁不知道Spring呢?Spring社区有大一统java的趋势,快速构建一个单体单元SpringBoot,分布式微服务解决方案SpringCloud以及核心的Spring FrameWork和各种组件等等。今天的主角之一就是SpringCloud,它是一个分布式的微服务解决方案。区别于Dubbo,Dubbo只是一个远程rpc调用框架。而前者则是一整套的解决方案,包括服务注册、服务调用、负载均衡、服务网关、服务降级与熔断原创 2020-08-21 20:20:01 · 1478 阅读 · 0 评论 -
大话SpringCloud---Spring Cloud Stream消息驱动__概念
学习新技术,了解新概念,记录新生活这一篇博客简单介绍一下Spring Cloud Stream消息驱动的概念以及设计思想。为什么需要呢?首先一个新东西的出现,那必然是因为某种需求的驱动。而今天的主角Spring Cloud Stream也是如此。现在的开发早就讲究前后端分离了,前后端提前商量好数据的传输格式(json的对象等)、所需接口说明等等。后端的朋友只需要提供接口给前端的小伙伴调用即可,就不用像以前那样还要去关注视图层的情况,从而专注于业务的开发。但是随着社会的发展,后端可不仅仅是后端了,原创 2020-08-12 20:33:48 · 167 阅读 · 0 评论 -
大话SpringCloud---使用Spring Cloud Bus自动动态刷新配置文件的流程总结
我们都知道在Spring Cloud技术中,会有一个分布式配置中心来专门管理各个微服务的配置文件。但有时就避免不了需要去修改配置,而一修改配置的话,Spring Cloud Config仅支持运维人员手动发送POST请求。当微服务实例一多之后,就需要一个又一个的发送POST请求。这样很繁琐,也没有必要,非常不符合我们讲的 “高内聚,低耦合“。这个时候就需要用到新组件了,Spring Cloud Bus。关于这个技术,我上一篇博客也记录了,这里直接进入正题。(该篇无代码)首先,分布式配置中心(Co原创 2020-08-09 14:11:59 · 213 阅读 · 0 评论 -
大话SpringCloud---Spring Cloud Bus消息总线是个啥?
这一篇博客简单记录一下Spring Cloud Bus是什么东西,有什么作用。问题引入我们都知道微服务治理框架Spring Cloud会有很多很多的组件,比如服务注册、服务调用与负载均衡、服务熔断与降级、服务网关、服务配置中心等等。其中服务配置中心,我们选用的实现技术是Spring Cloud Config。这个东西可以作为微服务的配置中心,集中管理微服务实例的配置信息。今天明明记录的是消息总线,为啥讲这个呢?别急,还记得我们Spring Cloud Config想要动态刷新配置文件时,每一次都原创 2020-08-06 17:37:08 · 266 阅读 · 0 评论 -
通俗SpringCloud---分布式配置中心(概念)
老规矩,新学一个知识点,记录一下下。现在软件开发讲究分布式开发,微服务各种概念都飞起。以前一个系统的业务都被拆分成一个又一个的单元,部署到不同的服务器上。所有的访问请求在访问系统时都会被微服务网关先拦截下来,然后根据请求所要访问业务,再通过路由和一些负载均衡转发到对应的微服务单元上。这样子的架构好处就不说了,很多博客上都有。接下来说说一个隐患。随着公司发展,业务会慢慢变多,每一个业务就要有对应的微服务单元。而一个业务总不可能只有一个微服务单元吧,要考虑到高并发,就要有多个微服务单元,反正咱们可以负原创 2020-08-03 17:08:51 · 251 阅读 · 0 评论 -
大话SpringCloud---Gateway三大核心概念与工作流程
上一篇博客介绍了微服务网关的概念,以及zuul和Spring Cloud Gateway的技术选型,这一篇记录下后者的几个重要概念以及大致工作流程。以下Spring Cloud Gateway用Gateway表示。三大概念:路由(Route): 路由是构建网关的基本模块,它由ID,目标URI,一系列的断言和过滤器组成,如果断言为true则匹配该路由.断言(predicate): 参考的是java8的java.util.function.Predicate开发人员可以匹配HTTP请求中的所有内容(例原创 2020-07-28 13:40:18 · 1536 阅读 · 0 评论 -
大话SpringCloud---谈谈我所理解的微服务网关与Spring Cloud Gateway&Zuul的技术选型
最近在学习微服务网关的一些知识,说实话,每次刚开始理论性的东西时,经常会懵圈。因为会感觉和别的概念很像,搞不懂这个东西存在的意义是什么。就像之前的服务熔断与服务降级一样。所以就需要反复吃透与记录笔记。微服务网关是啥?首先这个概念,在zuul的官方文档里面有介绍说白了,这个东西就是拦住所有的请求,你想要访问我的微服务资源,要先过我这一关。来一个例子,平时中小学甚至大学都不会随意给外人进入,因为有门卫处,里面有安保人员在那里盯着。你要进入学校要先经过他们的法眼。这样就可以拦住不安好心的人了。服务网关原创 2020-07-27 21:03:36 · 795 阅读 · 0 评论 -
大话SpringCloud---Hystrix的工作流程(官网)
先声明,这篇博客是我从Github官网上copy上的,在加上google翻译。算是做一个笔记。Hystrix工作流程0.流程图来自官方的工作流程。1.构造一个HystrixCommand或HystrixObservableCommand对象第一步是构造一个HystrixCommand或HystrixObservableCommand对象,以表示您对依赖项提出的请求。向构造函数传递发出请求时所需的任何参数。HystrixCommand如果期望依赖项返回单个响应,则构造一个对象。例如:Hyst原创 2020-07-25 20:27:23 · 400 阅读 · 0 评论 -
大话SpringCloud---谈谈我理解的服务熔断与服务降级
最近在学习Hystrix这个组件,一说这个组件,就离不开两个概念了,服务熔断&&服务降级。这两个概念特别容易弄混了,特别是钻牛角尖的朋友。先来说一下服务降级.服务降级:这里拿一个看到的例子,平时当“双十一”来临的时候,我们知道阿里的淘宝天猫等电商平台会遭受到大流量的冲击。而服务器资源有限,访问量却是近乎“无限”的。于是我们需要取舍。控制甚至关闭一些其他服务,来为电商腾出更多的资源。比如暂时关闭蚂蚁森林等,来腾出更多的服务器资源给目前更重要的电商模块所使用。服务降级就是如此,从整个原创 2020-07-20 13:26:18 · 311 阅读 · 0 评论 -
踩坑日记---PathVariable annotation was empty on param 0
先上错误:Caused by: java.lang.IllegalStateException: PathVariable annotation was empty on param 0. at feign.Util.checkState(Util.java:130) ~[feign-core-10.4.0.jar:na] at org.springframework.cloud.openfeign.annotation.PathVariableParameterProcessor.processAr原创 2020-07-18 17:29:58 · 448 阅读 · 0 评论 -
大话SpringCloud---Ribbon是什么(理论知识)?
最近在跟着尚硅谷周阳老师学习SpringCloud的知识。学习到了Ribbon这一部分,今天就来简单记录一下这个小组件是干嘛的。先看一下官方的结构图(Github官方文档):在一个微服务架构中,服务中心我们以Eureka举例,客户端从EurekaServer拿到服务注册表时,会先缓存到本地。然后通过Ribbon组件决定去调用哪一个具体服务实例。Ribbon是Netflix发布的云中间层服务开源项目,其主要功能是提供客户端实现负载均衡算法。Ribbon客户端组件提供一系列完善的配置项如连接超时,重试原创 2020-07-16 16:48:08 · 437 阅读 · 0 评论 -
大话SpringCloud---Eureka的自我保护
相信大家第一次使用Eureka作为服务注册中心时,都看到这一行话吧。这个是Eureka的自我保护机制。什么是自我保护机制?先来讲一个小故事吧。小明大学毕业后出来租房子住,年前找了个不错的房子。于是先签了合同。但是过年回家时赶上了疫情,一直被困在家里出不来。这时小明开始拖欠房租了。刚刚拖欠一天,房东就把小明的东西丢了出去…有点现实,但我们也会想房东有点不近人情。如果房东先等几天,打个电话问下小明情况,说不定会好一点。而自我保护机制正是如此。默认情况下,如果EurekaServer在一定时间内没有接.原创 2020-07-13 12:22:35 · 743 阅读 · 0 评论 -
踩坑日记---Cannot execute request on any known server?
最近在学习SpringCloud整合Eureka时,遇到一个小问题。就是把服务提供端注册到Eureka时,报了一个这样的错误:com.netflix.discovery.shared.transport.TransportException: Cannot execute request on any known server at com.netflix.discovery.shared.transport.decorator.RetryableEurekaHttpClient.execute(Re原创 2020-07-10 20:48:01 · 1474 阅读 · 0 评论 -
大话SpringCloud---服务注册中心是个啥?
软件开发的趋势慢慢偏向分布式开发,随着模块越来越多,它们之间依赖调用关系开始错中复杂。我们就需要一个东西去解决这一问题,今天就来记录一下。问题来了正如前言所言,现在一个系统内部被打散,不同的功能放入不同的模块里。而一个模块难免会去远程调用别的模块。如果只是几个模块的调用还可以自己捋清,但是往往一个系统开发到后期,会有几十个模块出现,这个时候再自己一个一个去管理调用,那是很耗费精力的事情。在传统的rpc远程调用框架中,每个服务与服务之间依赖关系比较复杂,管理起来也比较复杂,所以需要使用服务治理,管理服原创 2020-07-10 11:44:20 · 791 阅读 · 1 评论 -
大话SpringCloud---分布式项目中抽取公共代码并引用
平时在分布式开发中,总会碰到一些重复的代码块。今天就来记录一下怎么操作吧。有一个场景,就比如我们自己编写了一个服务提供模块和服务消费模块,它们两都在一个父工程下:一般服务消费模块会远程调用服务提供模块,那它们之间总归要传递一些参数吧。这个参数常见的就是一些实体类。由于它们不属于一个模块,而又需要传递一个相同的实体类。那以前的做法就是在两个模块中都写上相同的实体类。现在模块少还好说,后续模块多了之后,一下几十个模块,我们也要写几十次相同的代码?这个时候程序思维就出来了。我们总是说高内聚,低耦合,很多原创 2020-07-09 23:49:28 · 1415 阅读 · 0 评论 -
大话SpringCloud---RestTemplate使用时碰到的小坑
这几天在学习SpringCloud,做一个小demo时,需要使用RestTemplate去远程调用一个微服务提供类的接口。出现了一个问题,这一篇博客来记录一下。大致是这样的,我在客户端远程调用自己编写的服务端的接口来完成增加记录的操作。远程调用成功是成功了,但是增加的数据没有字段值,就是增加的那一行记录全为null值!就只有一个自增的id主键。找了好久的问题,才想起来使用RestTemplate时,远程调用服务端的增加方法,所使用的方法:CommonResult commonResult = res原创 2020-07-09 17:10:26 · 810 阅读 · 0 评论 -
Maven中的DepencyManagement与Dependencies的区别
今天记录一下maven的pom文件中的两个属性:DepencyManagement,Dependencies博客比较短,就简单记录.Dependencies这个属性大家应该比较熟悉,就是引入依赖。这个属性可以算是pom文件的灵魂。里面可以放入若干的dependency,而dependency内可以放入jar包的坐标。有了这些坐标后,maven就会根据这些坐标去下载对应的jar。同时还会处理里面的依赖关系。DepencyManagement这个属性,目前我用的比较少。因为现在我还处于在单体应用开发原创 2020-07-08 13:34:58 · 1326 阅读 · 1 评论 -
大白话SpringCloud---浅谈微服务架构
微服务这一词这几年特别特别火,经常能在各种公众号和视频里看见它。以后软件开发也是这个趋势。今天就来简单记录一下它。在介绍微服务前,我们先回顾一下以前的软件开发是怎样的模式。简单说就是一个单体架构,以javaweb开发为例,将一个应用分为web层、service层、dao层,以及各种公用代码块。每一层各司其职,层与层之间相互调用。最终处理浏览器发来的请求。在学习了SpringBoot之后,我们构建一个应用程序的速度是非常快的,(如果只涉及增删改查的话)。因为约定大于配置,它帮我们免去了很多繁琐的xml原创 2020-07-06 20:19:13 · 364 阅读 · 0 评论 -
SpringBoot学习之路---SpringBoot整合SpringCloud(Eureka&服务提供和消费)
上一篇博客记录了SpringCloud为我们提供了分布式一站式的解决方案,其中有个组件Eureka,它的作用是作为一个注册中心,服务提供者可以把服务注册到它上面,而服务消费者可以通过http协议的restful风格请求方式去获取该服务,这一篇博客主要介绍SpringBoot怎么去整合Eureka作为注册中心。我们要编写这种分布式的应用,那么就要创建一个空工程,再往里面添加各种模块,那么先创建一个空工程:这里我们有一个应用场景,假设有一个买票模块,它负责提供售票服务,另外有一个用户模块。浏览器访问用户原创 2020-05-10 13:05:20 · 267 阅读 · 0 评论 -
大白话SpringCloud---SpringCloud分布式开发的五大常用组件小介绍
最近学习到了SpringBoot整合SpringCloud那一块,由于没有学习过SpringCloud相关的知识,所以这篇博客开个荒,慢慢记录一下之后的SpringCloud的学习之路。这一篇博客就简单介绍一些五大常用小组件的用途和概念。惯例闲扯:大家或许会经常把Dubbo和SpringCloud来进行比较,但其实它们两还是会有所不同。之前我也了解过Dubbo,它主要是解决RPC(远程调用)那一块的问题,确实它的出现极大地解决了服务多了之后,调用关系繁杂的情况。而SpringCloud则是一个分布式的原创 2020-05-09 09:45:17 · 528 阅读 · 0 评论