SpringBoot+MyBatis搭建分佈式系統

maven


SpringBoot簡介

Spring Boot是由Pivotal團隊提供的全新框架,其設計目的是用來簡化新Spring應用的初始搭建以及開發過程。

SpringBoot的特點(優點)

  • 內置Tomcat,可以直接部署,而不依賴外部Tomcat
  • 簡化MAVEN配置,提供一系列工具包集合

    spring-boot-starter-web(包含內置tomcat、mvc、restful)
    spring-boot-starter-jdbc(包含tomcat-jdbc連接池、spring-jdbc功能、JdbcTemplate)
    spring-boot-starter-aop(包含Spring AOP)
    spring-boot-starter-test(包含Spring test測試框架)
    spring-boot-starter-parent(包含spring boot底層通用設置和功能)
    spring-boot-starter(包含ioc、自動配置、日誌功能)
    
  • 自動配置Spring組件(重要特點)
  • 採用Java配置替代了XML配置(完全取消了XML配置形式)

SpringBoot數據庫訪問

SSO單點登錄 基於Token

流程:

使用基於 Token 的身份驗證方法,在服務端不需要存儲用戶的登錄記錄。大概的流程是這樣的:
1. 客戶端使用用戶名跟密碼請求登錄
2. 服務端收到請求,去驗證用戶名與密碼
3. 驗證成功後,服務端會簽發一個 Token,再把這個 Token 發送給客戶端。(服務器採用Redis存儲)
4. 客戶端收到 Token 以後可以把它存儲起來,比如放在 Cookie 裏或者 Local Storage 裏
5. 客戶端每次向服務端請求資源的時候需要帶着服務端簽發的 Token
6. 服務端收到請求,然後去驗證客戶端請求裏面帶着的 Token,如果驗證成功,就向客戶端返回請求的數據(基於攔截器)

存儲方式

客戶端採用localStorage存儲;服務器採用Redis存儲
HTML5新特性 localStrorage可以永久存儲在客戶端

令牌的校驗與攔截

檢測用戶發送的令牌是否和服務器存儲的一致,是否有效,
編寫一個攔截器,攔截器調用/user/token進行令牌檢測,檢測正確後,攔截器放過繼續執行請求處理,否則攔截。

分佈式服務架構

目前主流實現:Dubbo+zookeeper和SpringBoot+Cloud
利用上述技術都可以將功能服務分散到不同服務器部署,然後實現服務間通信(調用)。
請求–>處理1–>處理2–>響應。意思可以將處理1和處理2做成獨立服務分開部署,然後再進行RPC(Dubbo)或HTTP請求和響應模式(Cloud)交互。

    Dubbo和Cloud的區別如下:
    Dubbo和Cloud服務調用機制不同,一個RPC、一個HTTP請求響應
    Dubbo一般和zookeeper結合管理服務,Cloud內置集成Eureka管理服務
    Cloud提供一套服務管理的完整方案、Dubbo需要跟其他技術集成使用。
    Cloud僅用於Rest服務管理、Dubbo是將組件服務化管理

Spring Cloud

Spring Cloud是一系列框架的有序集合。它利用Spring Boot的開發便利性巧妙地簡化了分佈式系統基礎設施的開發,如服務發現註冊、配置中心、消息總線、負載均衡、斷路器、數據監控等。
- Spring Cloud Netflix
是對Netflix開發的一套分佈式服務框架的封裝,包括服務的發現和註冊,負載均衡、斷路器、REST客戶端、請求路由等。
- Spring Cloud Config
將配置信息中央化保存, 配置Spring Cloud Bus可以實現動態修改配置文件
- Spring Cloud Bus
分佈式消息隊列,是對Kafka, MQ的封裝
- Spring Cloud Security
對Spring Security的封裝,並能配合Netflix使用
- Spring Cloud Zookeeper
對Zookeeper的封裝,使之能配置其它Spring Cloud的子項目使用
- Spring Cloud Eureka
- Spring Cloud Eureka 是 Spring Cloud Netflix 微服務套件中的一部分,它基於Netflix Eureka 做了二次封裝,主要負責完成微服務架構中的服務治理功能。

項目名稱

易慕教育平臺

應用技術

Spring、SpringBoot、Mybatis、Redis、Quartz、Bootstrap、js、JSP、AJAX、Nginx

項目工具

MyEclipse、Mysql57、Tomcat8、Jdk1.8、Linux

項目描述

本系統的主要作用是爲廣大用戶提供一個在線學習的網絡平臺,系統主要分爲主頁展示、用戶中心、課程中心、視頻中心和在線考試模塊!爲用戶提供了、學員註冊登錄、在線視頻、筆記、問答、評論、收藏等衆多功能!本系統主要採用分佈式系統架構的方式,運用AJAX的局部請求,局部刷新,爲在線用戶提供更加高效,快速在線訪問,以求提高用戶體驗!

個人職責:負責用戶的登錄註冊、課程中心、視頻中心

Java項目面試:

差異化體現個人能力

能力:
- 你瞭解哪些部分,框架的整體(官方網站)
- 縱向深入瞭解(瞭解的部分 底層渲染,連接)
- 橫向擴展瞭解
潛力:
- 你是怎麼解決問題的
- 你如何舉一反三
- 你怎麼優化項目
- 你如何快速學習

善於總結:

SpringBoot 項目:

SpringBoot ###

關於SpringBoot

快速搭建項目,使用註解的方式省去了大量XML配置
內置Tomcat

@RequestMapping
@PathVariable
@ResponseBody

Mybatis

關於Mybatis

是對象關係映射
配置文件
編寫xml配置的 update delete等標籤
在映射文件中編寫 @update()註解的方式編寫sql語句

git

關於git

分佈式反版本控制器
數據是按照元數據的方式進行存儲
git使用的是SHA-1 哈希算法

redis ###

關於redis
數據存儲結構:key-value
數據類型:
應用場景:緩存 事務 日誌 訂閱 排序
使用:導入jar 開啓redis,正常安裝的電腦話默認開啓,
配置redis連接信息

分佈式系統 前後端分離的方式

什麼是分佈式系統
談談你對分佈式的理解;
前後端分離的歷史發展:

redis+session共享

如何實現的redis和session共享:
導入:兩個jar包
實現的目的

SSO單點登錄:

單點登錄的原理
單點登錄的優劣

密碼加密:

使用MD5算法,對密碼進行加鹽

攔截器:

繼承HandlerInterceptor接口
實現了三個方法,在boolean preHandle方法下驗證用戶是否登錄!進行攔截未登錄則跳轉登錄界面!

推薦查詢優化:

推薦展示如何優化查詢的!
用戶點擊課程進行學習,根據課程id獲取到該課程類目的其他課程進行推薦展示

傳參的三種方式:

談談傳統session方式和使用token的區別?

你在搭建項目時候遇到的問題,以及你是如何解決的

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