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

@作者:Sheldon地址:https://github.com/zhangxd1989

技术栈

  • 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. {

  2. "access_token": "eac56504-c4f0-4706-b72e-3dc3acdf45e9",

  3. "token_type": "bearer",

  4. "refresh_token": "da1007dc-683c-4309-965d-370b15aa4aeb",

  5. "expires_in": 3599,

  6. "scope": "read write"

  7. }

  1. 使用 access token 访问 service a 接口
curl -i -H "Authorization: Bearer eac56504-c4f0-4706-b72e-3dc3acdf45e9" http://localhost:8060/svca

返回如下数据:

  1. svca-service (172.18.0.8:8080)===>name:zhangxd

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

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

  2. "access_token": "63ff57ce-f140-482e-ba7e-b6f29df35c88",

  3. "token_type": "bearer",

  4. "refresh_token": "da1007dc-683c-4309-965d-370b15aa4aeb",

  5. "expires_in": 3599,

  6. "scope": "read write"

  7. }

  1. 刷新配置
curl -X POST -vu user:password http://localhost:8888/bus/refresh

源码下载

github.com/souyunku/sp…

如果想学习Java工程化、高性能及分布式、微服务、Spring,MyBatis,Netty源码分析的朋友可以加我的Java进阶群:318261748 群里有阿里大牛直播讲解技术,以及Java大型互联网技术的视频免费分享给大家。如果想领取spring boot和spring colud学习资料可以关注公众号“大数据技术汇”回复springboot领取下载链接。

基于 Spring Cloud 完整的微服务架构实战相关推荐

  1. Spring Cloud(5)---基于 Spring Cloud 完整的微服务架构实战

    基于 Spring Cloud 完整的微服务架构实战 技术栈 Spring boot - 微服务的入门级微框架,用来简化 Spring 应用的初始搭建以及开发过程. Eureka - 云端服务发现,一 ...

  2. 【福利】赠书:Spring Cloud与Docker微服务架构实战(第2版)

    本次福利送出好友周立的第二版书籍! 正在关注和使用Spring Cloud的朋友们不要错过哦! 内容提要 <Spring Cloud与Docker微服务架构实战(第2版)>基于Spring ...

  3. Spring Cloud与Docker微服务架构实战 PDF版 内含目录

    Spring Cloud与Docker微服务架构实战  目录 1 微服务架构概述 1 1.1 单体应用架构存在的问题1 1.2 如何解决单体应用架构存在的问题3 1.3 什么是微服务3 1.4 微服务 ...

  4. 《Spring Cloud与Docker微服务架构实战》配套代码

    不才写了本使用Spring Cloud玩转微服务架构的书,书名是<Spring Cloud与Docker微服务架构实战> - 周立,已于2017-01-12交稿.不少朋友想先看看源码,现将 ...

  5. 《Spring Cloud与Docker微服务架构实战》读书笔记

    1 微服务脚骨概述 2 SpringCloud框架 3 微服务例子 3.5 Actuator健康监控 4 微服务注册与发现Eureka 5.Ribbon负载均衡 6 Feign实现声明式REST调用 ...

  6. 《Spring Cloud 与 Docker 微服务架构实战》笔记

    前些天发现了一个巨牛的人工智能学习网站,通俗易懂,风趣幽默,忍不住分享一下给大家.点击跳转到教程. PS:springcloud系列文章见:springcloud 系列,一看就会 . 在此,只是记录细 ...

  7. Spring Cloud与Docker微服务架构实战--阅读笔记

  8. Spring Cloud Alibaba 大型微服务项目实战

    作者介绍 程序员十三,多年一线开发经验,历任高级开发工程师.后端主程.技术部门主管等职位.同时也是开源项目的爱好者和贡献者.掘金优秀作者.CSDN 博客专家.实体图书作者.专栏作者.视频讲师. 小册介 ...

  9. 微服务等于 Spring Cloud?了解微服务架构和框架

    点击上方"芋道源码",选择"设为星标" 管她前浪,还是后浪? 能浪的浪,才是好浪! 每天 8:55 更新文章,每天掉亿点点头发... 源码精品专栏 原创 | J ...

最新文章

  1. c语言链表找姓,急啊!!!求救了 C语言编一个链表,输出姓名和学号就好
  2. 【spring】第二个springmvc helloworld 以及 spring模糊路径
  3. python django model关联另一个实体类
  4. endnote中科大版区别_研究生科研入门Endnote文献管理软件使用
  5. 服务器显示器切换_尼某某 DDOS 攻击高德,致使服务器处于黑洞状态 5 个多小时:被判 16 个月...
  6. nginx 限制上传文件大小
  7. Curator实现分布式锁的基本原理-InterProcessMutex.internalLock
  8. golang 三种接口的定义方式
  9. html文件转换成dwt文件,如何把dwt页面转换成html页面
  10. 王思聪5亿投资神话破灭?旗下普思资本股权遭冻结,冻结期3年
  11. k8s高可用集群_搭建高可用集群(部署haproxy和安装docker以及其他组件)---K8S_Google工作笔记0056
  12. TDD测试驱动开发案例【水货】
  13. 4个步骤教你建立中后台后台通用权限管理系统
  14. Linux——shell编程基础笔记
  15. Microsoft edge已过期
  16. shell中的美元符号
  17. 10个 安卓应用商店开发者公司账号注册(2022最新最全)
  18. cad解除块的快捷命令_CAD解除编组及快捷键命令
  19. LARC DL笔记(二) 训练自己的img
  20. 熊市赚取被动收入:质押NFT带来高达30%收益回报!

热门文章

  1. java web核心知识_JAVA web 相关知识点
  2. 二叉搜索树的插入、删除、修剪、构造操作(leetcode701、450、669、108)
  3. ropgadgets与ret2syscall技术原理
  4. python柱形图代码_Python数据可视化:基于matplotlib绘制「条形图」
  5. Could not open lock file /var/lib/apt/lists/lock - open (13: Permission denied)
  6. ZOJ 3932——Handshakes
  7. HDU2066:一个人的旅行
  8. redis源码剖析(十一)—— Redis字符串相关函数实现
  9. Redis运维和开发学习笔记(1) Redis简介
  10. 数据可视化【九】单向数据流交互