99re热这里只有精品视频,7777色鬼xxxx欧美色妇,国产成人精品一区二三区在线观看,内射爽无广熟女亚洲,精品人妻av一区二区三区

平臺服務部署及Web框架

2018-02-24 15:46 更新

原文出處:http://weibo.com/p/1001643875679132642345
作者:蘇星宇,@zhuidawugui

document/2015-09-14/55f668043ad17

大綱

微博平臺主要負責微博基礎功能。接下來將會介紹

  • 平臺的作用,以及服務提供的形式

  • 平臺Web服務的部署

  • 平臺Web框架簡介

背景

目前整體架構大體上分為三層

  • 展現(xiàn)層:手機端,主站和第三方應用,承擔相關業(yè)務的前端展示

  • 適配層:負責服務端和多個展示端的接口適配

  • 服務層:提供基礎功能服務,包括Feed服務,用戶關系,開放平臺和消息箱等

平臺作為整個微博架構的基礎功能服務層,對外以Http接口的方式提供服務。接口遵守RESTful規(guī)范。接口示例如下:

關于RESTful,與其說是規(guī)范,其實更像是一種架構設計風格。它主要是提供了一組設計原則和約束條件,廣泛應用于C/S或者B/S架構中。要想理解什么是RESTful,可以從它的全稱入手--Representational State Transfer,翻譯成中文是表現(xiàn)層狀態(tài)轉化。這段晦澀的文字省略了主語,"表現(xiàn)層"其實指的是"資源"(Resources)的"表現(xiàn)層"。核心概念包括

  • 資源是由URI來指定。

  • 對資源的操作包括獲取、創(chuàng)建、修改和刪除資源,這些操作正好對應HTTP協(xié)議提供的GET、POST、PUT和DELETE方法。

  • 通過操作資源的表現(xiàn)形式來操作資源。

概括起來,平臺對外提供服務的形式就是通過HTTP接口對基礎資源進行存取。

平臺服務部署

對平臺的定位和服務形式有所了解后,我們看下平臺的Web服務部署結構。

平臺的服務部署在多個機房中。以北京為例,就有AX、BX和CX三個機房。自建的DNS服務會將用戶的流量根據(jù)不同的運營商切換到不同的機房。

用戶請求到達服務端后,首先會經過反向代理服務器。反向代理(Reverse Proxy)方式是指以代理服務器來接受公網(wǎng)上的連接請求,然后將請求轉發(fā)給內部網(wǎng)絡上的服務器,并將從服務器上得到的結果返回給公網(wǎng)上請求連接的客戶端,此時代理服務器對外就表現(xiàn)為一個反向代理服務器。平臺目前使用的反向代理有LVS和Nginx。

  • LVS:Linux Virtual Server,基于IP的負載均衡和反向代理技術

  • Nginx:基于HTTP的負載均衡和反向代理服務器

關于Nginx,除了以上提到的之外,還負責集群的健康檢查。這個主要是通過Nginx自帶的健康檢查模塊實現(xiàn)的。Nginx server會輪詢后端集群的index.jsp頁面,如果返回200則認為服務器正常,請求會正常被轉發(fā)到該服務器;返回503則進行服務器摘除,請求將不會再到達該服務器。

經過反向代理轉發(fā)后,請求會到達部署Web應用的應用服務器。平臺目前主要使用Tomcat作為應用容器。之后,請求會被統(tǒng)一的Web框架解析并處理。稍后會詳細講述Web框架的內容。

對于上行和下行不同的請求,請求處理的鏈路也不同。

以微博核心業(yè)務Feed流為例。應用服務器在收到下行請求(如查詢一條微博的內容)時,會直接訪問緩存資源,如果命中則直接返回結果給客戶端,否則繼續(xù)查詢DB,將結果返回客戶端。

而收到上行請求(如發(fā)微博)時,應用會將上行請求寫入一個消息隊列中。由另一個單獨的處理應用讀取消息隊列,執(zhí)行上行請求的資源操作,比如寫入緩存、更新DB等等。

這種隊列加處理機的上行請求模式被平臺廣泛使用,主要有以下優(yōu)點:

  • 解除前端應用和后端資源的耦合

  • 削峰填谷:在請求量很大時,隊列可以作為緩沖,緩解后端資源的壓力

由于請求被分配到不同機房,因此多機房之間的數(shù)據(jù)也需要同步。目前我們使用虛擬消息管道WMB來同步機房之間的數(shù)據(jù):所有的上行請求在到達某個機房后都會通過WMB重放到其他機房,從而保證機房后端資源一致。除此之外,為了容災,后端資源如緩存,DB的主從集群會分布在不同機房。彼此之間通過應用自身(Redis、MySql)或者客戶端(Memcached)來同步主從數(shù)據(jù)。

平臺Web框架

下面給大家簡單介紹下我們使用的Web框架。前面我們提到,在請求到達應用容器后,首先會被統(tǒng)一Web框架進行處理。用戶請求在應用容器中的整個處理鏈路如下。

Web框架的處理主要是將Http形式的請求轉換成應用運行環(huán)境(如JVM)理解的請求,包括接口路由、參數(shù)處理和參數(shù)校驗等等。平臺目前使用Credus作為統(tǒng)一的Web框架,它是一個基于Jersey改造的自研框架。

Jersey是JAX-RS(JSR311)開源參考實現(xiàn)用于構建RESTful Web service。特性比較豐富,包括

  • 接口路由

  • 功能豐富的Filter

  • Http參數(shù)校驗

  • 文檔生成

此外Jersey還提供一些額外的API和擴展機制,所以開發(fā)人員能夠按照自己的需要對Jersey進行擴展。

在Jersey提供的擴展機制上,我們開發(fā)了Credus,主要功能有

  • 封裝Jersey框架

  • 定制內容

  • Wiki模板

在Jersey提供的Filter機制上,Credus框架定制了一系列接口通用策略和功能。包括用戶認證、接口頻次限制、接口信息統(tǒng)計和返回接口JsonP封裝。另外,還進一步擴展了Jersey原有的參數(shù)校驗,增加了更多了參數(shù)校驗方式。Web請求在Credus框架中的處理過程如下

總結

這次和大家分享了微博平臺的相關知識,包括平臺功能、平臺服務部署以及平臺Web框架介紹。希望通過本次分享,大家能夠對微博平臺有所了解,同時對服務結構有一個整體的認識,對以后的工作有所幫助。

由于篇幅和主題的限制,還有很多內容沒有具體展開,有興趣可以關注@平臺技術沙龍。

------------------新兵訓練營簡介------------------

微博平臺新兵訓練營活動是微博平臺內部組織的針對新入職同學的團隊融入培訓課程,目標是團隊融入,包括人的融入,氛圍融入,技術融入。當前已經進行4期活動,很多學員迅速成長為平臺技術骨干。

微博平臺是非常注重團隊成員融入與成長的團隊,在這里有人幫你融入,有人和你一起成長,也歡迎小伙伴們加入微博平臺,歡迎私信咨詢。

------------------講師簡介------------------

蘇星宇,@zhuidawugui,微博平臺及大數(shù)據(jù)部——通訊系統(tǒng)研發(fā)工程師,2014年1月畢業(yè)于中國科學技術大學,校招進入微博。先后負責粉服平臺、群聊、微博相機消息箱等業(yè)務后端設計和研發(fā)工作。關注分布式系統(tǒng)設計和服務保障,Storm流式處理。新兵訓練營第三期學員

以上內容是否對您有幫助:
在線筆記
App下載
App下載

掃描二維碼

下載編程獅App

公眾號
微信公眾號

編程獅公眾號