天天看點

接口規範文檔

一、技術路線:

1.1. spring cloud

1.1.1. 技術描述

微服務:就是把一個單體項目,拆分為多個微服務,每個微服務可以獨立技術選型,獨立開發,獨立部署,獨立運維.并且多個服務互相協調,互相配合,最終完成使用者的價值.

Spring cloud是一個基于Spring Boot實作的服務治理工具包,在微服務架構中用于管理和協調服務的。它利用Spring Boot的開發便利性巧妙地簡化了分布式系統基礎設施的開發,如服務發現注冊、配置中心、消息總線、負載均衡、斷路器、資料監控等,都可以用Spring Boot的開發風格做到一鍵啟動和部署,架構圖如1.1.1。

1.1.2.技術特點

優點:

1)通過分解巨大單體式應用為多個服務方法解決了複雜性問題,每個微服務相對較小。

2)每個單體應用不局限于固定的技術棧,開發者可以自由選擇開發技術,提供API服務。

3)每個微服務獨立的開發,部署。

4)單一職責功能,每個服務都很簡單,隻關注于一個業務功能。

5)易于規模化開發,多個開發團隊可以并行開發,每個團隊負責一項服務。

6)改善故障隔離。一個服務當機不會影響其他的服務。

缺點:

1)測試工作更加困難。

2)需要采用服務間的通訊機制。

3)很難在不采用分布式事務的情況下跨服務實作功能。

4)跨服務實作要求功能要求團隊之間的緊密協作 。

1.1.1

1.2. spring boot

1.2.1. 技術描述

Spring Boot是由Pivotal團隊提供的全新架構,其設計目的是用來簡化新Spring應用的初始搭建以及開發過程。該架構使用了特定的方式來進行配置(約定優于配置),進而使開發人員不再需要定義樣闆化的配置。通過這種方式,Spring Boot緻力于在蓬勃發展的快速應用開發領域成為上司者

1.2.3. 技術特點

1)建立獨立的Spring applications

2)能夠使用内嵌的Tomcat, Jetty or Undertow,

3)不需要部署war

4)提供定制化的starter poms來簡化maven配置(gradle相同)

5)追求極緻的自動配置Spring

6)提供一些生産環境的特性,比如特征名額,健康檢查和外部配置。

1.3. rabbitMq

1.3.1. 技術描述

AMQP,即Advanced Message Queuing Protocol,進階消息隊列協定,是應用層協定的一個開放标準,為面向消息的中間件設計。消息中間件主要用于元件之間的解耦,消息的發送者無需知道消息使用者的存在,反之亦然。

AMQP的主要特征是面向消息、隊列、路由(包括點對點和釋出/訂閱)、可靠性、安全。

RabbitMQ是一個開源的AMQP實作,伺服器端用Erlang語言編寫,支援多種用戶端,如:Python、Ruby、.NET、Java、JMS、C、PHP、ActionScript、XMPP、STOMP等,支援AJAX。用于在分布式系統中存儲轉發消息,在易用性、擴充性、高可用性等方面表現不俗。

1.3.2. 技術特點

1)支援叢集化、高可用部署架構、消息高可靠支援

2)複雜系統的解耦;

3)複雜鍊路的異步調用

4)瞬時高峰的削峰處理。

1)系統可用性降低

2)系統複雜度提高

3)一緻性問題

1.4. apollo

1.4.1. 技術描述

因為如今程式功能越來越複雜,程式的配置日益增多:各種功能的開關、參數配置、伺服器位址、資料庫連結等。對于配置的期望值越來越高:配置修改後實時生效、灰階釋出、分環境、分叢集管理配置、完善的權限、稽核機制等。是以傳統的配置檔案越來越無法滿足開發人員的需求。于是就有了 Apollo。

Apollo(阿波羅)是攜程架構部門研發的分布式配置中心,能夠集中化管理應用不同環境、不同叢集的配置,配置修改後能夠實時推送到應用端,并且具備規範的權限、流程治理等特性,适用于微服務配置管理場景。

1.4.3. 技術特點

1)同意管理不同環境、不同叢集的配置

2)配置修改實時生效(熱釋出)

3)版本釋出管理--所有配置都有版本概念,便于配置的復原 

4)提供java和.net原生用戶端,友善應用內建

5)提供開放平套API 

1.5. web socket

1.5.1. 技術描述

衆所周知,在WebSocket出現之前,很多網站為了實作推送技術,所用的技術都是 Ajax 輪詢。輪詢是在特定的的時間間隔(如每1秒),由浏覽器對伺服器發出HTTP請求,然後由伺服器傳回最新的資料給用戶端的浏覽器。這種傳統的模式帶來很明顯的缺點,即浏覽器需要不斷的向伺服器送出請求,然而HTTP請求可能包含較長的頭部,其中真正有效的資料可能隻是很小的一部分,顯然這樣會浪費很多的帶寬等資源。而基于WebSocket 協定實作的用戶端和伺服器之簡的通信,能更好的節省伺服器資源和帶寬,并且能夠更實時地進行通訊。

WebSocket是基于TCP的一種新的網絡協定,并在2011年被IETF定為标準的全雙工通信協定,它實作了用戶端與伺服器全雙工通信。

WebSocket 使得用戶端和伺服器之間的資料交換變得更加簡單,允許服務端主動向用戶端推送資料。在 WebSocket API 中,浏覽器和伺服器隻需要完成一次握手,兩者之間就直接可以建立持久性的連接配接,并進行雙向資料傳輸。

1.5.2. 技術特點

1)建立在 TCP 協定之上,伺服器端的實作比較容易。

2)與 HTTP 協定有着良好的相容性。預設端口也是80和443,并且握手階段采用 HTTP 3)協定,是以握手時不容易屏蔽,能通過各種 HTTP 代理伺服器。

4)資料格式比較輕量,性能開銷小,通信高效。

5)可以發送文本,也可以發送二進制資料。

6)沒有同源限制,用戶端可以與任意伺服器通信。

1.6. 檔案

1.6.1. 技術描述

檔案接口定義了服務端與用戶端檔案存放路徑、檔案名命名規則和檔案格式,并開放相應的讀/寫操作權限。同時能夠處理壓縮包并處理壓縮包中檔案。

1.6.2. 技術特點

1)實時、高效和安全可靠地傳送批量資料。

2)斷點續傳功能。

3)資料壓縮傳輸。

4)傳輸過程中的差錯控制。

二、基本要求:

在目前的大環境下,健壯的系統應有

1、強大的功能,充足滿足使用者的需求。

2、精準的資料流轉,避免資料的丢失,錯誤。

2、快速的疊代架構,能夠及時對需求的開發和疊代。

3、接口應實作對外部系統的接入提供企業級的支援,在系統的高并發和大容量的基礎上提供安全可靠的接入。

4、提供完善的資訊安全機制,以實作對資訊的全面保護,保證系統的正常運作,應防止大量通路,以及大量占用資源的情況發生,保證系統的健壯性。

5、提供有效的系統的可監控機制,使得接口的運作情況可監控,便于及時發現錯誤及排除故障。

6、保證在充分利用系統資源的前提下,實作系統平滑的移植和擴充,同時在系統并發增加時提供系統資源的動态擴充,以保證系統的穩定性。

7、在進行擴容、新業務擴充時,應能提供快速、友善和準确的實作方式。

三、安全要求:

1)票據驗證:為了保證系統的安全運作,各種接口方式都應該保證其接入的安全性。通過鑒權實作接口接入的安全,每個請求頭都需要攜帶伺服器發放的票據,隻有票據通過驗證才能調用接口。

2)資訊加密:所有敏感資訊都需要通過加密後傳遞,防止中途被截取,進而暴露使用者私密資訊。

3)入侵檢測:使用nginx通過限流、緩存、黑白名單等方式對請求進行攔截,進而檢測到非法的入侵。

4)sql注入:嚴格檢查sql文法,防止sql注入帶來的風險。

5)ip記錄:存放每個通路者的ip位址,同時可以對每個線上使用者進行操作。

6)日志記錄:對請求進行記錄,進而對資料流向能夠充足的掌握。

四、調用方式:

接口基本采用了同步請求/應答方式、異步請求/應答方式、會話方式、廣播通知方式、事件訂閱方式、可靠消息傳輸方式、檔案傳輸等通訊方式:

1、同步請求/應答方式:用戶端向伺服器端發送服務請求,用戶端阻塞等待伺服器端傳回處理結果;例:普通的調用接口方式。

2、異步請求/應答方式:用戶端向伺服器端發送服務請求,與同步方式不同的是,在此方式下,伺服器端處理請求時,用戶端繼續運作;當伺服器端處理結束時傳回處理結果;例:通過架構的異步注解調用。

3、會話方式:用戶端與伺服器端建立連接配接後,可以多次發送或接收資料,同時存儲資訊的上下文關系;例:通過web socket方式建立前背景連接配接。

4、廣播通知方式:由伺服器端主動向用戶端以單個或批量方式發出未經用戶端請求的廣播或通知消息,用戶端可在适當的時候檢查是否收到消息并定義收到消息後所采取的動作;

例:通過web socket通知所有使用者消息。

5、事件訂閱方式:用戶端可事先向伺服器端訂閱自定義的事件,當這些事件發生時,伺服器端通知用戶端事件發生,用戶端可采取相應處理。事件訂閱方式使用戶端擁有了個性化的事件觸發功能,極大友善了用戶端及時響應所訂閱的事件;例:通過審批流進行訂閱管理。

6、檔案傳輸:用戶端和伺服器端通過檔案的方式來傳輸消息,并采取相應處理;

7、可靠消息傳輸:在接口通訊中,基于消息的傳輸處理方式,除了可采用以上幾種通訊方式外,還可采用可靠消息傳輸方式,即通過存儲隊列方式,用戶端和伺服器端來傳輸消息,采取相應處理。例:通過rabbitmq建立資訊的存儲隊列。

五、功能服務内容:

六、資料服務内容:

1)精準的資料流轉,簡單明了的資料流程。

2)簡潔的資料處理,包括模糊查詢,篩選,排序,分類,彙總等功能。

3)可視化的資料顯示,通過餅圖,曲線圖,柱狀圖等多種呈現方式,使資料更加豐滿。

4)資料權限,區域權限保證在資料在系統中的安全性,使使用者各司其職。

5)異步,消息隊列,多線程等技術保證了資料響應時間,大大提升使用者體驗。

6)資料可以通過模型,excel,資料庫,系統等多個途徑收集。

7)強大的資料日志,可以快速定位責任人。

七、接口技術優勢

1)使用spring boot,spring cloud套件,作為市面上最火熱的技術,spring開源文檔數量多,功能強大,開發周期短,滿足靈活開發的理念。

2)多種接口調用方式,滿足絕大部分場景。

3)多種安全政策,保證資料安全。

4)通過mq等技術保證接口的響應速度,提高使用者體驗。

5)完備的接口文檔,簡單易懂的出入參。