基于 Spring Cloud 完整的微服务架构实战
本项目是一个基于 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 快速启动
- 配置 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
监控
访问 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)
接口测试
- 获取 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"
- }
- 使用 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
- 使用 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
- 使用 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"
- }
- 刷新配置
curl -X POST -vu user:password http://localhost:8888/bus/refresh
转自:https://blog.csdn.net/m0_37803704/article/details/79677111
基于 Spring Cloud 完整的微服务架构实战的更多相关文章
- 《Spring Cloud与Docker微服务架构实战》配套代码
不才写了本使用Spring Cloud玩转微服务架构的书,书名是<Spring Cloud与Docker微服务架构实战> - 周立,已于2017-01-12交稿.不少朋友想先看看源码,现将 ...
- Spring Cloud与Docker微服务架构实战 PDF版 内含目录
Spring Cloud与Docker微服务架构实战 目录 1 微服务架构概述 1 1.1 单体应用架构存在的问题1 1.2 如何解决单体应用架构存在的问题3 1.3 什么是微服务3 1.4 微服务 ...
- Spring Cloud与Docker微服务架构实战 PDF
电子版百度云下载 链接: https://pan.baidu.com/s/115u011CJ8MZzJx_NqutyTQ 提取码: 关注公众号[GitHubCN]回复2019获取 本书的代码 共计70 ...
- Spring Cloud与Docker——微服务架构概述
Spring Cloud与Docker--微服务架构概述 单体应用架构概述 微服务概述 微服务的特性 微服务架构的优点 微服务面临的挑战 微服务的设计原则 单体应用架构概述 传统的服务发布都是采用单体 ...
- 基于spring cloud OAuth2的微服务授权验证服务搭建的一些坑, 包括401,client_secret,invalid_scope等问题
一 先贴成功图,用的是springcloud Finchley.SR1版本,springboot版本2.0.6 问题一: 返回401, Unauthorized 出现这个问题原因很多:首先确保方法开启 ...
- 从 Spring Cloud 看一个微服务框架的「五脏六腑」
原文:https://webfe.kujiale.com/spring-could-heart/ Spring Cloud 是一个基于 Spring Boot 实现的微服务框架,它包含了实现微服务架构 ...
- 基于Golang设计一套微服务架构[转]
article- @嘟嘟噜- May/26/2018 18:35:30 如何基于Golang设计一套微服务架构 微服务(Microservices),这个近几年我们经常听到.那么现在市面上的的微服 ...
- 从 Spring Cloud 看一个微服务框架的「五脏六腑」(转)
Spring Cloud 是一个基于 Spring Boot 实现的微服务框架,它包含了实现微服务架构所需的各种组件. 本文将从 Spring Cloud 出发,分两小节讲述微服务框架的「五脏六腑」: ...
- SpringCloud(9)使用Spring Cloud OAuth2保护微服务系统
一.简介 OAth2是一个标准的授权协议. 在认证与授权的过程中,主要包含以下3种角色. 服务提供方 Authorization Server. 资源持有者 Resource Server. 客户端 ...
随机推荐
- html的进一步了解(更新中···)
(接上一次) 属性:表示事物的一些特征 属性又可分为两种: 标签属性和样式属性 两者的区别: 位置不一样 样式属性写在style中 标签属性写在标签内 写法不一样 样式属性是属性:属性值 标签属性是属 ...
- php高级开发参考地址
高级开发 : http://www.cnblogs.com/bananaplan/p/The-Right-Way-For-PHPer.html
- (转)开源项目t-io
石墨文档:https://shimo.im/docs/tHwJJcvKl2AIiCZD/ (二期)18.开源t-io项目解读 [课程18]BIO....AIO.xmind0.4MB [课程18]t-i ...
- (转)Shiro学习
(二期)13.权限框架shiro讲解 [课程13]自定义Realm.xmind36.8KB [课程13]用户授权流程.xmind0.2MB [课程13]shiro简介.xmind0.3MB [课程13 ...
- C# 禁止任务管理器关闭
http://www.cnblogs.com/luomingui/archive/2011/06/25/2090130.html 测试了好像没用的.不知道什么原因
- 论文笔记之:Semi-supervised Classification with Graph Convolutional Networks
Semi-supervised Classification with Graph Convolutional Networks 2018-01-16 22:33:36 1. 文章主要思想: 2. ...
- [CodeForces - 276A] Lunch Rush
题目链接:http://codeforces.com/problemset/problem/276/A 从这n个输入中求最大值,注意 和 k的比较,定义一个maxn,对每个输入进行计算即可. AC代码 ...
- Linux 时间矫正命令
Linux 时间矫正 sudo ntpdate -u ntp.api.bz 第一使用可能提示ntpdate没安装,用以下命令安装即可 sudo apt install ntpdate
- HDU 6061 RXD and functions(NTT)
题意 给定一个\(n\) 次的 \(f\) 函数,向右移动 \(m\) 次得到 \(g\) 函数,第 \(i\) 次移动长度是 \(a_i\) ,求 \(g\) 函数解析式的各项系数,对 ...
- Kafka、RabbitMQ、RocketMQ等消息中间件的对比
Kafka 是LinkedIn开源的分布式发布-订阅消息系统,目前归属于Apache定级项目.Kafka主要特点是基于Pull的模式来处理消息消费,追求高吞吐量,一开始的目的就是用于日志收集和传输.0 ...