背景
小說網站業務難度適中,沒有商城系統那種複雜的業務。但是作爲互聯網項目,一樣需要面對大規模用戶和海量數據的處理,所以高併發、高可用、高性能、高容錯、可擴展性、可維護性也是小說網站設計需要考慮的問題,商城系統中所用到的技術同樣適用於小說網站。綜上所述,使用微服務架構來構建一個小說門戶平臺是非常有必要的,利用微服務構建的小說門戶平臺來學習現下流行技術相較於業務比較複雜的商場系統來說也是比較容易的,非常適合於沒有實際微服務項目經驗的同學用來學習和入門微服務技術棧。
介紹
Novel-Cloud是基於小說精品屋-plus構建的Spring Cloud 微服務小說門戶學習平臺,致力於原創文學閱讀與寫作,提供了爬蟲工具用於開發過程中測試數據的採集(爬蟲項目和小說精品屋-plus通用)。採用了Spring Boot 2.2.5.RELEASE 、Spring Cloud Hoxton.SR4、 MyBatis3DynamicSql、Sharding-Jdbc、Redis、RabbitMq、Elasticsearch、Docker等流行技術,集成了Nacos註冊中心/配置中心、Spring Cloud Gateway網關、Spring Boot Admin監控中心、ELK分佈式日誌分析等基礎服務。前端計劃使用Vue開發,後臺接口一期開發已完成(充值/作家專區除外的所有接口)。
演示地址
點擊前往(前臺門戶)
軟件架構
項目結構
novel-cloud
├── novel-common -- 通用模塊,供其他業務微服務模塊依賴
├── novel-gen -- 持久層代碼生成器,集成Swagger
├── novel-gateway -- 基於Spring Cloud Gateway構建的網關服務
├── novel-monitor -- 基於Spring Boot Admin構建的監控中心
├── novel-search -- 基於Elastic Search構建的搜索微服務
├── novel-file -- 基於阿里雲OSS構建的文件微服務
├── novel-home -- 門戶首頁微服務
├── novel-news -- 新聞中心微服務
├── novel-user -- 用戶中心微服務
├── novel-author -- 作家中心微服務
├── novel-book -- 小說微服務
└── novel-pay -- 支付微服務
技術選型
技術 | 說明 |
---|---|
SpringBoot | Spring應用快速開發腳手架 |
SpringCloud | 微服務架構解決方案 |
Nacos | 註冊中心和配置中心 |
Sentine | 限流/熔斷/降級 |
SpringCloud Gateway | 微服務網關 |
SpringBoot Admin | 微服務監控 |
MyBatis | 持久層ORM框架 |
MyBatis Dynamic SQL | Mybatis動態sql |
PageHelper | MyBatis分頁插件 |
MyBatisGenerator | 持久層代碼生成插件 |
Seata | 分佈式事務中間件(待應用) |
Sharding-Jdbc | 代碼層分庫分表中間件 |
JJWT | JWT登錄支持 |
Redis | 分佈式緩存 |
ElasticSearch | 搜索引擎 |
RabbitMq | 消息隊列 |
OSS | 阿里雲對象存儲服務 |
Mysql | 數據庫服務 |
Redisson | 實現分佈式鎖 |
Lombok | 簡化對象封裝工具 |
Swagger | API文檔生成工具 |
Docker | 應用容器引擎 |
Logstash | 分佈式日誌採集 |
Vue | 前端開發框架 |
數據模型
截圖
1. 註冊中心截圖
2. 配置中心截圖
3. 監控中心截圖
4. 分佈式日誌收集
5. 接口文檔
6. 門戶網站
安裝步驟
1. 下載源碼,如果是ZIP包,下載後需要解壓。
2. 開發環境配置,請確保開發機器上已安裝如下軟件環境。
- Java開發工具包jdk1.8+
- IDE(Eclipse或IntelliJ IDEA)
- 項目管理工具maven
- 微服務註冊中心/配置中心nacos
- 分佈式緩存服務Redis
- 搜索引擎服務ElasticSearch
- ElasticSearch可視化客戶端Kibana
- 消息中間件RabbitMq
- 數據庫服務Mysql
3. 登陸nacos配置中心導入下載源碼中的配置文件。
4. 使用IDE導入下載的源碼(這裏以IntelliJ IDEA爲例)。
5. 修改通用配置中的配置中心地址和命名空間ID。
6. 啓動微服務網關。
- 修改網關服務的配置中心地址的命名空間ID
-
修改網關配置文件註冊中心地址和命名空間ID
-
啓動網關服務novel-gateway
7. 啓動監控服務。
- 修改監控服務的配置中心地址和命名空間ID
-
修改監控微服務的註冊中心地址和命名空間ID以及登陸的用戶名和密碼
-
啓動監控服務novel-monitor,啓動方法和網關服務相同
-
訪問監控服務,因爲網關中配置了監控服務的路由,所以可直接或通過網關來訪問監控服務:http://<網關ip>:<網關端口號>/monitor
8. 啓動業務微服務,這裏以小說微服務爲例。
-
修改網關配置文件book-service.yml中的註冊中心地址和命名空間ID,以及其他配置(數據庫/redis/elasticsearch/mq等),方法同上
-
啓動book-service服務,方法同上
-
訪問接口文檔:http://<服務IP>:<服務端口號>/swagger-ui.html,
9. 通過網關統一接口訪問路徑。
http://<網關IP>:<網關端口號>/api/<接口路徑>
以小說小說分類列表查詢接口爲例:http://127.0.0.1:527/api/book/listBookCategory
10. 訪問用戶中心/作家中心等需要認證的接口。
-
訪問登陸接口獲取JWT
-
設置JWT認證
-
訪問需要認證的接口
代碼倉庫
Gitee倉庫地址: https://gitee.com/xiongxyang/novel-cloud
GitHub倉庫地址: https://github.com/201206030/novel-cloud