# jieyue-spring-cloud
**Repository Path**: zkf233/jieyue-spring-cloud
## Basic Information
- **Project Name**: jieyue-spring-cloud
- **Description**: 捷阅网微服务架构商城网站,是将单体架构的捷阅网商城网站以业务逻辑进行拆分而成的微服务架构项目。涵盖技术:注册服务发现中心、配置中心nacos、分布式服务seata、远程调用服务feign、熔断机制hystrix、链路追踪zipkin、服务网关gateway、后台检测springbootadmin、日志收集elk等技术。
- **Primary Language**: Java
- **License**: Not specified
- **Default Branch**: master
- **Homepage**: None
- **GVP Project**: No
## Statistics
- **Stars**: 0
- **Forks**: 2
- **Created**: 2024-03-05
- **Last Updated**: 2024-03-05
## Categories & Tags
**Categories**: Uncategorized
**Tags**: None
## README

> 捷阅网微服务架构商城网站,是将单体架构的捷阅网商城网站以业务逻辑进行拆分而成的微服务架构项目。涵盖技术:注册服务发现中心、配置中心nacos、分布式服务seata、远程调用服务feign、熔断机制hystrix、链路追踪zipkin、服务网关gateway、后台检测springbootadmin、日志收集elk等技术
**微服务架构地址:[https://gitee.com/bosen-once/jieyue-spring-cloud](https://gitee.com/bosen-once/jieyue-spring-cloud)**
**单体架构地址:[https://gitee.com/bosen-once/jieyue](https://gitee.com/bosen-once/jieyue)** (项目启动后的页面呈现,还请到单体架构中查看)
# 技术选型
| 技术 | 版本 | 端口 | 说明 |
| ---- | ---- | ---- | ---- |
| Nacos| 1.4.1 | 8848 | 服务注册中心、服务配置中心 |
| ELK| 7.7.0 | 9200、9300、4560、5601 | 日志收集系统 |
| SpringBootAdmin| 2.1.0 | 8764| 监控各个微服务的运行情况,以及查看服务内存占用信息 |
| Gateway| 2.1.0 | 80 | 网关服务 |
| Seata | 1.4.1 | 8091 | 分布式事务处理 |
| Zipkin| 2.1.0 | 9411 | 服务链路追踪组件 |
| OpenFeign | 2.1.0 | - | 远程调用微服务组件 |
---
# 架构图
整个项目的架构主要分为**网关层、调用层、服务层**三大模块。且服务层配备了服务注册中心、服务配置中心、服务链路追踪中心、日志收集系统、分布式事务、后台监测中心。

# 1.网关层
为了确保所有的微服务都必须通过网关服务调用,特使用以下技术实现。
网关层通过类`TokenFilter`生成`gatewayToken`,并将其保存至`Redis`中,并且在访问服务时在请求头加上该字符串
每个服务在被访问时都需验证请求头中的字符串,字符串匹配时才允许访问,否则将返回“非法访问!”的提示。
---
# 2.调用层
调用层共有四个模块,分别是:
1. **后台模块调用**(主要任务:登录拦截;调用后台主页服务实现登录注册功能;调用商户主页服务实现商户信息查看、停用或启用商户、修改商户费率、删除商户等功能;调用用户主页服务实现对用户信息的查看;调用后台主页服务实现RBAC权限管理功能;调用后台群发服务实现对所有商城用户群发送消息的功能;调用订单服务实现订单的查看和查找功能)
2. **商户模块调用**(主要任务:登录拦截;调用商户主页服务实现商户海报修改以及商户logo的修改;调用用户主页服务实现对用户信息的查看;调用商品服务实现对商品增加、删除、修改、上架或下架等功能;调用订单服务实现订单的查看和查找功能)
3. **用户模块调用**(主要任务:登录拦截;调用图片服务获取商城主页海报以及商品图片;调用用户主页实现购物车功能、用户信息的修改;调用用户评论服务实现用户对商品评价功能;调用订单服务实现订单的查看和查找功能,以及订单的生成;调用微信支付服务实现微信支付功能)
4. **定时任务调用**(主要任务:对超时的订单进行删除以及商品库存的恢复;微信支付回调成功对订单状态进行修改)

---
# 3.服务层
服务层以业务拆分捷阅网单体架构网站,最终得到以下11个微服务:
1. **用户页面服务**(端口号-9951):MemberHomeService
2. **后台页面服务**(端口号-9953):AdminHomeService
3. **订单服务**(端口号-9954):OrderService
4. **用户评论服务**(端口号-9957):CommentService
5. **图片服务**(端口号-9959):ImagesService
6. **系统通知服务**(端口号-9958):NoticeService
7. **商品服务**(端口号-9955):GoodsService
8. **邮件服务**(端口号-9956):MailService
9. **商户页面服务**(端口号-9952):MtHomeService
10. **微信支付服务**(端口号-9960):WxPayService
---
# 4.服务注册中心
使用Nacos实现

---
# 5.服务配置中心
使用Nacos实现

---
# 6.服务监控中心
服务监控中心可对各个服务的运行状态,运行的时间,接口信息,内存占用情况进行查看,以及服务日志输出级别的设置。


---
# 7.服务链路追踪
链路追踪中心可以清楚的查看调用层与服务层的依赖关系,调用层实现某个功能时,具体调用哪个或者哪几个服务都可以通过该中心查看,并且对于服务调用先后和服务调用时常都可清晰看到,并且通过调用层和服务层的依赖关系,链路追踪中心还可自动生成对应的依赖图。


---
# 8.日志收集系统
通过集成ElasticSearch, Logstash, Kibana所组成的服务日志收集中心。依赖Logstash收集日志,保存至ElasticSearch,再通过Kibana可视化的查看,使我们对各个服务运行的日志信息管理统一,且对日志信息更方便快捷的了解。

---
# 9.分布式事务
Seate基于事务处理模式是基于两阶段提交模式演变而来的AT模式(对于代码的侵入性小)。
当调用层启动事务时,seate会生成一个对应的事务id(XID),并且将该id沿着调用链路传递给下面被调用的服务,seata会记录该调用链路下每个服务修改前的数据,当出现异常时,会通过保存再seata中的信息对数据进行回滚,如果每个服务都已正常运行无异常,seata将会认为事务无需回滚,对之前记录的数据进行删除。

# 有关网站制作者
---
**个 人 主 页: [云丶言](https://bosen-once.gitee.io/)**

---
**CSDN博客:[云丶言](https://blog.csdn.net/weixin_47600880)**

---
**微信公众号:云丶言**

---