zoukankan      html  css  js  c++  java
  • Spring-微服务

    项目框架

    功能模块介绍

    Eureka:https://baike.baidu.com/item/Eureka/22402835?fr=aladdin

    Ribbon:https://www.jianshu.com/p/1bd66db5dc46

    Feign:https://www.jianshu.com/p/8c7b92b4396c

    Hystrix:https://www.cnblogs.com/xiong2ge/p/hystrix_faststudy.html

    Zuul:https://blog.csdn.net/admin1973/article/details/78740390

    搭建服务注册中心-服务端(Eureka)

    创建eureka_server项目,选中eureka Server

    配置application.yml

    启动类添加注解:

    搭建服务注册中心-客户端

    创建客户端项目,勾选Spring Web和Eureka Discovery client

    配置application.yml

    客户端不需要在启动类添加注解,因为添加的依赖已经完成了注册

    --添加两个客户端,商品客户端和订单客户端

    商品客户端:

                  包含了两个方法,展示所有商品和根据id查找商品

    商品对象

    商品信息

    订单客户端:

    订单对象

    方法

    订单终获取商品信息---见下方Ribbon实现

    Ribbon:

    使用:启动类终进行添加

    实现类:

    调用方式一:

    调用方式二:

    Feign:

    启动类添加

    订单客户端实现商品客户端(注意name一定要和商品客户端的命名一致)

    方法实现类

    工具类实现

    如果使用了@RequestBody(product的findById),要用PostMapping,

    参数用@RequestBody("id") int id来进行调用

    Hystrix:

    启动类添加

    配置application.yml,开启熔断处理,新版本默认不开启

    报警机制,在控制器中控制(降级)

    熔断处理

    dashboard监控仪表盘

    配置文件添加

    启动类添加

    Zuul:

    API Gateway ,是系统唯一对外的入口,介于客户端和服务端之间的中间层,处理非业务功能,提供路由请求、鉴权(是否登录等)、监控、缓存、限流等功能

    启动类添加:

    自定义网关名:

    通过网关访问子项目:

    权限过滤:(执行逻辑中没有获取到相应的参数时,显示为最后一张图)

    共享RequestContext,上下文对象

    Zuul过滤器(拦截器):

    Zuul限流,产生令牌,如果令牌使用完了则不允许再进行访问,只允许多少人同时在线、访问等

    分布式链路追踪系统Sleuth和zipkin

    暂时没发现什么作用。只是单纯的控制台输出什么部分

    Sleuth

    主要用于日志埋点

     

    在相关的服务中添加依赖(商品、订单)

     

    配置追踪信息

     

     

     

     

     

    [order-service,96f95a0dd81fe3ab,852ef4cfcdecabf3,false]

    第一个值:spring.application.name的值

    第二个值:96f95a0dd81fe3ab sleuth生成的一个ID,叫Trace ID,用来标识一条请求链路,一条请求链路中包含一个Trace ID,多个Span ID(同流水号,串联商品和订单)

    第三个值:852ef4cfcdecabf3spanid 基本的工作单元,获取元数据,如发送一个http

    第四个值:false,是否要将该信息输出到zipkin服务中来收集和展示。

     

    Zipkin

    结合docker,启动,得到一个可视化端口,访问即可

    该项需要电脑结合docker进行使用,不然展示不出来,后续开发学习可以结合视频参考。

    Config

    统一管理配置,,快速切换各个环境的配置

    相关产品:百度的disconf、阿里的diamand

    服务端:(config-server

    创建config-server项目,选中config servereureka client

     

     

    启动类添加注解

     

    配置文件(服务名称、git存储的配置文件地址和账户信息、注册中心地址)

     

    /{name}-{profiles}.properties

    /{name}-{profiles}.yml

    /{name}-{profiles}.json

    /{label}/{name}-{profiles}.yml

     

    name 服务器名称

    profile 环境名称,开发、测试、生产

    lable 仓库分支、默认master分支

     

    文件是根据前缀进行匹配的,如下方路径也可以访问

    不区分格式的,会进行自动转化。

    注意:文件的语法问题不能出错,如果有问题,会出错

     

     

     

    超时和分支配置

     

    配置配置中心。Enabled是进行启用,默认不启用,profile是以什么为后缀的文件,label是分支,最好是用分支进行区分

     

    注意:此时运行程序没有错误,但是会发现端口号访问不了,这是由于读取文件的时候出错

    将项目文件application.yml改成bootstrap.yml再进行启动即可二访问,这是启动顺序的原因

    Spring Cloud Bus

    以商品服务为例(暂时只用于读取刷新git仓库中的配置文件)

    什么是消息?一个事件,需要广播或者单独传递给某一个接口

    为什么使用?配置进行更新了,但是其它系统不知道是否更新

     

    推荐使用RabbitMQ,安装RabbitMQ

     

     

     

    添加依赖

     

     

    添加配置信息:默认已经有该值

     

    这时什么都没有修改

    需要在使用的位置添加注解

     

    此时会发现配置中心访问文件已经进行了修改,但是项目读取还没有修改

     

    进行刷新

     

    此时项目读取也有了值,项目也没有重启

     

    只要用到了git中的文件属性,并且后期需要修改,需要在类上方加注解

    @RefreshScope

    注意启动顺序

    1、注册中心

    2、配置中心(只有注册成功之后才能启动下方的服务)

    3、对应的服务:商品服务、订单服务

    4、网关

     

    这时已经设置为优先读取仓库中的文件

     

    后续还有关于微服务和dockerredis、云服务器、域名、进行打包发布的操作,由于环境原因,后续没有进行学习(第十二章往后),课程地址

    http://i.xue.taobao.com/detail.htm?spm=a2174.7789578.4.3.dpAvAZ&courseId=100442

     

  • 相关阅读:
    BZOJ 1202 狡猾的商人 差分约束or带权并查集
    BZOJ 1270 雷涛的小猫 dp
    Spring Cloud探路(三)REST 客户端Feign
    AWS Credentials 使用
    Spring Cloud探路(二) Erueka客户端的建立
    Spring Cloud探路(一) Erueka服务器的建立
    Spring-Mybatis 异常记录(1)
    Amazon Kinesis Producer Library 使用记录
    MQTT开发小记(一)
    利用VSCode进行.Net Core初尝试
  • 原文地址:https://www.cnblogs.com/lixianglong/p/12195155.html
Copyright © 2011-2022 走看看