Novel-Cloud,微服務技術棧學習型項目

背景

小說網站業務難度適中,沒有商城系統那種複雜的業務。但是作爲互聯網項目,一樣需要面對大規模用戶和海量數據的處理,所以高併發、高可用、高性能、高容錯、可擴展性、可維護性也是小說網站設計需要考慮的問題,商城系統中所用到的技術同樣適用於小說網站。綜上所述,使用微服務架構來構建一個小說門戶平臺是非常有必要的,利用微服務構建的小說門戶平臺來學習現下流行技術相較於業務比較複雜的商場系統來說也是比較容易的,非常適合於沒有實際微服務項目經驗的同學用來學習和入門微服務技術棧。

介紹

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開發,後臺接口一期開發已完成(充值/作家專區除外的所有接口)。

演示地址

點擊前往(前臺門戶)

軟件架構

QQ20200520-215756

項目結構

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 前端開發框架

數據模型

QQ20200520-215756

截圖

1. 註冊中心截圖

QQ20200520-215756

 2. 配置中心截圖

QQ20200520-215756

3. 監控中心截圖

QQ20200520-215756

QQ20200520-215756

QQ20200520-215756

4.  分佈式日誌收集

QQ20200520-215756

5. 接口文檔

QQ20200520-215756

QQ20200520-215756

QQ20200520-2157566. 門戶網站

安裝步驟

1. 下載源碼,如果是ZIP包,下載後需要解壓。

image-20200529173322783

2. 開發環境配置,請確保開發機器上已安裝如下軟件環境。

  •  Java開發工具包jdk1.8+
  •  IDE(Eclipse或IntelliJ IDEA)
  •  項目管理工具maven
  •  微服務註冊中心/配置中心nacos
  •  分佈式緩存服務Redis
  •  搜索引擎服務ElasticSearch
  •  ElasticSearch可視化客戶端Kibana
  •  消息中間件RabbitMq
  •  數據庫服務Mysql

 3. 登陸nacos配置中心導入下載源碼中的配置文件。

image-20200529173322783image-20200529173322783

image-20200529173322783

image-20200529173322783

4. 使用IDE導入下載的源碼(這裏以IntelliJ IDEA爲例)。

image-20200529173322783

5. 修改通用配置中的配置中心地址和命名空間ID。

image-20200529182810929

image-20200529173322783

6. 啓動微服務網關。

 

  • 修改網關服務的配置中心地址的命名空間ID

image-20200529173322783

  • 修改網關配置文件註冊中心地址和命名空間ID

    image-20200529173322783

    image-20200529173322783

  • 啓動網關服務novel-gateway

    image-20200529173322783

    image-20200529173322783

7. 啓動監控服務。

  • 修改監控服務的配置中心地址和命名空間ID

image-20200529173322783

  • 修改監控微服務的註冊中心地址和命名空間ID以及登陸的用戶名和密碼

image-20200529173322783

  • 啓動監控服務novel-monitor,啓動方法和網關服務相同

  • 訪問監控服務,因爲網關中配置了監控服務的路由,所以可直接或通過網關來訪問監控服務:http://<網關ip>:<網關端口號>/monitor

    image-20200529173322783

8. 啓動業務微服務,這裏以小說微服務爲例。

  • 修改網關配置文件book-service.yml中的註冊中心地址和命名空間ID,以及其他配置(數據庫/redis/elasticsearch/mq等),方法同上

  • 啓動book-service服務,方法同上

  • 訪問接口文檔:http://<服務IP>:<服務端口號>/swagger-ui.html,

    例如:http://127.0.0.1:620/swagger-ui.html 

9. 通過網關統一接口訪問路徑。   

   http://<網關IP>:<網關端口號>/api/<接口路徑>

   以小說小說分類列表查詢接口爲例:http://127.0.0.1:527/api/book/listBookCategory

10. 訪問用戶中心/作家中心等需要認證的接口。

  • 訪問登陸接口獲取JWTimage-20200529173322783image-20200529173322783

  • 設置JWT認證image-20200529173322783

  • 訪問需要認證的接口image-20200529173322783

    image-20200529173322783

代碼倉庫

Gitee倉庫地址: https://gitee.com/xiongxyang/novel-cloud

GitHub倉庫地址: https://github.com/201206030/novel-cloud

發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章