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

     

  • 相关阅读:
    C# 不用添加WebService引用,调用WebService方法
    贪心 & 动态规划
    trie树 讲解 (转载)
    poj 2151 Check the difficulty of problems (检查问题的难度)
    poj 2513 Colored Sticks 彩色棒
    poj1442 Black Box 栈和优先队列
    啦啦啦
    poj 1265 Area(pick定理)
    poj 2418 Hardwood Species (trie树)
    poj 1836 Alignment 排队
  • 原文地址:https://www.cnblogs.com/lixianglong/p/12195155.html
Copyright © 2011-2022 走看看