# spring-cloud-demo
**Repository Path**: imic/spring-cloud-demo
## Basic Information
- **Project Name**: spring-cloud-demo
- **Description**: No description available
- **Primary Language**: Java
- **License**: Not specified
- **Default Branch**: master
- **Homepage**: None
- **GVP Project**: No
## Statistics
- **Stars**: 0
- **Forks**: 0
- **Created**: 2021-06-14
- **Last Updated**: 2022-12-03
## Categories & Tags
**Categories**: Uncategorized
**Tags**: None
## README
spring cloud demo 项目
-
#### 项目使用到的技术
1.Spring cloud
* eureka注册中心
* gateway网关
* feign声明式调用
* ribbon负载均衡
* hystrix熔断机制
* zipkin服务追踪治理
2.Spring boot
3.Redis
4.Mongodb
5.Rabbitmq
#### 项目框架版本
- spring cloud Finchley.RELEASE
- spring boot 2.x
- maven 3.9
- jdk 1.8
- mysql 5.9
- redis 2.9
- mongodb 3.x
- rabbitmq
#### 服务说明
- eureka-service 注册中心,端口号 5000
- gateway-service 网关服务,端口号 5001
- zipkin-service 服务跟踪治理,端口号 5003
- common-service 通用服务,端口号 5005
- order-service 订单服务,端口号 5100
- user-service 用户服务,端口号 5200
- product-service 商品服务,端口号 5300
- address-service 地址服务,端口号 5400
##### 简要说明
由于使用了网关所以所有的服务都统一个地址访问 http://localhost:5001/*, 为了方便测试服务是否正常
在每个服务中都有一个 getPort() 获取端口号的接口,比如:
http://localhost:5001/ADDRESS-SERVICE/address/getPort
http://localhost:5001/ORDER-SERVICE/order/getPort
由于使用了spring cloud RC版本的网关gateWay,所以在访问的时候采取的是默认的服务名大写的方式访问。
address-service 使用的技术框架比较全,包含redis,mongodb,rabbitmq
address-service使用了ribbon负载均衡,在跨服务调用order-service的时候有两种方式调用
1.使用feign调用,启动服务后浏览器访问 http://localhost:5001/ADDRESS-SERVICE/address/feign/getFeignOrderById/2
2.使用ribbon调用,首选需要使用idea启动2个服务,先启动一个order-service,然后修改端口号为4100后再启动一个此时在
eureka注册中心可以看到两个order-service(idea怎么启动两个服务参照:https://blog.csdn.net/zxl646801924/article/details/81207089)
启动两个order-service后再启动address-service服务,然后浏览器多次访问:
http://localhost:5001/ADDRESS-SERVICE/address/ribbon/getRibbonOrderPort
就可以得到如下结果:
order-service port:5100
order-service port:4100
user-service 增加了AOP切面,通过调用 http://localhost:5001/USER-SERVICE/user/getUserById/1 就可以看到控制台上输出的日志,AOP切面做了简单的日志输入。
common-service 增加了雪花算法获取分布式ID生成工具IdGenerateUtil
**mongodb:**
mongodb使用了mongodbAdmin可视化工具,所以首先需要安装这个工具,
然后使用git命令 "npm start"启动后然后再访问 http://127.0.0.1:1234 即可进入mongodb
可视化页面,进去后就可以看到Mongodb的数据。
**rabbitmq:**
rabbitmq 可视化界面需要安装插件,安装完后访问 http://127.0.0.1:15672/ 既可以进入可视化界面
进去后就可以看到消息队列,交换机等信息。
**redis:**
redis 可视化工具使用 redis desktop manager 下载安装连接到redis即可使用
**druid监控平台:**
druid是阿里提供的一个管理sql的工具,首先配置引入druid相关jar包详见address-service的pom.xml配置文件
然后新增DruidStatFilter和DruidStatViewServlet配置文件即可。启动eureka-service和gateway-service
后再启动address-service,在浏览器中输入 http://localhost:5400/druid 即可进入到druid监控页面
输入账号admin,密码123456即可进入。
**zipkin**
Spring Boot 2.0 版本之后,zipkin官方已不推荐自己搭建定制了,而是直接提供了编译好的 jar 包。
详情可以查看官网:https://zipkin.io/pages/quickstart.html
可以在终端使用以下命令:
curl -sSL https://zipkin.io/quickstart.sh | bash -s
java -jar zipkin.jar
使用 docker 的方式
docker run -d -p 9411:9411 openzipkin/zipkin
Windows可以下载zipkin的jar包,地址:https://search.maven.org/remote_content?g=io.zipkin.java&a=zipkin-server&v=LATEST&c=exec
下载后可以使用 java -jar zipkin.jar命令即可本地启动
任一方式启动后,访问 http://localhost:9411,可以看到服务端已经搭建成功
##### 备注
每个服务都继承了mybatis的代码生成器每个项目都有mybatis-generator.xml文件,需要生成代码的时候只要添加表名然后使用mybatis插件生成代码即可