# spring-cloud-microservice-examples
spring-cloud-microservice-examples
## 说明
目前该项目实现了 zuul(路由模块), config-server(配置管理), eureka server(服务注册和发现), zipkin(服务调用追踪),hystrix, turbine stream (熔断分析)
simple-service,simple-serviceB两个待发现的服务
simple-ui (一个用angular写的前端页面)
路由功能实现在 cloud-api-gateway 模块,注册到eureka server上面,所有的请求访问 http://localhost:5555, 然后根据路由规则
```
zuul.routes.api-a.path: /cloud-simple-service/**
zuul.routes.api-a.serviceId: cloud-simple-service
zuul.routes.api-b.path: /cloud-simple-serviceB/**
zuul.routes.api-b.serviceId: cloud-simple-serviceB
zuul.routes.api-ui.path: /cloud-simple-ui/**
zuul.routes.api-ui.serviceId: cloud-simple-ui
```
分别请求到 注册到eureka server的cloud-simple-service 和 cloud-simple-serviceB服务。
服务的架构图:
![流程图](https://docs.google.com/drawings/d/1kb_2cLW-KcwhWfmu-iburNTCKKuH7HGUEdQCKCZMgZE/pub?w=960&h=720)
---
## 使用指南
* 先决条件
本机安装rabbitmq,并启动
```
rabbitmq-server
```
本机安装mysql,并启动且创建dev和test数据库,并分别创建表
```
mysql.server start
mysql -uroot
CREATE TABLE `user` (
`id` int(11) NOT NULL,
`username` varchar(255) NOT NULL
) ENGINE=InnoDB DEFAULT CHARSET=utf8
dev数据库的user表中插入数据
INSERT INTO `user` VALUES (1,'dev1'),(2,'dev2'),(3,'dev3');
test数据库的user表中插入数据
INSERT INTO `user` VALUES (1,'test1'),(2,'test2'),(3,'test3');
```
* 运行各模块
```
cd cloud-api-gateway
mvn spring-boot:run #端口5555
cd cloud-config-server
mvn spring-boot:run #端口8888
cd cloud-eureka-server
mvn spring-boot:run #端口8761
cd cloud-simple-service
mvn spring-boot:run #端口8081
cd cloud-simple-service
mvn spring-boot:run --server.port=8082 # cloud-simple-service 以8082端口再次启动服务
cd cloud-simple-ui
mvn spring-boot:run #端口8090
cd cloud-zipkin
mvn spring-boot:run #端口9966
```
* 打开浏览器输入网址并浏览效果
```
查看Eureka Server
http://localhost:8761 #查看eureka
```
![Eureka Server](https://drive.google.com/uc?id=0BxyRSlBgU-ShX1dEdG5YSi10OEE)
---
```
请求simple service, simple service2, simple serviceB
http://localhost:8081/user #simple service
结果:
[
{
id: 1,
username: "dev1"
},
{
id: 2,
username: "dev2"
},
{
id: 3,
username: "dev3"
}
]
http://localhost:8082/user #simple service2
结果:
[
{
id: 1,
username: "dev1"
},
{
id: 2,
username: "dev1"
},
{
id: 3,
username: "dev1"
}
]
http://localhost:8091/user #simple serviceB
结果:
Result from simpleserviceB
```
本项目实现了通过spring-cloud-bus, 传播config-server中config的变化.下面动手验证之.
1. 下载配置git repository
```
git clone git@github.com:zpng/spring-cloud-config-demo.git
```
根目录下有个cloud-config-repo目录,该目录下有两个文件:
cloud-simple-service-dev.properties
cloud-simple-service-test.properties
分别是cloud-simple-service在 dev和test环境下的配置信息
cloud-simple-service-dev.properties内容:
```
mysqldb.datasource.url=jdbc\:mysql\://localhost\:3306/dev?useUnicode\=true&characterEncoding\=utf-8
mysqldb.datasource.username=root
mysqldb.datasource.password=
logging.level.org.springframework.web:DEBUG
```
cloud-simple-service-test.properties内容:
```
mysqldb.datasource.url=jdbc\:mysql\://localhost\:3306/test?useUnicode\=true&characterEncoding\=utf-8
mysqldb.datasource.username=root
mysqldb.datasource.password=
logging.level.org.springframework.web:DEBUG
```
1. 修改 cloud-simple-service-dev.properties 内容,
```
mysql url中使用的dev数据库变为test数据库
mysqldb.datasource.url=jdbc\:mysql\://localhost\:3306/dev?useUnicode\=true&characterEncoding\=utf-8
->
mysqldb.datasource.url=jdbc\:mysql\://localhost\:3306/test?useUnicode\=true&characterEncoding\=utf-8
git add -A
git commit -m "MOD: update config"
git push origin master #将修改push到git repositoy
```
1. 此时并需要重启config-server或者simple-service,只需要发送一个POST请求到config-server,并通过bus传播到使用该配置文件的服务中.
```
curl -X POST http://localhost:8888/bus/refresh #(config-server启动在8888端口)
```
此时刷新前端页面
```
http://localhost:8081/user #simple service
http://localhost:8082/user #simple service2
```
发现数据都已变成:
```
[
{
id: 1,
username: "test1"
},
{
id: 2,
username: "test2"
},
{
id: 3,
username: "test3"
}
]
```
---
1. 验证路由逻辑
cloud-api-gateway服务使用了zuul进行请求转发,转发规则如下:
```
# routes to serviceId
zuul.routes.api-a.path: /cloud-simple-service/**
zuul.routes.api-a.serviceId: cloud-simple-service
zuul.routes.api-b.path: /cloud-simple-serviceB/**
zuul.routes.api-b.serviceId: cloud-simple-serviceB
zuul.routes.api-ui.path: /cloud-simple-ui/**
zuul.routes.api-ui.serviceId: cloud-simple-ui
```
并且zuul服务中进行了token验证,需要请求参数中包含accessToken,accessToken可以为任意值,如果不包含该参数则请求不能
转发过去.
```
http://localhost:5555/cloud-simple-ui/users?accessToken=test
结果:
[
{
id: 1,
username: "test1"
},
{
id: 2,
username: "test2"
},
{
id: 3,
username: "test3"
}
]
http://localhost:5555/cloud-simple-serviceB/user?accessToken=tbbsxxxxd
结果: Result from simpleserviceB
http://localhost:5555/cloud-simple-service/user?accessToken=xxxdaew
结果:
[
{
id: 1,
username: "test1"
},
{
id: 2,
username: "test2"
},
{
id: 3,
username: "test3"
}
]
```
可见zuul已经完全发挥了它的路由作用.
1. Hystrix
Hystrix是熔断器, Hystrx Dashboard实现了监控单个Hystrix stream的功能.
```
http://localhost:8022/hystrix/
```
打开后页面如下:
![hystrix stream页面](https://drive.google.com/uc?id=0BxyRSlBgU-ShTG1QZUpSc1hCV2c)
在其中输入
```
http://localhost:8090/hystrix.stream
```
(cloud-simple-ui服务),即可监控该服务的stream,如下图
![simple-ui-hystrix-stream](https://drive.google.com/uc?id=0BxyRSlBgU-ShUmRwNzluRWhxNmM)
注意需要请求几次cloud-simple-ui服务,该图上才会有结果.
1. Turbine
本示例使用了turbine-amqp, 然后各个需要统计hystrix stream的微服务,包含依赖
```
<!--for turbine stream-->
<dependency>
<groupId>org.springframework.cloud</groupId>
<artifactId>spring-cloud-netflix-hystrix-stream</artifactId>
</dependency>
<dependency>
<groupId>org.springframework.cloud</groupId>
<artifactId>spring-cloud-starter-stream-rabbit</artifactId>
</dependency>
```
即可将stream 发送到rabbitmq队列,然后turbine stream项目获取这些stream, 然后显示在图示上,这样跟之前的区别是可以监控所有
的微服务,而不是单个主机的stream.
同样打开
```
http://localhost:8022/hystrix/
```
在其中输入
```
http://localhost:8989/turbine.strea
没有合适的资源?快使用搜索试试~ 我知道了~
使用spring cloud代建完整的分布式微服务架构
共128个文件
java:35个
yaml:18个
xml:17个
4星 · 超过85%的资源 需积分: 46 298 下载量 104 浏览量
2017-04-14
11:19:23
上传
评论 11
收藏 355KB ZIP 举报
温馨提示
使用spring cloud代建完整的分布式微服务架构,包括spring security oauth2权限控制,docker,config动态修改配置文件,eureka服务发现,zuul路由,实现服务和服务之间的调用。等等
资源推荐
资源详情
资源评论
收起资源包目录
使用spring cloud代建完整的分布式微服务架构 (128个子文件)
1 2KB
7.add-finagle-thrift-zipkin-trace 41B
5.add-hystrix-turbine-amqp 41B
6.add-simple-thrift-client-server 41B
2.add-spring-cloud-bus 41B
4.add-zipkin-sleuth-to-track 41B
3.add-zuul-api-gateway 41B
config 292B
config-eureka-simple-service-ui 41B
Dockerfile 185B
Dockerfile 183B
Dockerfile 183B
Dockerfile 182B
Dockerfile 181B
Dockerfile 181B
Dockerfile 179B
Dockerfile 177B
Dockerfile 174B
FETCH_HEAD 1KB
.gitignore 489B
HEAD 129B
HEAD 23B
index.html 589B
user-page.html 141B
favicon.ico 3KB
pack-f7a70b16cdb9cd98d8866b7c417e9246b78c6347.idx 22KB
cloud-simple-ui.iml 31KB
cloud-api-gateway.iml 31KB
cloud-simple-service.iml 30KB
cloud-config-server.iml 30KB
cloud-simple-serviceB.iml 30KB
cloud-hystrix-turbine.iml 29KB
cloud-eureka-server.iml 27KB
cloud-finagle-thrift-server.iml 25KB
cloud-finagle-thrift-client.iml 25KB
cloud-finagle-commons-thrift.iml 24KB
cloud-thrift-client.iml 21KB
cloud-thrift-server.iml 21KB
cloud-hystrix-dashboard.iml 21KB
cloud-finagle-thrift-api.iml 20KB
cloud-zipkin.iml 20KB
cloud-thrift-interface.iml 18KB
spring-cloud-microservice-examples.iml 17KB
index 13KB
UserService.java 28KB
UserDto.java 14KB
MyAppThriftClient.java 4KB
ZooKeeperConfig.java 4KB
MyAppThriftServer.java 3KB
ClusterFactory.java 3KB
DataSourceProperties.java 3KB
JdbcDataSource.java 2KB
ZooKeeperConfig.java 2KB
ThriftConfig.java 2KB
WebApplication.java 1KB
AccessFilter.java 1KB
UserService.java 1KB
FooServiceHandler.java 1KB
UserController.java 1KB
UserServiceProvider.java 1KB
UserController.java 1016B
UserStorageImpl.java 997B
UserController.java 927B
HystrixDashboard.java 863B
ApiGatewayApplication.java 851B
HystrixTurbine.java 813B
UserService.java 751B
ConfigServerApplication.java 737B
UserController.java 638B
SimpleServiceB.java 624B
SimpleService.java 620B
EurekaServer.java 615B
zipkin.java 585B
User.java 575B
User.java 565B
UserServiceImpl.java 560B
CloudThriftClient.java 539B
CloudThriftServer.java 538B
UserStorage.java 367B
app.js 350B
Makefile 0B
master 143B
master 129B
master 41B
master 41B
README.md 8KB
pack-f7a70b16cdb9cd98d8866b7c417e9246b78c6347.pack 145KB
.project 238B
log4j.properties 666B
compile_thrift.sh 260B
db.sql 159B
foogenerator.thrift 171B
UserService.thrift 125B
pom.xml 5KB
pom.xml 4KB
pom.xml 4KB
pom.xml 4KB
pom.xml 4KB
pom.xml 3KB
pom.xml 3KB
共 128 条
- 1
- 2
teluoyiren
- 粉丝: 4
- 资源: 34
上传资源 快速赚钱
- 我的内容管理 展开
- 我的资源 快来上传第一个资源
- 我的收益 登录查看自己的收益
- 我的积分 登录查看自己的积分
- 我的C币 登录后查看C币余额
- 我的收藏
- 我的下载
- 下载帮助
最新资源
- (源码)基于ESP32和AWS IoT Core的室内温湿度监测系统.zip
- (源码)基于Arduino的I2C协议交通灯模拟系统.zip
- coco.names 文件
- (源码)基于Spring Boot和Vue的房屋租赁管理系统.zip
- (源码)基于Android的饭店点菜系统.zip
- (源码)基于Android平台的权限管理系统.zip
- (源码)基于CC++和wxWidgets框架的LEGO模型火车控制系统.zip
- (源码)基于C语言的操作系统实验项目.zip
- (源码)基于C++的分布式设备配置文件管理系统.zip
- (源码)基于ESP8266和Arduino的HomeMatic水表读数系统.zip
资源上传下载、课程学习等过程中有任何疑问或建议,欢迎提出宝贵意见哦~我们会及时处理!
点击此处反馈
安全验证
文档复制为VIP权益,开通VIP直接复制
信息提交成功
- 1
- 2
- 3
前往页