# springcloud-mall
**Repository Path**: zhouhouxing/springcloud-mall
## Basic Information
- **Project Name**: springcloud-mall
- **Description**: 基于spring-cloud实现微服务项目脚手架、简化基础开发
- **Primary Language**: Java
- **License**: Apache-2.0
- **Default Branch**: master
- **Homepage**: None
- **GVP Project**: No
## Statistics
- **Stars**: 1
- **Forks**: 2
- **Created**: 2020-05-07
- **Last Updated**: 2020-12-19
## Categories & Tags
**Categories**: Uncategorized
**Tags**: None
## README
#### springcloud全家桶
> 项目中使用的技术如下:
- Eureka注册中心 (支持集群部署)
- Config注册中心 (支持集群部署)
- Zuul 服务网关 (支持集群部署)
- Hystrix 断路器
- Ribbon 负载均衡
- Feign 负载均衡
- Turbine 聚合监控
- Bus 消息总线
> 服务与应用
- user服务提供者 (支持集群部署)
- shop服务消费者 (支持集群部署)
#### 项目启动
##### 1、前期准备
- 安装rabbitmq
```
rabbitmq目前只用在配置中心,实现动态刷新spring bean,建议安装。
```
##### 2、开发环境(以下是我本机环境)
- jdk1.8
- idea 2017.3
##### 3、服务启动
1、启动eureka注册中心
(建议运行至少2个eureka服务器节点,方可看到高可用集群效果)
2、启动config配置中心
(建议运行至少2个config配置中心节点,方可看到高可用集群效果)
3、启动zuul服务网关
(建议运行至少2个zuul服务网关节点,方可看到高可用集群效果)
4、启动hystrix dashboard仪表盘服务 -
5、启动user服务 -
6、启动shop应用 -
#### 打开eureka控制台,查看各服务的集群信息
http://127.0.0.1:18761 即可进入eurek
#### 访问项目,查看效果
- **直接访问shop应用**
> http://127.0.0.1:(shop应用的端口号)/router
```
查看user服务的调用效果:观察浏览器的输出内容,通过 msg 的值可以看到其中的端口号发生了变化,也就说明调用了不同的user服务节点,实现了负载均衡。具体代码请查看 mall-shop UserServiceFeign.java
```
- **通过zuul服务网关访问shop应用**
> http://127.0.0.1:(zuul服务网关的端口号)/api-shop/router
```
最终效果与上面的直接访问shop的效果是一样的,主要区别就是访问路径发生了变化。被zuul网关拦截处理,再进行转发请求shop应用。具体zuul配置请查看 mall-zuul application.yml
```
- **修改git仓库配置文件属性值,实现动态刷新spring bean属性**
> git使用的是我的码云的项目(https://gitee.com/zhouhouxing/springcloud-config.git )
> 具体需要测试的地方在 mall-shop ShopController.java中的@Value("${message}")
> 这个message的值是shop应用启动的时候从config配置中心获取的,而配置中心是从git远程仓库获取的
> 当git仓库的配置文件属性值发生了变化后,要想让shop应用在不需要重启的状态下,动态刷新@Value("${message}")的值,就需要结合Bus消息总线来实现
> 故:本地需要提前安装好rabbitmq,这里就不演示如何安装了,请自行解决