<h1 align="center"> 轻松阅读 - API - 2.0 </h1>
<p align="center">
<a href="https://github.com/spring-cloud">
<img src="https://img.shields.io/badge/spring--cloud-2.1.5-blue" alt="spring-cloud">
</a>
<a href="https://github.com/Netflix/Hystrix">
<img src="https://img.shields.io/badge/hystrix-1.5.18-blue" alt="hystrix">
</a>
<a href="https://github.com/jwtk/jjwt">
<img src="https://img.shields.io/badge/jwt-0.9.1-blue" alt="jwt">
</a>
<a href="https://github.com/Zealon159/light-reading-cloud/blob/master/LICENSE">
<img src="https://img.shields.io/badge/License-MIT-yellow" alt="license">
</a>
</p>
## 项目介绍
light reading cloud(轻松阅读)是一款图书阅读类APP,基于 SpringCloud 生态开发的微服务实践项目,涉及 SpringCloud-Gateway、Nacos、Hystrix、OpenFeign、Jwt、ElasticSearch 等技术栈的应用。
项目的侧重点主要是基于实际业务场景使用微服务架构落地的思路,会采用图文的方式介绍每个服务或接口的原理以及为什么使用这种方式实现,希望会对想入门微服务的同学有所帮助。
客户端采用 Vue.js 、Vuetify 开发:[点击进入仓库](https://github.com/Zealon159/light-reading-cloud-client)
### 版本
`2.0` 版本,主要更新了 SpringCloud Alibaba 的 Nacos 组件,替代了 SpringCloud Config 以及 Eureka
`1.0` 版本,采用 SpringCloud Config、Eureka 为配置中心、注册中心。获取此版本,请查看 `reading-1.0` 分支的说明,并 `Checkout` 此分支
### 演示
演示地址:[http://reading-cloud.zealon.cn/#/index](http://reading-cloud.zealon.cn/#/index) ,`手机访问效果佳 ^_^`
数据库地址:`47.104.241.41` ,端口 `3306`
数据库账户:`hello_developer` ,密码:`Bestyou2020.com`
Nacos地址:`http://reading-cloud.zealon.cn:8848/nacos/`,账户密码同上
由于云服务器单机部署,可能内存不足导致Nacos宕机而看不见配置文件,这里专门把配置文件放置在 `bootstrap-config` 目录下,使用静态配置文件方式启动项目(手动更换各个项目对应的配置文件)。
或者切换到 `reading-1.0` 分支,该分支使用了eureka 实现的注册中心。
部分截图:
![](http://reading.zealon.cn/index_1.jpg)
### 架构图
客户端访问接口由统一流量入口 SpringCloud-Gateway 接收请求、响应结果,网关与微服务基于异步IO Netty通信,微服务获取配置文件启动后通过 Nacos 完成服务注册与发现,微服务之间的相互调用基于http协议的 FeignClient客户端。
核心架构图如下:
![](http://reading.zealon.cn/framework.png)
### 系统模块
微服务拆分策略:
- 业务先行,理清楚业务边界和依赖
- 先有独立的模块,后有分布式服务
- 模块之间的依赖关系要清晰、参数简单、耦合要少
- 最重要的是需求,根据需求判断具体价值,再按价值建立设计原则,最后按照设计原则来选择落地的技术方案,而不是根据技术来套业务需求
> 阅读APP,如果你有阅读的习惯,相信对此类产品并不陌生,其核心功能是阅读,当然在阅读之前需要发现想要读的图书,这就需要精品(榜单)页、排行、分类、搜索等功能的支撑,而用户数据主要分为账户、会员、书架、积分、评论等功能。
>
> 所以根据业务场景可进行最基础的拆分服务:图书服务、精品页服务、排行榜服务、搜索服务、账户服务、会员服务、消息服务、积分服务、活动服务、评论服务、支付服务等等(实际上会有比这更多的功能哈)
本项目进行以下拆分:
| No | 工程模块 | 说明 | 依赖 |
| ---- | -------------------------- | ---------------------------------------- | ------- |
| 1 | reading-cloud-common | 公共模块,存放通用的POJO、工具类等文件。 | - |
| 2 | reading-cloud-gateway | 服务网关,流量入口、权限验证等 | - |
| 3 | reading-cloud-book | 图书中心,提供图书基础数据接口 | 1 |
| 4 | reading-cloud-account | 账户中心,提供账户授权、用户服务等接口 | 1、3 |
| 5 | reading-cloud-homepage | 精品页中心,提供App精品页接口 | 1、3、4 |
| 6 | reading-cloud-feign-client | Feign客户端,提供微服务的公用客户端 | 1 |
这样拆分的粒度比较适中,其中每个服务相对都比较独立。由于个人精力有限,只实现了最核心的业务:图书、精品页、账户、书架等服务。
从依赖中可以看出,除了common之外,图书中心被依赖的次数最多,由此可见图书中心是最基础的服务,为此需要对这类底层的服务分配更多的容器,具体的还需要根据 `DAU`、`QPS` 等综合衡量,决策更合适的数值,是否要进一步拆分微服务等等。
## 快速开始
### step1 - 创建数据库
导入数据库脚本,分别创建数据库 `reading_cloud_resource`、`reading_cloud_account`,然后导入建表脚本。
需要示例数据的话,可以到阿里云数据库导出数据哈,在上面有数据库连接信息。
### step2 - 配置文件
由于我的服务器内存不够用了,就没搭建配置中心,可以直接修改每个工程的 `bootstrap.yml` 文件,更新数据库信息、redis配置信息等。
### step3 - 启动程序
首先启动注册中心,然后依次启动图书中心、账户中心、精品页中心、服务网关,可以在配置文件中自行修改端口哈。
## 指南
工程模块主要划分为2个类型:**基础服务** 和 **业务服务**。
其中配置中心、注册中心、服务网关为基础服务,图书中心、账户中心、精品页中心为业务服务,这里会侧重说明业务部分。
### 公共模块 - reading-cloud-common
主要存放Pojo、Constant、工具类等公共资源,作为独立的Jar包供其他工程依赖使用。
相当于单体项目里的 common 包独立出来,实现同等的价值,这样不需要每个微服务项目冗余公共代码资源,需要注意只存放公共代码,从而得到更好的抽离和复用。
### 配置中心/注册中心 - Alibaba-Nacos
#### 配置中心
从上面的架构图中我们可以得知,几乎所有的工程都要从配置中心获取配置信息。其目的是用来统一管理配置,配置中心可以在微服务等场景下极大地减轻配置管理的工作量,增强配置管理的服务能力。
> 单体项目的时候,我们把配置信息放到 `.yml` 或 `.properties` 文件中,随着项目走的,一个项目可能有几个配置文件。当请求量随着增大,项目可能要部署多个节点了,这时候维护起来会越来越麻烦,也容易出错。发布的工作降低了整体的工作效率,为了能够提升工作效率,配置中心应运而生了,我们可以将配置统一存放在配置中心来进行管理。
目前主流的配置中心有 Apollo、SpringCloud-Config、Nacos 等开源产品,每款配置中心都能满足统一管理配置的需求,本项目的1.0版本中使用 SpringCloud-Config 作为配置中心、Eureka为注册中心,2.0使用了 Nacos,因为它除了可以做配置中心,还可以做服务注册发现,替代了 Eureka 和 SpringCloud-Config 两个产品。
#### 注册中心
注册中心,是一个独立的服务组件,核心功能是服务治理,集中存储、监控、我们的服务信息。
工作过程简单来说,首先服务提供者启动时,向注册中心提供自己的服务信息,然后消费者服务要请求某个接口时,不是直接去请求具体的服务地址,而是在注册中心拉取得到要请求的服务地址,最后再通过这个地址、端口信息�
没有合适的资源?快使用搜索试试~ 我知道了~
基于SpringCloud生态开发的阅读类APP微服务实战项目.zip
共181个文件
java:132个
xml:21个
yml:8个
1.该资源内容由用户上传,如若侵权请联系客服进行举报
2.虚拟产品一经售出概不退款(资源遇到问题,请及时私信上传者)
2.虚拟产品一经售出概不退款(资源遇到问题,请及时私信上传者)
版权申诉
0 下载量 149 浏览量
2024-04-19
09:01:39
上传
评论
收藏 212KB ZIP 举报
温馨提示
基于SpringCloud生态开发的阅读类APP微服务实战项目,涉及 SpringCloud-Gateway、Nacos、OpenFeign、Hystrix、Jwt、ElasticSearch 等技术的应用 个人花大量时间整理出的实战资料,内容丰富,文档也很详细。无论做毕业设计还是用于学习技能,或工作中当做参考资料,都能发挥重要作用 亲们下载我任何一个付费资源后,即可私信联系我免费下载其他相关资源哦~ 个人花大量时间整理出的实战资料,内容丰富,文档也很详细。无论做毕业设计还是用于学习技能,或工作中当做参考资料,都能发挥重要作用 亲们下载我任何一个付费资源后,即可私信联系我免费下载其他相关资源哦~ 个人花大量时间整理出的实战资料,内容丰富,文档也很详细。无论做毕业设计还是用于学习技能,或工作中当做参考资料,都能发挥重要作用 亲们下载我任何一个付费资源后,即可私信联系我免费下载其他相关资源哦~
资源推荐
资源详情
资源评论
收起资源包目录
基于SpringCloud生态开发的阅读类APP微服务实战项目.zip (181个子文件)
mvnw.cmd 6KB
mvnw.cmd 6KB
mvnw.cmd 6KB
.gitignore 333B
.gitignore 333B
.gitignore 333B
.gitignore 278B
.gitignore 277B
RedisService.java 14KB
IndexBooklistItemServiceImpl.java 9KB
BookChapterServiceImpl.java 8KB
ResultUtil.java 6KB
IndexBooklistServiceImpl.java 5KB
MybatisConfig.java 4KB
UserLikeSeeServiceImpl.java 4KB
AuthFilter.java 4KB
IndexPageConfigServiceImpl.java 4KB
UserServiceImpl.java 4KB
RedisConfig.java 4KB
RedisConfig.java 4KB
RedisConfig.java 4KB
SearchServiceImpl.java 4KB
UserBookshelfServiceImpl.java 3KB
LikeSeeController.java 3KB
MybatisConfig.java 3KB
MybatisConfig.java 3KB
BookChapterController.java 2KB
IndexBannerServiceImpl.java 2KB
HttpCodeEnum.java 2KB
JwtUtil.java 2KB
IndexBooklistItemController.java 2KB
UserBookshelfController.java 2KB
BookServiceImpl.java 2KB
BookshelfThreadPoolConfig.java 2KB
ThreadPoolConfig.java 2KB
DataDictionaryServiceImpl.java 2KB
SearchController.java 2KB
UserController.java 2KB
HomepageSwaggerConfig.java 2KB
BookSwaggerConfig.java 2KB
IndexBooklistItemService.java 2KB
BookController.java 2KB
UserBookshelfTask.java 2KB
Book.java 1KB
MD5Util.java 1KB
BookChapterMapper.java 1KB
IndexPageConfigController.java 1KB
JestConfig.java 1KB
BookMapper.java 1KB
HystrixCommandLikeSeeConfig.java 1KB
RedisHomepageKey.java 1KB
HystrixCommandBookConfig.java 1KB
Result.java 1KB
BookCenterServiceImpl.java 1KB
IndexBooklist.java 1KB
RequestParams.java 1KB
RedisBookKey.java 1KB
RedisExpire.java 1KB
AccountCenterDataSourceConfig.java 1KB
BookPreviousAndNextChapterNode.java 1KB
CategoryConstant.java 1KB
JwtUtil.java 1KB
BookCenterDataSourceConfig.java 1KB
UserUtil.java 1KB
BookCenterDataSourceConfig.java 1KB
LikeSeeClientFallBack.java 1KB
BookVO.java 1KB
LikeSeeClickTask.java 1KB
IndexPageConfig.java 1KB
BookClientFallBack.java 1KB
UserLikeSeeService.java 983B
UserService.java 891B
IndexBannerItem.java 889B
HystrixConfig.java 888B
HomepageApplication.java 869B
BookChapterService.java 836B
IndexBooklistService.java 835B
IndexBooklistVO.java 827B
UserBO.java 814B
CommonUtil.java 802B
User.java 792B
IndexBooklistItem.java 785B
Test.java 772B
BookAuthor.java 763B
UserBookshelfService.java 747B
BookChapter.java 742B
BookClient.java 742B
UserLikeSeeMapper.java 730B
SimpleBookVO.java 720B
LikeSeeClient.java 718B
BookVO.java 713B
BookCategoryEnum.java 704B
UserBookshelfMapper.java 684B
UserBookshelf.java 669B
BooklistBookVO.java 669B
SearchBookItem.java 656B
IndexBanner.java 631B
DataDictionary.java 626B
UserVO.java 608B
RedisRateLimiterConfig.java 606B
共 181 条
- 1
- 2
资源评论
季风泯灭的季节
- 粉丝: 600
- 资源: 2920
上传资源 快速赚钱
- 我的内容管理 展开
- 我的资源 快来上传第一个资源
- 我的收益 登录查看自己的收益
- 我的积分 登录查看自己的积分
- 我的C币 登录后查看C币余额
- 我的收藏
- 我的下载
- 下载帮助
安全验证
文档复制为VIP权益,开通VIP直接复制
信息提交成功