Spring could 学习随笔巩固记忆


spring cloud:

    父工程:整个微服务集群统一套壳 除了pom.xml 没有其他代码

        微服务包括但不限于以下类型:

        1.eureka服务器发现,有启动类和yaml,pom(集成eureka-server依赖)

        2.服务端:service接口 数据库crud提供者 有mybatis组件

            (集成eureka-client依赖 如果用server会导致返回xml不是json)

        3.客户端:消费者或者使用者 没有sql代码 mybatis组件之类的

            (集成eureka-client依赖 如果用server会导致返回xml不是json)



Eureka(找到了): 

                注册服务组件;分发注册微服务,分为Eureka Server和Eureka Client ;一般来说Eureka Server要注册两个以上做集群互相注册,保活


Ribbon(勋带):LB,

            即负载均衡(Load Balance);轮训,加权值

            1.新加一个负载均衡提供客户端 需要重启80实例才能找到新客户端

            2.在需要json返回地方 引入eureka 一定要client端spring-cloud-starter-netflix-eureka-client

                  如果引入client端spring-cloud-starter-netflix-eureka-server端接口会返回xml;

                  (Eureka Client - 服务端/提供者)就可以集成不同数据库(可能还有不同开发语言),多个注册完成负载均衡


feign(假装):

    另一种负载均衡,面向接口的实现方式;相当于Ribbon的升级版

        对 Feign 进行了封装,Feign 默认集成了 Ribbon 实现了客户端负载均衡调用

        在(Eureka Client - 客户端/消费者):

                1. 通过微服务名称,获得服务的调用地址

                2. 通过接口+注解,获得服务的调用 ——Feign (为适应业界其它程序员提出的,还是遵循面向接口编程)

        SpringCloud对Feign进行了增强兼容了SpringMVC的注解 ,我们在使用SpringMVC的注解时需要注意:

                1、!!!@FeignClient接口方法有基本类型参数在参数必须加@PathVariable("XXX") 或 @RequestParam("XXX")

                2、!!!@FeignClient接口方法返回值为复杂对象时,此类型必须有无参构造方法。

Hystrix:熔断器(断路器)

        ,类似保险丝;在业务出错throws 或者 某一个微服务崩溃时的 雪崩效应 默认返回处理 止损用

        1.服务端熔断:

                a.spring-cloud-starter-netflix-hystrix 依赖

                b.yaml=> eureka => instance-id: ${spring.application.name}:${server.port}-hystrix

                c. @HystrixCommand(fallbackMethod = "getFallBack")方法上加入

                d. public Product getFallBack(@PathVariable("id") Long id) 实现方法

        2.客户端消费者熔断(feign):

                a.yaml => feign.hystrix.enabled: true

                b.@FeignClient(value = "babosa-product",fallback = ProductClientServiceFallBack.class)

                     接口类上注释fallback属性

                c.@Component public class ProductClientServiceFallBack implements ProductClientService

                     完成实现类 加@Component 标注组件 并实现feign接口

                d.对方法 public Product get(@PathVariable("id") Long id) { return null/others }

                     实现即是错误熔断应对返回值了

                pis:feign 强兼容 springmvc 所以public Product get(@PathVariable("id") Long id) 连  

                   @PathVariable("id")都要一模一样(feign知识点)

        熔断监控:

            1.做一个熔断微服务spring-cloud-starter-netflix-hystrix-dashboard依赖

            2.在需要监控的服务中yaml management:endpoints:web:exposure:include: hystrix.stream

                 spring-boot-starter-actuator依赖

            3.http://熔断微服务地址:端口/hystrix 进入

                 输入 http://呗监控服务地址:端口/actuator/hystrix.stream  title 起名即可


Zuul(粗鲁):路由, 1.路由分发, 2.接口过滤

    1.正常配置spring-cloud-starter-netflix-zuul pom 即可用路由分发

    2.配置yaml zuul:routes:"路由器名" 然后path/serviceId/stripPrefix 即可使用接口过滤

    3.自定义一个@Component 组件标识的Filter 继承 ZuulFilter 实现对应方法即可

         a==>filterType:返回字符串代表过滤器的类型,返回值有:

           1.pre:在请求路由之前执行

            2.route:在请求路由时调用

            3.post:请求路由之后调用, 也就是在route和errror过滤器之后调用

            4.error:处理请求发生错误时调用

        b==>filterOrder:此方法返回整型数值,通过此数值来定义过滤器的执行顺序,数字越小优先级越高。

        c==>shouldFilter:返回Boolean值,判断该过滤器是否执行。返回true表示要执行此过虑器,false不执行。

        d==>run:过滤器的业务逻辑。(类似加密,token验证可以在这里做)


Spring Cloud 分布式配置中心:

        每个微服务自已带着一个 application.yml,上百个配置文件的管理起来就很麻     烦,在Spring Cloud中,有分布式配置中心组件Spring Cloud Config来解决这个     问题,通过将配置信息同步到git上来实现

1.服务端 config server:分布式配置中心,它是一个独立的微服务应用,用来连接配置服务器并为客 户端提供获取配置信息,加密、解密信息等访问接口。

配置服务端一个分部管理一个或者多个客户端使用,所以在application.yml 中配置并且uri是git库地址

        依赖 spring-cloud-config-server


microservice-cloud-11-config-server-5001 ===> pom


    name: babosa-microservice-config #自己起的以后要用


microservice-cloud-11-config-server-5001 ===> aplication

2.客户端 config client:通过指定的服务端来管理服务的资源,以及与业务相关的配置内容,并在启动       的时候从服务端获取和加载配置信息。


config-client-controller读取信息

    bootstrap.yml配置 config

         git分支: https://github.com/zffjll/babosa-cloud-config/blob/master/babosa-microservice-config-eureka.yml

    application.yml配置client姓名



3. 配置Eureka 服务端发现


pom



启动项


 git分支:https://github.com/zffjll/babosa-cloud-config/blob/master/babosa-microservice-config-eureka.yml

bootstrap.yml



application.yml


4.正常的消费/使用端 : 



pom1


pom2

git分支:https://github.com/zffjll/babosa-cloud-config/blob/master/babosa-microservice-config-product.yml 

bootstrap  application yml


正常的使用mybatis

经过上述可以发现除了核心分布配置服务中application 设置了git uri外 其余项目均除了设置yml服务器名称外 均以bootstrap放心 加载了git中心管理application.yml配置

Spring Cloud Bus 消息总线组件

     在分布配置中心由git管理了 配置之后,如果想不重启微服务的情况下修改这些配置,就要用消息通知 mq广播通知更新

Spring Cloud Bus 被国内很多都翻译为消息总线。大家可以将它理解为管理和传播所有分布式项目中的消息即可,

其实本质是利用了MQ的广播机制在分布式的系统中传播消息,目前常用的有Kafka和RabbitMQ。



根据此图我们可以看出利用Spring Cloud Bus做配置更新的步骤:

1、提交配置后发送post方式的/bus-refresh请求给Confifig客户端

2、Confifig客户端接收到请求从Server端更新配置并且发送消息给消息总线

3、消息总线接到消息并通知给其它客户端

4、其它客户端接收到通知,请求Server端获取最新配置

5、全部客户端均获取到最新的配置

这里涉及 Postman测试工具安装/ RabbitMQ  类似框架


pom依赖




bootstrap配置

修改git中的babosa-microservice-product-config-rabbitMQ-bus1 刷新Eureka没有反应



postman 发送信息激活配置


成功

再git 配置中类emp属性该如何动态获取:


git中加入

发post信息推送没有更新 还是获取不到

给controller加@RefreshScope //可以用bus 同步 即可



成功

如果想在git配置中动态更改书库路 按属性更改不行 是因为使用了druid连接池

自定义连接池配置即可:


配置之后 将git 中datasource库更改 03 发送消息推送 

    


动态配置成功
最后编辑于
©著作权归作者所有,转载或内容合作请联系作者
平台声明:文章内容(如有图片或视频亦包括在内)由作者上传并发布,文章内容仅代表作者本人观点,简书系信息发布平台,仅提供信息存储服务。
  • 序言:七十年代末,一起剥皮案震惊了整个滨河市,随后出现的几起案子,更是在滨河造成了极大的恐慌,老刑警刘岩,带你破解...
    沈念sama阅读 227,837评论 6 531
  • 序言:滨河连续发生了三起死亡事件,死亡现场离奇诡异,居然都是意外死亡,警方通过查阅死者的电脑和手机,发现死者居然都...
    沈念sama阅读 98,196评论 3 414
  • 文/潘晓璐 我一进店门,熙熙楼的掌柜王于贵愁眉苦脸地迎上来,“玉大人,你说我怎么就摊上这事。” “怎么了?”我有些...
    开封第一讲书人阅读 175,688评论 0 373
  • 文/不坏的土叔 我叫张陵,是天一观的道长。 经常有香客问我,道长,这世上最难降的妖魔是什么? 我笑而不...
    开封第一讲书人阅读 62,654评论 1 309
  • 正文 为了忘掉前任,我火速办了婚礼,结果婚礼上,老公的妹妹穿的比我还像新娘。我一直安慰自己,他们只是感情好,可当我...
    茶点故事阅读 71,456评论 6 406
  • 文/花漫 我一把揭开白布。 她就那样静静地躺着,像睡着了一般。 火红的嫁衣衬着肌肤如雪。 梳的纹丝不乱的头发上,一...
    开封第一讲书人阅读 54,955评论 1 321
  • 那天,我揣着相机与录音,去河边找鬼。 笑死,一个胖子当着我的面吹牛,可吹牛的内容都是我干的。 我是一名探鬼主播,决...
    沈念sama阅读 43,044评论 3 440
  • 文/苍兰香墨 我猛地睁开眼,长吁一口气:“原来是场噩梦啊……” “哼!你这毒妇竟也来了?” 一声冷哼从身侧响起,我...
    开封第一讲书人阅读 42,195评论 0 287
  • 序言:老挝万荣一对情侣失踪,失踪者是张志新(化名)和其女友刘颖,没想到半个月后,有当地人在树林里发现了一具尸体,经...
    沈念sama阅读 48,725评论 1 333
  • 正文 独居荒郊野岭守林人离奇死亡,尸身上长有42处带血的脓包…… 初始之章·张勋 以下内容为张勋视角 年9月15日...
    茶点故事阅读 40,608评论 3 354
  • 正文 我和宋清朗相恋三年,在试婚纱的时候发现自己被绿了。 大学时的朋友给我发了我未婚夫和他白月光在一起吃饭的照片。...
    茶点故事阅读 42,802评论 1 369
  • 序言:一个原本活蹦乱跳的男人离奇死亡,死状恐怖,灵堂内的尸体忽然破棺而出,到底是诈尸还是另有隐情,我是刑警宁泽,带...
    沈念sama阅读 38,318评论 5 358
  • 正文 年R本政府宣布,位于F岛的核电站,受9级特大地震影响,放射性物质发生泄漏。R本人自食恶果不足惜,却给世界环境...
    茶点故事阅读 44,048评论 3 347
  • 文/蒙蒙 一、第九天 我趴在偏房一处隐蔽的房顶上张望。 院中可真热闹,春花似锦、人声如沸。这庄子的主人今日做“春日...
    开封第一讲书人阅读 34,422评论 0 26
  • 文/苍兰香墨 我抬头看了看天上的太阳。三九已至,却和暖如春,着一层夹袄步出监牢的瞬间,已是汗流浃背。 一阵脚步声响...
    开封第一讲书人阅读 35,673评论 1 281
  • 我被黑心中介骗来泰国打工, 没想到刚下飞机就差点儿被人妖公主榨干…… 1. 我叫王不留,地道东北人。 一个月前我还...
    沈念sama阅读 51,424评论 3 390
  • 正文 我出身青楼,却偏偏与公主长得像,于是被迫代替她去往敌国和亲。 传闻我的和亲对象是个残疾皇子,可洞房花烛夜当晚...
    茶点故事阅读 47,762评论 2 372