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

2017 年 12 月 24 日 开源中国 鹏磊


作者:鹏磊

首发:搜库云


本项目是一个基于 Spring Boot、Spring Cloud、Spring Oauth2 和 Spring Cloud Netflix 等框架构建的微服务项目。


技术栈


  • 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


体系架构


应用组件



启动项目


  • 使用 Docker 快速启动

    1. 配置 Docker 环境

    2. mvn clean package 打包项目及 Docker 镜像

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

  • 本地手动启动

    1. 配置 rabbitmq

    2. 修改 hosts 将主机名指向到本地
      127.0.0.1 registry config monitor rabbitmq auth-service
      或者修改各服务配置文件中的相应主机名为本地 ip

    3. 启动 registry、config、monitor、zipkin

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


项目预览


注册中心


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



监控


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


控制面板



应用注册历史



Turbine Hystrix面板



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



计数器



查看和修改环境变量



管理 Logback 日志级别



查看并使用 JMX



查看线程



认证历史



查看 Http 请求轨迹



Hystrix 面板



链路跟踪


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


控制面板



链路跟踪明细



服务依赖关系



RabbitMQ 监控


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



接口测试


  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"


返回如下格式数据:



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



返回如下数据:



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



返回如下数据:



  1. 使用 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:



  1. 刷新配置



源码下载


https://github.com/souyunku/spring-boot-cloud.git


Contact


  • 作者:鹏磊

  • 出处:http://www.ymq.io

  • Email:admin@souyunku.com

  • 版权归作者所有,转载请注明出处



推荐阅读

思维导图 | HTTP 超文本协议,让 HTTP 不再难懂

2018 最具就业前景的 7 大编程语言,前三无悬念?

要火!Python 纳入高考科目;PHP、JS 等主流编程语言爆安全漏洞

如何愉快的使用 MQ - 详述各种功能场景

Java 10 新特性解密,引入类型推断机制

点击“阅读原文”查看更多精彩内容

登录查看更多
1

相关内容

【2020新书】Kafka实战:Kafka in Action,209页pdf
专知会员服务
67+阅读 · 2020年3月9日
《代码整洁之道》:5大基本要点
专知会员服务
49+阅读 · 2020年3月3日
【新书】Java企业微服务,Enterprise Java Microservices,272页pdf
TensorFlow Lite指南实战《TensorFlow Lite A primer》,附48页PPT
专知会员服务
69+阅读 · 2020年1月17日
【干货】大数据入门指南:Hadoop、Hive、Spark、 Storm等
专知会员服务
95+阅读 · 2019年12月4日
在K8S上运行Kafka合适吗?会遇到哪些陷阱?
DBAplus社群
9+阅读 · 2019年9月4日
基于Prometheus的K8S监控在小米的落地
DBAplus社群
16+阅读 · 2019年7月23日
工行基于MySQL构建分布式架构的转型之路
炼数成金订阅号
15+阅读 · 2019年5月16日
浅谈 Kubernetes 在生产环境中的架构
DevOps时代
11+阅读 · 2019年5月8日
基于TensorFlow的深度学习实战
七月在线实验室
9+阅读 · 2018年4月25日
大数据流处理平台的技术选型参考
架构文摘
4+阅读 · 2018年3月14日
EfficientDet: Scalable and Efficient Object Detection
Arxiv
6+阅读 · 2019年11月20日
Real-time Scalable Dense Surfel Mapping
Arxiv
5+阅读 · 2019年9月10日
Arxiv
4+阅读 · 2016年12月29日
Arxiv
5+阅读 · 2015年9月14日
VIP会员
相关资讯
在K8S上运行Kafka合适吗?会遇到哪些陷阱?
DBAplus社群
9+阅读 · 2019年9月4日
基于Prometheus的K8S监控在小米的落地
DBAplus社群
16+阅读 · 2019年7月23日
工行基于MySQL构建分布式架构的转型之路
炼数成金订阅号
15+阅读 · 2019年5月16日
浅谈 Kubernetes 在生产环境中的架构
DevOps时代
11+阅读 · 2019年5月8日
基于TensorFlow的深度学习实战
七月在线实验室
9+阅读 · 2018年4月25日
大数据流处理平台的技术选型参考
架构文摘
4+阅读 · 2018年3月14日
Top
微信扫码咨询专知VIP会员