基于 Spring Cloud 完整的微服务架构实战

扫码关注公众号:Java 技术驿站

发送:vip
将链接复制到本浏览器,永久解锁本站全部文章

【公众号:Java 技术驿站】 【加作者微信交流技术,拉技术群】

技术栈

Spring boot – 微服务的入门级微框架,用来简化 Spring 应用的初始搭建以及开发过程。

Eureka – 云端服务发现,一个基于 REST 的服务,用于定位服务,以实现云端中间层服务发现和故障转移。

Spring Cloud Config – 配置管理工具包,让你可以把配置放到远程服务器,集中化管理集群配置,目前支持本地存储、Git 以及 Subversion。

Hystrix – 熔断器,容错管理工具,旨在通过熔断机制控制服务和第三方库的节点,从而对延迟和故障提供更强大的容错能力。

Zuul – Zuul 是在云平台上提供动态路由,监控,弹性,安全等边缘服务的框架。Zuul 相当于是设备和 Netflix 流应用的 Web 网站后端所有请求的前门。

Spring Cloud Bus – 事件、消息总线,用于在集群(例如,配置变化事件)中传播状态变化,可与 Spring Cloud Config 联合实现热部署。

Spring Cloud Sleuth – 日志收集工具包,封装了 Dapper 和 log-based 追踪以及 Zipkin 和 HTrace 操作,为 SpringCloud 应用实现了一种分布式追踪解决方案。

Ribbon – 提供云端负载均衡,有多种负载均衡策略可供选择,可配合服务发现和断路器使用。

Turbine – Turbine 是聚合服务器发送事件流数据的一个工具,用来监控集群下 hystrix 的 metrics 情况。

Spring Cloud Stream – Spring 数据流操作开发包,封装了与 Redis、Rabbit、Kafka 等发送接收消息。

Feign – Feign 是一种声明式、模板化的 HTTP 客户端。

Spring Cloud OAuth2 – 基于 Spring Security 和 OAuth2 的安全工具包,为你的应用程序添加安全控制。

应用架构

该项目包含 8 个服务

registry – 服务注册与发现

config – 外部配置

monitor – 监控

zipkin – 分布式跟踪

gateway – 代理所有微服务的接口网关

auth-service – OAuth2 认证服务

svca-service – 业务服务A

svcb-service – 业务服务B

体系架构

技术栈

Spring boot – 微服务的入门级微框架,用来简化 Spring 应用的初始搭建以及开发过程。

Eureka – 云端服务发现,一个基于 REST 的服务,用于定位服务,以实现云端中间层服务发现和故障转移。

Spring Cloud Config – 配置管理工具包,让你可以把配置放到远程服务器,集中化管理集群配置,目前支持本地存储、Git 以及 Subversion。

Hystrix – 熔断器,容错管理工具,旨在通过熔断机制控制服务和第三方库的节点,从而对延迟和故障提供更强大的容错能力。

Zuul – Zuul 是在云平台上提供动态路由,监控,弹性,安全等边缘服务的框架。Zuul 相当于是设备和 Netflix 流应用的 Web 网站后端所有请求的前门。

Spring Cloud Bus – 事件、消息总线,用于在集群(例如,配置变化事件)中传播状态变化,可与 Spring Cloud Config 联合实现热部署。

Spring Cloud Sleuth – 日志收集工具包,封装了 Dapper 和 log-based 追踪以及 Zipkin 和 HTrace 操作,为 SpringCloud 应用实现了一种分布式追踪解决方案。

Ribbon – 提供云端负载均衡,有多种负载均衡策略可供选择,可配合服务发现和断路器使用。

Turbine – Turbine 是聚合服务器发送事件流数据的一个工具,用来监控集群下 hystrix 的 metrics 情况。

Spring Cloud Stream – Spring 数据流操作开发包,封装了与 Redis、Rabbit、Kafka 等发送接收消息。

Feign – Feign 是一种声明式、模板化的 HTTP 客户端。

Spring Cloud OAuth2 – 基于 Spring Security 和 OAuth2 的安全工具包,为你的应用程序添加安全控制。

应用架构

该项目包含 8 个服务

registry – 服务注册与发现

config – 外部配置

monitor – 监控

zipkin – 分布式跟踪

gateway – 代理所有微服务的接口网关

auth-service – OAuth2 认证服务

svca-service – 业务服务A

svcb-service – 业务服务B

体系架构
技术栈

Spring boot – 微服务的入门级微框架,用来简化 Spring 应用的初始搭建以及开发过程。

Eureka – 云端服务发现,一个基于 REST 的服务,用于定位服务,以实现云端中间层服务发现和故障转移。

Spring Cloud Config – 配置管理工具包,让你可以把配置放到远程服务器,集中化管理集群配置,目前支持本地存储、Git 以及 Subversion。

Hystrix – 熔断器,容错管理工具,旨在通过熔断机制控制服务和第三方库的节点,从而对延迟和故障提供更强大的容错能力。

Zuul – Zuul 是在云平台上提供动态路由,监控,弹性,安全等边缘服务的框架。Zuul 相当于是设备和 Netflix 流应用的 Web 网站后端所有请求的前门。

Spring Cloud Bus – 事件、消息总线,用于在集群(例如,配置变化事件)中传播状态变化,可与 Spring Cloud Config 联合实现热部署。

Spring Cloud Sleuth – 日志收集工具包,封装了 Dapper 和 log-based 追踪以及 Zipkin 和 HTrace 操作,为 SpringCloud 应用实现了一种分布式追踪解决方案。

Ribbon – 提供云端负载均衡,有多种负载均衡策略可供选择,可配合服务发现和断路器使用。

Turbine – Turbine 是聚合服务器发送事件流数据的一个工具,用来监控集群下 hystrix 的 metrics 情况。

Spring Cloud Stream – Spring 数据流操作开发包,封装了与 Redis、Rabbit、Kafka 等发送接收消息。

Feign – Feign 是一种声明式、模板化的 HTTP 客户端。

Spring Cloud OAuth2 – 基于 Spring Security 和 OAuth2 的安全工具包,为你的应用程序添加安全控制。

应用架构

该项目包含 8 个服务

registry – 服务注册与发现

config – 外部配置

monitor – 监控

zipkin – 分布式跟踪

gateway – 代理所有微服务的接口网关

auth-service – OAuth2 认证服务

svca-service – 业务服务A

svcb-service – 业务服务B

体系架构

技术栈

Spring boot – 微服务的入门级微框架,用来简化 Spring 应用的初始搭建以及开发过程。

Eureka – 云端服务发现,一个基于 REST 的服务,用于定位服务,以实现云端中间层服务发现和故障转移。

Spring Cloud Config – 配置管理工具包,让你可以把配置放到远程服务器,集中化管理集群配置,目前支持本地存储、Git 以及 Subversion。

Hystrix – 熔断器,容错管理工具,旨在通过熔断机制控制服务和第三方库的节点,从而对延迟和故障提供更强大的容错能力。

Zuul – Zuul 是在云平台上提供动态路由,监控,弹性,安全等边缘服务的框架。Zuul 相当于是设备和 Netflix 流应用的 Web 网站后端所有请求的前门。

Spring Cloud Bus – 事件、消息总线,用于在集群(例如,配置变化事件)中传播状态变化,可与 Spring Cloud Config 联合实现热部署。

Spring Cloud Sleuth – 日志收集工具包,封装了 Dapper 和 log-based 追踪以及 Zipkin 和 HTrace 操作,为 SpringCloud 应用实现了一种分布式追踪解决方案。

Ribbon – 提供云端负载均衡,有多种负载均衡策略可供选择,可配合服务发现和断路器使用。

Turbine – Turbine 是聚合服务器发送事件流数据的一个工具,用来监控集群下 hystrix 的 metrics 情况。

Spring Cloud Stream – Spring 数据流操作开发包,封装了与 Redis、Rabbit、Kafka 等发送接收消息。

Feign – Feign 是一种声明式、模板化的 HTTP 客户端。

Spring Cloud OAuth2 – 基于 Spring Security 和 OAuth2 的安全工具包,为你的应用程序添加安全控制。

应用架构

该项目包含 8 个服务

registry – 服务注册与发现

config – 外部配置

monitor – 监控

zipkin – 分布式跟踪

gateway – 代理所有微服务的接口网关

auth-service – OAuth2 认证服务

svca-service – 业务服务A

svcb-service – 业务服务B

体系架构

2019101710026\_1.png

应用组件

2019101710026\_2.png

启动项目

使用 Docker 快速启动

配置 Docker 环境

mvn clean package 打包项目及 Docker 镜像

在项目根目录下执行 docker-compose up -d 启动所有项目

本地手动启动

配置 rabbitmq

修改 hosts 将主机名指向到本地

127.0.0.1 registry config monitor rabbitmq auth-service

或者修改各服务配置文件中的相应主机名为本地 ip

启动 registry、config、monitor、zipkin

启动 gateway、auth-service、svca-service、svcb-service

项目预览

注册中心

访问 http://localhost:8761/ 默认账号 user,密码 password

2019101710026\_3.png

监控

访问 http://localhost:8040/ 默认账号 admin,密码 admin

控制面板

bp.jpg
2019101710026\_4.png

应用注册历史

2019101710026\_5.png

Turbine Hystrix面板

2019101710026\_6.png

应用信息、健康状况、垃圾回收等详情

2019101710026\_7.png

计数器

2019101710026\_8.png

查看和修改环境变量

2019101710026\_9.png

管理 Logback 日志级别

2019101710026\_10.png

查看并使用 JMX

2019101710026\_11.png

查看线程

2019101710026\_12.png

认证历史

2019101710026\_13.png

查看 Http 请求轨迹

2019101710026\_14.png

Hystrix 面板

2019101710026\_15.png

链路跟踪

访问 http://localhost:9411/ 默认账号 admin,密码 admin

控制面板

2019101710026\_16.png

链路跟踪明细

2019101710026\_17.png

服务依赖关系

2019101710026\_18.png

RabbitMQ 监控

Docker 启动访问 http://localhost:15673/ 默认账号 guest,密码 guest(本地 rabbit 管理系统默认端口15672)

接口测试

在此我向大家推荐一个架构学习交流群。交流学习群号:897889510 里面会分享一些资深架构师录制的视频录像:有Spring,MyBatis,Netty源码分析,高并发、高性能、分布式、微服务架构的原理,JVM性能优化、分布式架构等这些成为架构师必备的知识体系。还能领取免费的学习资源,目前受益良多

2019101710026\_19.png

接口测试

1.获取 Token

    curl -X POST -vu client:secret http://localhost:8060/
    uaa/oauth/token -H "Accept: application/json" -d "password=password&username=anil&grant_type=password
    &scope=read%20write"

返回如下格式数据:

    {
    "access_token": "eac56504-c4f0-4706-b72e-3dc3acdf45e9",
    "token_type": "bearer",
    "refresh_token": "da1007dc-683c-4309-965d-370b15aa4aeb",
    "expires_in": 3599,
    "scope": "read write"
    }

2.使用 access token 访问 service a 接口

    curl -i -H "Authorization: Bearer eac56504-c4f0-4706-b72e-3dc3acdf45e9" http://localhost:8060/svca 

返回如下数据:

    svca-service (172.18.0.8:8080)===>name:zhangxd
    svcb-service (172.18.0.2:8070)===>Say Hello 

3.使用 access token 访问 service b 接口

    curl -i -H "Authorization: Bearer eac56504-c4f0-4706-b72e-3dc3acdf45e9" http://localhost:8060/svcb 

返回如下数据:

    svcb-service (172.18.0.2:8070)===>Say Hello 

4.使用 refresh token 刷新 token

    curl -X POST -vu client:secret http://localhost:8060/uaa/oauth/token -H "Accept: application/json" -d 
    "grant_type=refresh_token&refresh_token=da1007dc-683c-4309-965d-370b15aa4aeb" 

返回更新后的 Token:

    {
    "access_token": "63ff57ce-f140-482e-ba7e-b6f29df35c88",
    "token_type": "bearer",
    "refresh_token": "da1007dc-683c-4309-965d-370b15aa4aeb",
    "expires_in": 3599,
    "scope": "read write"
    } 

5.刷新配置

    curl -X POST -vu user:password http://localhost:8888/bus/refresh 

来源:[]()

赞(0) 打赏
版权归原创作者所有,任何形式的转载请联系博主:daming_90:Java 技术驿站 » 基于 Spring Cloud 完整的微服务架构实战

评论 抢沙发

  • 昵称 (必填)
  • 邮箱 (必填)
  • 网址

觉得文章有用就打赏一下文章作者

支付宝扫一扫打赏

微信扫一扫打赏