ICode9

精准搜索请尝试: 精确搜索
首页 > 其他分享> 文章详细

Spring-微服务

2020-01-15 09:51:14  阅读:188  来源: 互联网

标签:服务 name 启动 Spring 配置 添加 yml 客户端


项目框架

功能模块介绍

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(同流水号,串联商品和订单)

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

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

 

Zipkin:

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

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

Config

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

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

服务端:(config-server)

创建config-server项目,选中config server和eureka 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、网关

 

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

 

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

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

 

标签:服务,name,启动,Spring,配置,添加,yml,客户端
来源: https://www.cnblogs.com/lixianglong/p/12195155.html

本站声明: 1. iCode9 技术分享网(下文简称本站)提供的所有内容,仅供技术学习、探讨和分享;
2. 关于本站的所有留言、评论、转载及引用,纯属内容发起人的个人观点,与本站观点和立场无关;
3. 关于本站的所有言论和文字,纯属内容发起人的个人观点,与本站观点和立场无关;
4. 本站文章均是网友提供,不完全保证技术分享内容的完整性、准确性、时效性、风险性和版权归属;如您发现该文章侵犯了您的权益,可联系我们第一时间进行删除;
5. 本站为非盈利性的个人网站,所有内容不会用来进行牟利,也不会利用任何形式的广告来间接获益,纯粹是为了广大技术爱好者提供技术内容和技术思想的分享性交流网站。

专注分享技术,共同学习,共同进步。侵权联系[81616952@qq.com]

Copyright (C)ICode9.com, All Rights Reserved.

ICode9版权所有