久久精品国产精品国产精品污,男人扒开添女人下部免费视频,一级国产69式性姿势免费视频,夜鲁夜鲁很鲁在线视频 视频,欧美丰满少妇一区二区三区,国产偷国产偷亚洲高清人乐享,中文 在线 日韩 亚洲 欧美,熟妇人妻无乱码中文字幕真矢织江,一区二区三区人妻制服国产

歡迎訪問 生活随笔!

生活随笔

當前位置: 首頁 > 编程资源 > 编程问答 >内容正文

编程问答

老衣的微服务实践简要指引2017版

發布時間:2023/12/4 编程问答 38 豆豆
生活随笔 收集整理的這篇文章主要介紹了 老衣的微服务实践简要指引2017版 小編覺得挺不錯的,現在分享給大家,幫大家做個參考.

這是老衣在2017年5月份總結的,適用于中小團隊跨平臺微服務開發的實踐指引(簡化版)。若有有不當之處,歡迎指點更正

因本文涉及到大量第三方庫或工具,詳細學習和了解需要參考相關官方文檔。若您在使用Mac電腦,建議安裝使用Dash軟件下載查閱;其他操作系統上則考慮使用Chrome瀏覽器在http://devdocs.io/offline?上查閱文檔,值得一提的是該網頁的文檔支持離線模式。

環境準備

全局必要項

  • node.js?可根據實際情況選擇安裝當前版或是長期支持版

  • docker最新版?根據實際需要決定使用免費的Docker CE版或是收費的Docker EE版。注意?Windows 10 64位專業版和64位企業版可以直接安裝(依賴hyper-v),其他舊版Windows,需要使用docker toolbox。

  • 根據自己的喜好選擇安裝下列Git客戶端:

    • git scm

    • Source Tree

    • TortoiseGit?僅支持Windows

    • SmartGit

全局可選項

  • lua 最新版

  • python最新版

  • .NET Core 1.1或以上

開發環境

  • Visual Studio 2017:僅支持Windows系統

  • Visual Studio for MAC:故名思議,僅支持Mac系統

  • Visual Studio Code,跨平臺代碼編輯器。建議至少安裝以下擴展,其他擴展由團隊根據使用的開發語言和相關工具鏈自行決定是否安裝:

    • Docker?:支持DockerFile的加亮和智能提示

    • Angular 1 JavaScript and TypeScript Snippets for VS Code?:支持angular1.x的一些代碼片段和智能提示

    • Azure Extension Pack?:微軟官方出品的在VSCode中處理Azure相關功能的一些擴展

    • Azure Tools for Visual Studio Code?:一些方便在VSCode使用的Azure工具

    • Beautify?:代碼格式整理插件

    • Bootstrap 3 Snippets?:bootstrap框架的代碼片段

    • Bower?:Bower的VSCode擴展

    • C# Extensions?:增加一些C#開發時的功能

    • C# XML Documentation Comments?:支持C#的///注釋

    • Can I Use?:檢查當前行的CSS屬性兼容的瀏覽器版本

    • HTML CSS Support?:支持各種Web語言(html、Razor、Vue、pug、php等)

    • Icon Fonts?:字體圖標(例如Font Awesome)的樣式支持

    • Lua linter?:支持Lua語言智能提示和語法檢查等

    • mssql?:可在VSCode中方便使用微軟SQL Server數據庫

    • nginx.conf?:支持nginx配置文件的代碼加亮

    • Python?:支持Python的智能提示和代碼格式化等功能

    • yo?:將前端項目模板工具Yo的相關命令內置到VSCode

  • Web前端開發相關工具:

    • Yeoman,簡稱Yo?- 前端項目模板工具,可以快速搭建前端項目模板

    • Bower?- 前端包管理工具,類似于Visual Studio種的Nuget

    • 用于打包發布的工具:?Grunt、Gulp、webpack?中的至少一種,看個人喜歡或團隊熟悉度

    • 動態CSS語言:?LESS、SASS?根據團隊需要選擇其一

    • Angular 1.x?適用于企業管理等相關用戶場景的開發,因為其對IE瀏覽器支持的版本相對較低,適用面較廣

  • 后端數據庫,建議向跨平臺的數據庫種類傾斜,比如MySQL、PostgreSQL,甚至是一些NOSQL數據庫:MongoDB。微軟的SQL Server 2017支持Linux和Docker,目前尚處于預覽版狀態,不建議在生產環境使用,等官方正式版發布后再嘗試使用。PostgreSQL數據庫對SQL標準的語法支持非常完整,建議更多考慮。

代碼托管環境

為了最大限度提功開發部署靈活性,建議使用Git方式托管。所以可根據實際情況選擇下列之一:

  • 支持Git庫的TFS

  • GitHub?私有庫或企業版

  • Coding.net?私有庫或企業版

  • 開源免費,私有部署的Gogs,具有豐富的認證方式選擇,并支持Slack平臺的WebHook

  • GitLab?可托管部署或私有部署

建議在以上任何一種git服務中,建立或使用一個支持證書登錄的用戶,該證書用于構建環境自動拉取代碼時使用,不建議使用賬號密碼方式,因為安全性較差。該證書對應的用戶應該有所有需要自動構建的代碼庫讀權限。不建議給該用戶開放寫權限,避免一些潛在安全問題和代碼沖突問題

構建環境

構建環境是專門用來自動化、編譯、集成、測試、打包、發布的環境,建議使用獨立的計算機和服務器做為構建環境。因為該環境對代碼和測試、生產環境都有較高的權限,也會涉及到大量的安全證書或密鑰等極敏感信息,所以強烈建議該環境所在設備僅限極少數高度可信賴的人訪問管理,并有嚴格的安全規定,不允許隨便安裝軟件或向外復制數據

建議使用linux作為構建環境的操作系統,因為windows的命令行工具能力有限。并確保安裝如下工具:

  • Node.js?我們需要依賴很多nodejs工具鏈,所以這是必須安裝的。通過下列命令確認是否安裝,以及什么版本

    node --version

    還需要確認npm是否安裝:

    npm --version

    npm安裝新版,可以通過自更新實現

    npm install -g npm
  • ShellJS?是在Node.js API之上的便攜式(Windows/Linux/OS X)Unix Shell命令實現,可以消除或減少您的Shell腳本對特定操作系統的依賴。通過下面的命令全局安裝

    npm install -g shelljs

    老衣的實踐是利用shelljs的腳本能力以及js語言的豐富特性和靈活度,通過編寫腳本的方式結合其他工具或平臺實現編譯、測試、打包、發布、通知等的自動化處理

  • Docker?幾乎是微服務架構的必需品,我們通過Docker隔離和構建相關的服務,通過下列命令確認是否安裝,以及什么版本

    docker --version
  • git?確保安裝使用了最新的git命令行客戶端,可通過下列命令確認是否安裝,以及什么版本

    git --version
  • Python?很多輔助工具是用python開發的,所以有備無患,通過下列命令確認是否安裝,以及什么版本

    python --version
  • Mono?是跨平臺的.NET框架實現,目前5.0以上版本已經完整匹配.NET 4.6.2的API集,幾乎除了Windows平臺特有的API外,Mono和.NET框架幾乎是完全兼容的。所以如果你的微服務是用的.NET開發的,這是必須安裝的——當然如果你只打算在Windows上用,可以不安裝這個。通過下列命令確認是否安裝,以及什么版本

    mono --version
  • .NET Core?如果你的微服務有用的.NET Core開發的,這是必須安裝的。通過下列命令確認是否安裝,以及什么版本

    dotnet --version
  • Cake?是C# Make的縮寫,是一個基于C# DSL的跨平臺自動化構建系統。它可以用來編譯代碼,復制文件以及文件夾,運行單元測試,壓縮文件以及構建Nuget包等等。

  • TeamCity、Jenkins?這兩個是獨立的自動構建服務器軟件,如果不愿意使用shelljs之類的腳本自行編寫構建任務,可以通過他們在管理界面上設置,不過學習成本和復雜度蠻高的,如果團隊內沒有人熟悉這兩個工具,早期不建議使用。

  • 其他語言的基礎框架根據實際的每個微服務所使用的語言環境決定安裝哪些基礎支持工具、框架、模塊等

自動構建服務,在拉取代碼、獲取依賴包、編譯、測試、打包、發布等各個環節都可能會發生錯誤或異常,而編譯不通過或測試不通過等情況也應該第一時間跟團隊或項目管理者報告,我們在實踐中更推薦使用Slack來實現,實現方式請參考官方文檔?https://api.slack.com/incoming-webhooks,絕大部分情況下1-3行代碼即可實現,非常方便,當然了這里有個小問題Slack的所有客戶端(web、手機App、桌面應用等)都沒有中文版。當然了你愿意使用電子郵件或企業微信或微信服務號來實現也可以,只是實現成本和效果跟Slack比完全不在一個級別上。注意:Slack的webhook地址通常類似于https://hooks.slack.com/services/T00000000/B00000000/XXXXXXXXXXXXXXXXXXXXXXXX?這屬于保密的地址,不應該在公開的文檔或代碼中體現,否則容易在Slack的相關頻道中產生虛假的信息,切記!!!

當然了上述構建所需到基礎依賴,也可以在準備好到Docker容器中做,可減少不同服務對基礎依賴(比如php、java、nodejs等)版本不同而帶來的構建沖突。早期團隊可通過技術選型很大程度上避免基礎依賴沖突,所以可先不考慮使用大量Docker容器隔離不同到構建環境,待團隊逐漸成熟壯大后,可根據需要慢慢向這個方式靠攏。

我們在實踐中更傾向于使用Docker構建相應的鏡像來部署最終的微服務,所以需要一些必要的基礎鏡像提前做準備。推薦安裝如下鏡像:

docker pull alpine docker pull busybox docker pull centos docker pull ubuntu docker pull postgres docker pull microsoft/dotnet docker pull microsoft/aspnetcore docker pull mono docker pull node docker pull golang docker pull mongo docker pull mysql docker pull redis docker pull rabbitmq docker pull memcached docker pull nginx docker pull openresty/openresty

以上鏡像,如果需要安裝特定版本,可通過加tag參數來獲取對應版本的鏡像。特別一提的是其中alpine和busybox都是使用廣泛的超小型基礎鏡像,大小僅有幾M而已,對最終鏡像大小很敏感的可考慮使用這些鏡像作為基礎。

通過下列命令可在部署環境中確認上述鏡像是否已經pull到:

docker images

私有Docker Registry服務器

Docker Store上已經有大量官方鏡像和公開鏡像,可供參考使用,但通常我們自己到私有服務的鏡像是不希望公開讓別人下載使用的。所以需要搭建自己的鏡像庫,所以我們需要使用Docker Registry來搭建自己的私有鏡像庫。

注意:新版到registry要求必須使用https協議,所以搭建時需要考慮購買或使用免費的SSL證書。目前國內的騰訊云和阿里云貌似都有免費一年到二級域名證書,可考慮使用。

使用私有的Docker Registry服務后,每次構建好的服務鏡像都是先push到私有服務上,然后再在生產環境中pull最新版,并部署使用。

測試&&生產環境

測試或生產環境,基本上僅需要安裝Docker,通過相關的命令來拉取相關鏡像,并部署或維護所需服務的容器即可。單服務器上多個微服務如果有依賴關系或啟動先后順序等要求時,建議使用Docker Compose對微服務的相關容器進行編排。是否使用Docker Swarm來做集群化編排更新則由實際業務要求和團隊對Docker的熟練度來決定。

需要特別指出的是關于數據庫的處理,微服務架構通常強調服務的無狀態化,其中原因主要是為了服務的可復制性和可遷移性,所以目前的主流實踐是,數據庫在正式生產環境時,使用公有云的獨立數據庫服務或自己機房的獨立數據庫服務器的數據庫,不建議使用容器作為數據庫的宿主——但測試環境可以根據情況考慮使用,以方便模擬和測試各種情況。

生產環境的服務發現,考慮使用分布式服務發現和配置工具Consul。但如果微服務整體全部都是基于Docker的,而且集群使用等Docker Swarm實現的,那么就不必使用其他工具來做服務發現了,因為docker swarm內置了服務發現機制。

開發過程

  • 根據業務和系統架構,拆分微服務

  • 為每個微服務設計 RESTful Web API的文檔,建議使用API Designer工具,借助于RAML語言設計API

  • 根據API設計文檔,使用json-server來編寫API的Mockup

  • Web前端或App通過調用mock出來的api開發相關功能頁面,同時后端人員根據API設計文檔開發后端API,測試人員則根據設計文檔和mockup版的API表現編寫自動化測試腳本

  • 構建服務定期從git服務器上拉取最新代碼,根據項目的定義自動編譯、測試相關微服務,并通過Slack通知團隊或項目負責人;

  • 構建服務在編譯和測試都通過后,通過腳本自動構建Docker鏡像,然后push到私有的docker鏡像庫中,并通過Slack通知團隊或項目負責人;

  • 測試&&生產環境根據提前編寫好的腳本,自動從私有鏡像庫中拉取最新版的服務鏡像,部署運行對應的新服務

  • 注意事項:

    • 期間測試人員通過編寫的自動化API測試腳本不斷驗證服務的最終表現是否正確,不正確的不應該進入生產環境

    • 單元測試是開發人員自行編寫的,但是需要明確測試的命令行調用方式,以便構建服務器能夠不停的測試驗證代碼

    • 每個用到數據庫的微服務都應該具備數據庫的自動化遷移能力,比如新增的表在服務啟動時應該會自動創建,而如果服務回滾到舊版本時必須能夠將數據庫對應回滾到原來的結構,比如刪除增加的表或字段等。

    • 前后端應該完全隔離在不同的鏡像中,在服務的總出口處(通常是nginx之類帶有反向代理的服務器)將api和頁面集成到同一域名下

    • 生產環境盡可能利用nginx服務器的熱部署和熱更新能力

    API的自動化測試,可通過如下nodejs工具開發測試腳本:

    • chakram

    • mock

    • mochajs

    實際演練

    微服務有幾個要點:

    • 功能獨立

    • 獨立部署

    • 獨立進程

    • 可替換性

    功能獨立容易理解,而難度是整體服務如何合理拆分,其基本原則就是看該服務的數據是否需要關聯另外一個服務的數據表才能查出,如果是則應該合并到一個服務中,否則可獨立拆分;獨立部署獨立進程?告訴我們,每個服務運行在獨立的進程或服務器中,每個服務都應該可以獨立部署,且不應該影響其他服務的運行;可替換性,則是說每個服務都應該可以隨時用任何編程語言重新實現并替換掉舊有的服務而不會影響其他服務和整體系統的正常運行。

    鑒于每個微服務都可能隨時更新,為了保證整體系統運行的穩定性,我們需要至少做到如下幾點:

    • 每個微服務的更新過程都要足夠的快,要盡可能在1秒內完成,以便減少服務更新時出現的各種異常

    • 每個微服務調用其他服務時最后都具備retry機制,以便在調用到的另外一個微服務出現短期故障(比如更新服務)時,能夠具備過一點時間后再訪問的能力,這樣最前端的用戶或者服務調用者會認為當前的服務調用速度只是比原來慢了而已

    • 集中的日志收集服務,可以通過該服務的界面上查看到各個微服務的日志,以便團隊或項目領導者能夠及時了解和分析系統的運行狀態,及時發現和修復各種問題異常

    • 微服務架構的復雜性決定了微服務總體出現異常的幾率比單體系統要多,所以單元測試和集成測試變得極其重要,甚至可以說是必須的

    • 每個微服務對外的服務接口(如WebAPI),應該都是具備普適性、自釋性、可預見性、明確性的。也就是:

      • 每個微服務的對外接口實現可以不依賴于任何特定的語言

      • 每個微服務調用另外一個服務時,都應該是盡可能使用通用的通信協議,而不是私有的,避免跨語言實現的難度,即通暢是使用HTTP協議

      • 每個服務的最終路由地址是不可隨意變更的

      • 每個服務的路徑自身就是其功能的最簡說明

      • 通過一個api地址就能較為準確的猜出另外一個服務的地址和訪問方式

    基于以上觀點,并假定我們大部分的微服務都使用.NET、Mono或.NET Core編寫,那么如下相關的庫和組件則應該是必須的或優先考量的:

    • NancyFx?這是一個非常優秀的Web框架,獨立于ASP.NET以外,也就是說他自身不依賴System.Web命名空間下的任何東西。具有極好的跨平臺支持能力和極佳的可測試性、組件可替換性、路由可視性。用它編寫微服務,會讓開發過程變得很簡單。當然如果你實在不喜歡這套框架的風格,依然可以選用ASP.NET、ASP.NET MVC、ASP.NET Core等相對傳統的技術,畢竟這并不影響微服務實現的本身。

    • Flurl?這是一個新出現的優雅的的Http客戶端庫,它依然基于HttpClient,但是提供了Fluent風格的編程模型,所以寫代碼時會比傳統方式要爽快和高效的多。雖然RestSharp也是一個很優秀的WebAPI訪問庫,但是它目前不支持.NET Core等框架,所以跨平臺能力欠佳。

    • xUnit.net?這是NUnit.net原作者幾年前重新打造的一個.NET平臺的單元測試框架,具有豐富的工具鏈。微軟官方的ASP.NET MVC等框架也都使用的該框架編寫的所有單元測試,而沒有采用微軟自家的單元測試框架。

    • KestrelHttpServer?這是微軟官方實現的ASP.NET Core的Host服務器框架,可以實現極高性能的SelfHost服務,而不必依賴IIS。

    • TinyMapper?比老牌的AutoMapper具有更佳的性能(大概快60倍),而且老衣也曾貢獻了部分代碼增加了一些特性。不過目前對.NET Core支持方面還有點瑕疵,但可以在.NET項目中大規模使用。

    • Mapster?它跟TinyMapper一樣是新型的Mapper庫,號稱快速、有趣且激動人心的Mapper,老衣目前在.NET Core項目中主要采用這個作為主要的Mapper庫。

    • Json.NET?.NET平臺下最流行的高性能(但不是最快的)JSON庫。

    • Polly?是.NET平臺下,讓開發者可以輕松實現線程安全的重試、熔斷、超時代碼,大幅提升應用穩定性的絕對利器

    • C-Sharp-Promise?Promise在js開發領域大行其道,深得開發者們的喜愛。C#程序員們可以用C-Sharp-Promise,使用Promise的方式編程。一些時候你會發現它比async的方式更好

    • Topshelf?當你需要將一個.NET的Console或者桌面應用,作為Windows服務運行時,它會很好的幫到你。它還支持Mono,也就是說可以在Linux上玩

    • Dapper?輕量級的通用ORM,支持市面上大多數關系型數據庫。兼容.NET、Mono和.NET Core

    在.NET Core上使用Nancy創建一個Hello World級的微服務

  • 先確保node.js和npm已安裝

    node --version npm --version

    如果上述命令顯示未安裝node.js,請到Node.js官網下載對應操作系統的版本,并安裝好。

  • 確保yeoman已經安裝

    yo --version

    如果上述命令未輸出版本號,提示yo命令不存在則,應該使用下面到命令安裝它

    npm install -g yo
  • 確保generator-aspnet已經安裝

    yo aspnet

    如果上述命令提示未安裝一個名叫aspnet的generator,則需要使用下面到命令安裝generator-aspnet

    npm install -g generator-aspnet
  • 上一步命令正常會輸出如下結果

    ? ? _-----_ ? ? ╭──────────────────────────╮| ? ? ? | ? ?│ ? ? ?Welcome to the ? ? ?│|--(o)--| ? ?│ ?marvellous ASP.NET Core │`---------′ ? │ ? ? ? ?generator! ? ? ? ?│( _′U`_ ) ? ?╰──────────────────────────╯/___A___\ ? /| ?~ ?|__'.___.'__′ ? ` ?|° ′ Y `? What type of application do you want to create? (Use arrow keys) ? Empty Web ApplicationEmpty Web Application (F#)Console ApplicationConsole Application (F#)Web ApplicationWeb Application Basic [without Membership and Authorization]Web Application Basic [without Membership and Authorization] (F#) (Move up and down to reveal more choices)

    按鍵盤的?鍵,直到?出現在Nancy ASP.NET Application這一行后,按回車鍵

    在? What's the name of your ASP.NET application? (NancyApplication)后面輸入你的服務的名字(比如:hi)后回車。

    提示: 由于這個名字會出現在代碼中,所以請使用類似C#變量的命名規范輸入,不要使用任何中文字符或-,也不要是純數字。

  • 假設上一步輸入的名字是hi,使用下列命令進入hi目錄,并使用Visual Studio Code打開該目錄

    cd hi code .
  • 用Visual Studio Code打開后,查看修改global.json文件中的sdk version為最新安裝的.NET Core SDK的版本。如果不知道當前安裝的.NET Core SDK是什么版本,可通過執行下列命令查看

    dotnet --version

    如果你安裝的是1.0.4版,則此時應該會看到結果是1.0.4。

    此時把global.json文件中version后面的版本號,改為剛才命令中輸出的版本號(例如1.0.4)。

  • 查看hi.csproj文件中的TargetFramework節點的值,如果你打算使用.NET Core 1.0則應該是netcoreapp1.0,如果打算使用.NET Core 1.1則應該是netcoreapp1.1。你還需要根據自己選擇版本修改Nuget引用的相關庫的版本。還要修改AssemblyName的值為你期望的程序集名,通常我們跟服務名一致,本例中應該是hi

    這里我們使用.NET Core 1.1版來開發,那么此時應該將hi.csproj文件的內容調整為如下:

    <Project ToolsVersion="15.0" ?Sdk="Microsoft.NET.Sdk.Web"><PropertyGroup><TargetFramework>netcoreapp1.1</TargetFramework><DebugType>portable</DebugType><AssemblyName>hi</AssemblyName><OutputType>Exe</OutputType></PropertyGroup><ItemGroup><PackageReference Include="Microsoft.AspNetCore.Hosting" Version="1.1.2" /><PackageReference Include="Microsoft.AspNetCore.Server.Kestrel" Version="1.1.2" /><PackageReference Include="Microsoft.AspNetCore.Owin" Version="1.1.2" /><PackageReference Include="Nancy" Version="2.0.0-clinteastwood" /></ItemGroup></Project>

    注意:?Nancy的版本號應該使用最新支持.NET Core的版本。2.0.0-clinteastwood是編寫此文時的NancyFx最新版。實際操練時需要根據新的情況對應修改。

  • 執行下列命令,加載依賴包、編譯并運行這個hi服務

    dotnet restore dotnet build dotnet run

    會看到如下結果

    Hosting environment: ProductionContent root path: /Users/yimingzhi/Projects/wang/hiNow listening on: http://localhost:5000Application started. Press Ctrl+C to shut down.

    在瀏覽器中訪問http://localhost:5000地址,可以看到Hello from Nancy running on CoreCLR。

    這樣一個最簡單的Hellow World級的微服務已經開發完成。其中HomeModule.cs文件就是這個服務的核心邏輯代碼:

    namespace hi {using Nancy;public class HomeModule : NancyModule{public HomeModule(){Get("/", args => "Hello from Nancy running on CoreCLR");}} }

    是不是非常簡單呢?_

  • 目前這個服務看起來很美,但是存在如下問題:

    因此我們需要借助Docker這個容器工具來解決它,如果你不確定是否安裝了docker,請運行下面的命令確認

    docker --version

    當然你也可以通過

    docker info

    查看docker的一些信息,還可以通過

    docker images

    查看已經pull到本地的docker鏡像列表,需要確認.NET Core的1.1.2運行時(編寫此文時的最新版本)鏡像是否存在,如果不存在請使用下列命令拉取鏡像:

    docker pull microsoft/dotnet:1.1.2-runtime

    拉取完畢后我們就可以準備構建hi服務的docker鏡像了

    • 需要運行主機上安裝.NET Core的sdk或者運行時

    • 如果多個服務用的不同版本的.NET Core則可能會出現版本沖突等問題

    • 部署起來比較麻煩,需要用ftp、rdp、ssh或rsync等工具部署大量文件

    • 基本不具備規模化橫向部署能力,比如一次性部署100個節點

    • 一旦服務崩潰或其他異常退出時,無法自動重啟

    • 在hi目錄下創建一個名字為Dockerfile的文件——注意:這個文件名是區分大小寫并沒有任何擴展名的

    • 用Visual Studio 2017或Visual Studio Code打開剛才創建的Dockerfile文件,并將以下內容寫入并保存:

      FROM microsoft/dotnet:1.1.2-runtime ENV TZ=Asia/Shanghai COPY ./dist /app WORKDIR /app EXPOSE 5000/tcp ENTRYPOINT ["dotnet","./hi.dll"]

      提示:

      ENV TZ Asia/Shanghai?表示該鏡像的容器默認的運行時時區為上海時區,這對于大陸的服務來說至關重要,不加這行默認情況一般都是UTC時間,切記?EXPOSE 5000/tcp?表示該鏡像的容器默認向外暴露5000端口,這里就是hi服務的默認端口?ENTRYPOINT ["dotnet","./hi.dll"]?中的hi.dll,為服務的主運行程序,不同服務這個地方會有所不同

      之所以使用runtime版的基礎鏡像而不是sdk版,是因為sdk版的鏡像太大(大了幾百兆),對publish后的.NET Core應用也是沒有必要的。

    • 在hi目錄下運行下面的一組命令構建正式發布版的hi服務鏡像

      dotnet restore dotnet build -c Release dotnet publish -c Release -o dist docker build -t hi .

      使用docker images命令查看是否有名為hi的鏡像出現在列表中。如果沒有,請檢查上面的這組命令是否輸出了什么錯誤信息,修改代碼并重新執行上面這組命令,直到docker鏡像列表中有名為hi的鏡像出現為止。

      提示

      上面這組命令中hi服務被發布在dist目錄中,因此需要在.gitignore中將dist目錄設置為忽略項,不做版本控制。

    • 通過下面的命令執行hi鏡像:

      docker run --name hiServ --rm -p 5000:5000 hi

      此時會收到如下結果:

      Hosting environment: ProductionContent root path: /appNow listening on: http://localhost:5000Application started. Press Ctrl+C to shut down.

      第1行告訴你運行環境是產品環境還是開發環境;第3行意思是你可以通過訪問本機的http://localhost:5000看到結果。但是這時候我們在瀏覽器中訪問http://localhost:5000,會提示你:無法訪問此網站。

      在另外一個控制臺窗口(Windows下叫命令行窗口)中運行下面的命令進入容器:

      docker exec -it hiServ bash

      運行命令:

      curl http://localhost:5000/

      此時會看到輸出結果為Hello from Nancy running on CoreCLR,這說明hi服務可從內容內訪問,是容器外無法訪問。

      輸入exit命令退出容器

    • 打開Program.cs文件,在.UseKestrel()下插入一行新代碼.UseUrls("http://*:5000/"),即Program.cs的代碼變為:

      namespace hi {using System.IO;using Microsoft.AspNetCore.Hosting; ? ?public class Program{ ? ? ? ?public static void Main(string[] args){var host = new WebHostBuilder() ? ? ? ? ? ? ? ?.UseContentRoot(Directory.GetCurrentDirectory()) ? ? ? ? ? ? ? ?.UseKestrel() ? ? ? ? ? ? ? ?.UseUrls("http://*:5000/") ? ? ? ? ? ? ? ?.UseStartup<Startup>() ? ? ? ? ? ? ? ?.Build();host.Run();}} }
    • 再次運行下面這組命令,重新構建hi服務的鏡像:

      dotnet restore dotnet build -c Release dotnet publish -c Release -o dist docker build -t hi .

      運行下面的命令臨時將hi鏡像以名為hiServ的容器運行:

      docker run --name hiServ --rm -p 5000:5000 hi

      打開瀏覽器,訪問http://localhost:5000/,看到了Hello from Nancy running on CoreCLR。

      這樣我們的hi服務容器鏡像就算成功了。

      提示

      docker run --name hiServ --rm -p 5000:5000 hi?中的--name hiServ是為容器起一個特定名字hiServ;?--rm是讓這個容器在退出時立即刪除;?-p 5000:5000?是為了將容器的5000端口映射到當前主機的5000端口上,以便在真機中可以測試訪問這個服務。 最終生產環境中不會以當前用戶的前置進程方式運行,否則用戶退出時容器就會結束運行。所以我們通常會額外附加-d參數讓服務在后臺執行,詳情請參考Docker CLI的官方文檔。

    • 將hi服務增加數據有關的API

      前面,我們演示了如何使用docker將一個.NET Core跑起來。下面為hi服務增加幾個復雜的API

      增加一個服務狀態的api

    • 在hi這個項目中增加一個新文件StatusModule.cs,內容如下

      namespace hi{using Nancy; ? ?using System; ? ?public class StatusModule : NancyModule{public StatusModule(){Get("/status", _ =>{ ? ? ? ? ? ? ? ?return new{running = true,time = DateTime.Now};});}} }

      用下面的一組命令運行起hi服務:

      dotnet restore dotnet build dotnet run

      用postman或非windows系統的命令行工具curl,訪問http://localhost:5000/status,會收到一個json數據,類似于:

      {"running": true,"time": "2017-05-16T18:03:34.4867970+08:00"}

      但是,如果你用瀏覽器訪問http://localhost:5000/status你會收到一個錯誤頁,標題是500 - Internal Server Error,不過你看不到錯誤內容——讓你改一下代碼才能看到錯誤。

      在hi目錄中新建一個文件Bootstrapper.cs,內容如下:

      namespace hi{using Nancy; ? ?public class Bootstrapper : DefaultNancyBootstrapper{public override void Configure(Nancy.Configuration.INancyEnvironment environment){#if DEBUGenvironment.Tracing(enabled: false, displayErrorTraces: true);#endif}} }

      再次編譯運行,

      dotnet restore dotnet build dotnet run

      用瀏覽器訪問http://localhost:5000/status,會看到一個很詳細的Nancy.ViewEngines.ViewNotFoundException異常報告,意思是找不到名為><f__AnonymousType0'2的任何視圖文件。

      這其實是Nancy框架的一個特性,他可以實現一個地址即是webapi又是網頁,其具體的原理就是判斷當前請求的Content-Type中是否以text/html開頭,如果是說明當前請求是一個瀏覽器,那么Nancy就會使用當前地址返回的model類型名作為視圖名查找視圖文件,找到了就用類似于mvc的方式顯示視圖頁面,如果找不到就報錯。

      如果我們不希望用這個特性,就是期望該地址永遠返回一個json數據,則需要使用Response.AsJson方法。StatusModule.cs應該修改為:

      namespace hi{using Nancy; ? ?using System; ? ?public class StatusModule : NancyModule{public StatusModule(){Get("/status", _ =>{ ? ? ? ? ? ? ? ?return Response.AsJson(new{running = true,time = DateTime.Now});});}} }

      再次編譯運行,

      dotnet restore dotnet build dotnet run

      用瀏覽器訪問http://localhost:5000/status,我們會看到與在postman看到的一樣漂亮的json數據。Great!

    • 準備一個數據庫,為了跨平臺我們選擇PostgreSQL數據庫。當然了在計算機上安裝一個數據庫是很麻煩的事情,這里我們用Docker直接用官方的postgres鏡像運行起一個容器即可。執行下列命令:

      docker run --name pgdb -e POSTGRES_PASSWORD=123456 -p 5432:5432 -d postgres

      此時我們就準備好了一個postgres數據庫,賬號是postgres,密碼是123456,并可以通過本機的5432端口訪問到它。你可以使用pgAdmin鏈接并管理這個數據庫,老衣假定你已經學會使用pgAdmin的基本功能,才繼續下面的演練的。

    • 使用pgAdmin在pgdb這個數據庫容器中創建一個新的數據庫hiDB

    • 在hi項目上,從Nuget引用最新版的Npgsql,先在Bootstrapper.cs中通過Nancy自帶的容器注冊一個數據庫連接:

      namespace hi{using System.Data; ? ?using Nancy; ? ?public class Bootstrapper : DefaultNancyBootstrapper{public override void Configure(Nancy.Configuration.INancyEnvironment environment){#if DEBUGenvironment.Tracing(enabled: false, displayErrorTraces: true);#endif} ? ? ? ?protected override void ConfigureApplicationContainer(Nancy.TinyIoc.TinyIoCContainer container){base.ConfigureApplicationContainer(container);container.Register<IDbConnection>((c, p) =>{ ? ? ? ? ? ? ? ?return new Npgsql.NpgsqlConnection("Host=localhost;Username=postgres;Password=123456;Database=hiDB;Timeout=3");});}} }

      然后增加一個DbConnectExtensions.cs文件,代碼:

      using System.Data;namespace hi { ? ?public static class DbConnectExtensions{ ? ? ? ?public static bool IsConnectable(this IDbConnection conn){ ? ? ? ? ?bool connectable = false; ? ? ? ? ?try{conn.Open();var cmd = conn.CreateCommand();cmd.CommandText = "select 1;"; ? ? ? ? ? ? ?int r = (int)cmd.ExecuteScalar();connectable = r == 1;} ? ? ? ? ?catch{connectable = false;} ? ? ? ? ?finally{ ? ? ? ? ? ? ?if (conn.State == ConnectionState.Open){conn.Close();}} ? ? ? ? ?return connectable;}} }

      之后在StatusModule.cs中增加數據庫可連接性的狀態檢測,代碼如下:

      namespace hi{using System; ? ?using System.Data; ? ?using Nancy; ? ?public class StatusModule : NancyModule{public StatusModule(IDbConnection conn){Get("/status", _ =>{ ? ? ? ? ? ? ? ?return Response.AsJson(new{running = true,dbConnectable = conn.IsConnectable(),time = DateTime.Now});});}} }

      再次調試運行hi項目,然后訪問http://localhost:5000/status會收到類似于下面這樣的json數據:

      {running: true,dbConnectable: true,time: "2017-05-17T14:47:47.1287050+08:00" }

      其中dbConnectable表示數據庫可連接性狀態。如果你把數據庫容器停止:

      docker stop pgdb

      再次調試運行,并訪問http://localhost:5000/status,會發現dbConnectable的值變為false了。 嗯,腦袋聰明的你一定會想: 這個數據庫檢測的代碼應該封裝成一個方法,這樣就可以多個服務中都能方便做這個檢查了; 而數據庫連接字符串,也應該用配置文件。老衣在這里先提示你這未必是好的,至于原因嗎,后面會有討論。

      當然了,你也可以在這個api中增加CPU、內存等實時環境狀態數據,用于監控服務通過這個api定時獲取到該服務的相關狀態數據

    • 增加一組簡單的新聞相關API

    • 先確保數據庫容器pgdb處于啟動狀態:

      docker start pgdb
    • 在數據庫hiDB上建一張news表:

      create table news (id serial primary key,title varchar(200) not NULL,content text NOT NULL)
    • 在hi項目上,從Nuget引用最新版的Dapper和Dapper.Contrib

    • 在hi項目中,新建一個文件NewModule.cs:

      using System.Data;using Dapper.Contrib.Extensions;using Nancy;using Nancy.ModelBinding;namespace hi{public class NewsModule : NancyModule{public NewsModule(IDbConnection conn){Get("/api/news", _ =>{ ? ? ? ? ? ? ? ?return Response.AsJson(conn.GetAll<News>());});Post("/api/news", _ =>{ ? ? ? ? ? ? ? ?var model = this.Bind<News>(); ? ? ? ? ? ? ? ?var insertNumber = conn.Insert(model); ? ? ? ? ? ? ? ?return Response.AsJson(insertNumber > 0);});Get("/api/news/{id:int}", x =>{ ? ? ? ? ? ? ? ?int id = x.id; ? ? ? ? ? ? ? ?var model = conn.Get<News>(id);if (model == null){ ? ? ? ? ? ? ? ? ? ?return Response.AsJson(new { error = "該新聞不存在" }).WithStatusCode(HttpStatusCode.NotFound);} ? ? ? ? ? ? ? ?return Response.AsJson(model);});}}[Table("news")] ? ?public class News{public int id{ ? ? ? ? ? ?get; ? ? ? ? ? ?set;} ? ? ? ?public string title{ ? ? ? ? ? ?get; ? ? ? ? ? ?set;} ? ? ? ?public string content{ ? ? ? ? ? ?get; ? ? ? ? ? ?set;}} }

      為了簡單期間,我把News的定義放在了同一個文件中,實際項目中不應該這樣寫

      即增加了3個API:

      用postman向http://localhost:5000/api/news?POST 一條json數據:

      {"title":"test","content":"this is only one test"}

      收到true說明添加成功,接著GET請求http://localhost:5000/api/news會獲取含有剛添加的新聞的數組json:

      [{"id": 1,"title": "test","content": "this is only one test"} ]

      GET 請求?http://localhost:5000/api/news/1會獲取id為1的新聞數據json:

      {"id": 1,"title": "test","content": "this is only one test"}

      GET 請求?http://localhost:5000/api/news/2會獲取一個狀態碼為404的json數據:

      {"error": "該新聞不存在"}

      很棒啊, 3個API都表現正常了。是不是感覺用Nancy替代ASP.NET MVC,用Dapper替代EntityFramework?寫代碼變得更暢快淋漓呢?嗯,不過也不是說這些替代就任何場合都會更好,這完全可以由開發者或團隊根據實際情況自由控制。 但老衣在這里主要是想說,一些其他選擇也許可以讓你的開發變得輕松有趣一些了,甚至更多好處。

      總之,以后我們也就可以使用以上類似的方式,很快速的創建其他微服務了。

      • 所有新聞的列表

      • 添加一個新聞

      • 獲取指定id的新聞

    • 嗯,到這里不知道你是否想起了前面的數據庫連接字符串中,包含了Host=localhost?也就是說數據庫服務器的所在地是本機。而我們的數據庫實際上是在另外一個容器中,只是因為我們運行容器時把本機端口和容器做了個映射,所以造成了數據庫在本機的假象。我們到底應該如何處理呢?一臺生產環境的機器上可能會有多個數據庫容器,或者其他服務的容器,我們不能也不應該把所有服務的端口都在真實生產環境中上進行映射暴露。生產環境中數據庫容器或類似的涉及信息安全的容器,都應該盡可能不允許外部直接訪問,而是使用容器的相關通信手段。這樣一來,我們的hi服務訪問的數據庫應該是pgdb這個容器。所以在部署(非開發階段)應該將Host的值改為pgdb,并使用link方式將hi服務的容器與pgdb進行連接,直接通過容器通信。改完數據庫連接字符串后,重新制作hi服務的容器鏡像

      dotnet restore dotnet build -c Release dotnet publish -c Release -o dist docker build -t hi .

      構建完成后,以容器方式連接pgdb并運行

      docker run --name hiServ --rm -p 5000:5000 --link pgdb:pgdb hi

      訪問http://localhost:5000/status,收到

      {running: true,dbConnectable: true,time: "2017-05-18T14:52:30.3009050+08:00" }

      可以看出數據庫連接是成功的,很棒。即使你把pgdb容器的端口映射移除,也會發現hi服務仍可以訪問pgdb容器的數據庫,但是你的pgadmin就訪問不了,挺安全吧 :D 至于如何跨服務器連接容器通信,這屬于高級話題,有機會再細聊或者直接查相關文檔和書籍研究一下。

    • 看起來這時候我們用一個數據庫容器和一個hi服務容器實現了期望的功能,是不是完美了呢?當然不完美,因為不完美的人類永遠造不出完美的事物來,只能盡力無限趨向完美!(來自老衣語錄^_^)把數據庫容器也作為一個微服務,我們都知道:是個服務就有升級、更新、重啟或宕機的時候。我們希望數據庫容器中的數據庫因某原因出現崩潰退出時能夠自動重啟數據庫服務,以便達到整體系統的高可用度。docker運行容器時指定--restart參數就可以非常簡單做到這一點,Great!看起來很美是不是,但請想一下如果用戶剛好在數據庫崩潰時訪問了hi服務,是不是就會收到服務器端異常呢?就前面實現的代碼來說,答案是肯定的。那么怎么能夠讓用戶感受不到這中間的短時間數據庫失聯呢?前文中我們提到過.NET領域有個很好的庫Polly,可以再遇到一些異常時實現Retry。現在用它改造一下hi服務的代碼,讓新聞有關的幾個api實現數據庫鏈接異常時自動Retry:

      先在hi項目上用Nuget引用Polly,然后修改NewsModule.cs的代碼為:

      using System.Data; using Dapper.Contrib.Extensions; using Nancy; using Nancy.ModelBinding; using Polly;namespace hi { ? ?public class NewsModule : NancyModule{ ? ? ? ?public NewsModule(IDbConnection conn){Get("/api/news", _ =>{var list = DbRetry().Execute(() => { return conn.GetAll<News>(); }); ? ? ? ? ? ? ? ?return Response.AsJson(list);});Post("/api/news", _ =>{var model = this.Bind<News>();var insertNumber = DbRetry().Execute(() => { return conn.Insert(model); }); ? ? ? ? ? ? ? ?return Response.AsJson(insertNumber > 0);});Get("/api/news/{id:int}", x =>{ ? ? ? ? ? ? ? ?int id = x.id;var model = DbRetry().Execute(() => { return conn.Get<News>(id); }); ? ? ? ? ? ? ? ?if (model == null){ ? ? ? ? ? ? ? ? ? ?return Response.AsJson(new { error = "該新聞不存在" }).WithStatusCode(HttpStatusCode.NotFound);} ? ? ? ? ? ? ? ?return Response.AsJson(model);});}Policy DbRetry(){ ? ? ? ? ? ?return Policy.Handle<System.Net.Sockets.SocketException>() ? ? ? ? ? ? ? ? ? ? ? ? .Or<Npgsql.NpgsqlException>() ? ? ? ? ? ? ? ? ? ? ? ? .RetryForever();}}[Table("news")] ? ?public class News{ ? ? ? ?public int id{get;set;} ? ? ? ?public string title{get;set;} ? ? ? ?public string content{get;set;}} }

      編譯運行hi服務后,不要著急訪問news相關api,先模擬數據庫失聯:

      docker stop pgdb

      等數據庫停止后,用瀏覽器訪問http://localhost:5000/api/news,你會發現瀏覽器一直在等待服務器響應…… 立即再切換到剛才的命令行窗口,啟動數據庫容器:

      docker start pgdb

      再次切換到剛才訪問http://localhost:5000/api/news那個瀏覽器窗口,你會驚奇的發現有數據了,而不是返回數據庫異常!這就是Polly的強大之處。當然了這個庫還有很多強大功能,請移步到官方網站查看文檔學習一下吧。

      到這里,聰明的你是否已經聯想到,其他情況一個微服務請求另外一個微服務的時候也可以用Polly實現高可用呢?

    • 用用OpenResty吧

      OpenResty?是一款基于?NGINX?和?LuaJIT?的 動態Web 平臺。你可以根據自己的需求設定啟用的模塊,并編譯生成自己定制的OpenResty。官方的Docker鏡像默認包含了一些模塊:

      • file-aio

      • http_addition_module

      • http_auth_request_module

      • http_dav_module

      • http_flv_module

      • http_geoip_module=dynamic

      • http_gunzip_module

      • http_gzip_static_module

      • http_image_filter_module=dynamic

      • http_mp4_module

      • http_random_index_module

      • http_realip_module

      • http_secure_link_module

      • http_slice_module

      • http_ssl_module

      • http_stub_status_module

      • http_sub_module

      • http_v2_module

      • http_xslt_module=dynamic

      • ipv6

      • mail

      • mail_ssl_module

      • md5-asm

      • pcre-jit

      • sha1-asm

      • stream

      • stream_ssl_module

      • threads

      其中http_auth_request_module可以實現簡單的登錄后訪問某資源的功能,并且身份驗證和資源是分開的,具體介紹可參考http://ohmycat.me/nginx/2016/06/28/nginx-ldap.html;http_image_filter_module模塊則可以輕松實現實時縮略圖、圖片旋轉等,可參考?https://ruby-china.org/topics/31498?了解。其他模塊功能請自行Google吧。

      OpenResty繼承了Nginx的高性能、反向代理等優點外,還支持使用Lua腳本編寫動態邏輯代碼,甚至是服務器端視圖。這里我們說一下如何用openresty簡單實現前面的新聞列表api的功能。

    • 先在一個新建的目錄中創建一個Dockerfile用來創建帶有postgres訪問能力的openresty鏡像:

      FROM centos:7MAINTAINER Evan Wies <evan@neomantra.net># Docker Build Arguments ARG RESTY_VERSION="1.11.2.3" ARG RESTY_LUAROCKS_VERSION="2.3.0" ARG RESTY_OPENSSL_VERSION="1.0.2k" ARG RESTY_PCRE_VERSION="8.39" ARG RESTY_J="1" ARG RESTY_CONFIG_OPTIONS="\ ? ?--with-file-aio \ ? ?--with-http_addition_module \ ? ?--with-http_auth_request_module \ ? ?--with-http_dav_module \ ? ?--with-http_flv_module \ ? ?--with-http_geoip_module=dynamic \ ? ?--with-http_gunzip_module \ ? ?--with-http_gzip_static_module \ ? ?--with-http_image_filter_module=dynamic \ ? ?--with-http_mp4_module \ ? ?--with-http_random_index_module \ ? ?--with-http_realip_module \ ? ?--with-http_secure_link_module \ ? ?--with-http_slice_module \ ? ?--with-http_ssl_module \ ? ?--with-http_stub_status_module \ ? ?--with-http_sub_module \ ? ?--with-http_v2_module \ ? ?--with-http_xslt_module=dynamic \ ? ?--with-ipv6 \ ? ?--with-mail \ ? ?--with-mail_ssl_module \ ? ?--with-md5-asm \ ? ?--with-pcre-jit \ ? ?--with-sha1-asm \ ? ?--with-stream \ ? ?--with-stream_ssl_module \ ? ?--with-threads \ ? ?--with-http_postgres_module \ ? ?"# These are not intended to be user-specified ARG _RESTY_CONFIG_DEPS="--with-openssl=/tmp/openssl-${RESTY_OPENSSL_VERSION} --with-pcre=/tmp/pcre-${RESTY_PCRE_VERSION}"# 1) Install yum dependencies# 2) Download and untar OpenSSL, PCRE, and OpenResty# 3) Build OpenResty# 4) CleanupRUN \ ? ?yum install -y \ ? ? ? ?gcc \ ? ? ? ?gcc-c++ \ ? ? ? ?gd-devel \ ? ? ? ?GeoIP-devel \ ? ? ? ?libxslt-devel \ ? ? ? ?make \ ? ? ? ?perl \ ? ? ? ?perl-ExtUtils-Embed \ ? ? ? ?readline-devel \ ? ? ? ?unzip \ ? ? ? ?zlib-devel \ ? ? ? ?postgresql-devel \ ? ?&& cd /tmp \ ? ?&& curl -fSL https://www.openssl.org/source/openssl-${RESTY_OPENSSL_VERSION}.tar.gz -o openssl-${RESTY_OPENSSL_VERSION}.tar.gz \ ? ?&& tar xzf openssl-${RESTY_OPENSSL_VERSION}.tar.gz \ ? ?&& curl -fSL https://ftp.pcre.org/pub/pcre/pcre-${RESTY_PCRE_VERSION}.tar.gz -o pcre-${RESTY_PCRE_VERSION}.tar.gz \ ? ?&& tar xzf pcre-${RESTY_PCRE_VERSION}.tar.gz \ ? ?&& curl -fSL https://openresty.org/download/openresty-${RESTY_VERSION}.tar.gz -o openresty-${RESTY_VERSION}.tar.gz \ ? ?&& tar xzf openresty-${RESTY_VERSION}.tar.gz \ ? ?&& cd /tmp/openresty-${RESTY_VERSION} \ ? ?&& ./configure -j${RESTY_J} ${_RESTY_CONFIG_DEPS} ${RESTY_CONFIG_OPTIONS} \ ? ?&& make -j${RESTY_J} \ ? ?&& make -j${RESTY_J} install \ ? ?&& cd /tmp \ ? ?&& rm -rf \ ? ? ? ?openssl-${RESTY_OPENSSL_VERSION} \ ? ? ? ?openssl-${RESTY_OPENSSL_VERSION}.tar.gz \ ? ? ? ?openresty-${RESTY_VERSION}.tar.gz openresty-${RESTY_VERSION} \ ? ? ? ?pcre-${RESTY_PCRE_VERSION}.tar.gz pcre-${RESTY_PCRE_VERSION} \ ? ?&& curl -fSL http://luarocks.org/releases/luarocks-${RESTY_LUAROCKS_VERSION}.tar.gz -o luarocks-${RESTY_LUAROCKS_VERSION}.tar.gz \ ? ?&& tar xzf luarocks-${RESTY_LUAROCKS_VERSION}.tar.gz \ ? ?&& cd luarocks-${RESTY_LUAROCKS_VERSION} \ ? ?&& ./configure \ ? ? ? ?--prefix=/usr/local/openresty/luajit \ ? ? ? ?--with-lua=/usr/local/openresty/luajit \ ? ? ? ?--lua-suffix=jit-2.1.0-beta2 \ ? ? ? ?--with-lua-include=/usr/local/openresty/luajit/include/luajit-2.1 \ ? ?&& make build \ ? ?&& make install \ ? ?&& cd /tmp \ ? ?&& rm -rf luarocks-${RESTY_LUAROCKS_VERSION} luarocks-${RESTY_LUAROCKS_VERSION}.tar.gz \ ? ?&& yum clean all \ ? ?&& ln -sf /dev/stdout /usr/local/openresty/nginx/logs/access.log \ ? ?&& ln -sf /dev/stderr /usr/local/openresty/nginx/logs/error.log# Add additional binaries into PATH for convenience ENV PATH=$PATH:/usr/local/openresty/luajit/bin/:/usr/local/openresty/nginx/sbin/:/usr/local/openresty/bin/ENTRYPOINT ["/usr/local/openresty/bin/openresty", "-g", "daemon off;"]

      用這個文件構建一個鏡像(建議翻墻狀態構建,你懂的):

      docker build -t openresty:postgres .
    • 在另外一個新建的目錄(假設名字叫newsOR)中,新建一個index.html文件:

      <html ng-app="app"><head><title>新聞列表</title><link href="https://cdn.bootcss.com/bootstrap/3.3.7/css/bootstrap.min.css" rel="stylesheet"></head><body><div class="container" ng-controller="newsListCtrl"><h2>新聞列表</h2><table class="table table-bordered"><thead><th>ID</th><th>標題</th><th>內容</th></thead><tbody><tr ng-repeat="item in list"><td ng-bind="item.id"></td><td ng-bind="item.title"></td><td ng-bind="item.content"></td></tr></tbody></ul></div><script src="https://cdn.bootcss.com/angular.js/1.6.4/angular.min.js"></script><script>angular.module('app', []).controller('newsListCtrl', function ($scope, $http) {$scope.list = [];$http.get('/api/news').then(function (res) {$scope.list = res.data;});}); ? ?</script></body></html>
    • 在newsOR目錄中,創建一個nginx.conf文件:

      #user ?nobody;worker_processes ?1;events { ? ?worker_connections ?1024; }http { ? ?include ? ? ? mime.types; ? ?default_type ?application/octet-stream; ? ?sendfile ? ? ? ?on; ? ?keepalive_timeout ?65; ? ?upstream pgsql { ? ? ? ?postgres_server pgdb:5432 dbname=hiDB password=123456 user=postgres; ? ? ? ?postgres_keepalive off;} ? ?server { ? ? ? ?listen ? ? ? 80; ? ? ? ?server_name ?localhost; ? ? ? ?charset utf-8; ? ? ? ?location / { ? ? ? ? ? ?root /www; ? ? ? ? ? ?index index.html;} ? ? ? ?location /api/news { ? ? ? ? ? ?postgres_pass pgsql; ? ? ? ? ? ?rds_json on; ? ? ? ? ? ?postgres_query 'select * from news';}} }
    • 在上一步創建的目錄中,創建一個Dockerfile文件:

      FROM openresty:postgres ENV TZ=Asia/Shanghai COPY ./nginx.conf /usr/local/openresty/nginx/conf/nginx.confEXPOSE 80ENTRYPOINT ["/usr/local/openresty/bin/openresty", "-g", "daemon off;"]

      構建這個鏡像:

      docker build -t news:or .
    • 連接pgdb容器運行上一步構建的鏡像:

      docker start pgdb docker run --rm -p 8000:80 --link pgdb:pgdb news:or
    • 用瀏覽器訪問http://localhost:8000/api/news你會看到跟之前我們訪問hi服務的新聞列表api獲得一樣的json數據。但這里我們實際上只是在nginx.conf中加了幾行配置就實現了。更加簡單快速(雖然第一次準備支持postgres的openresty鏡像有點慢,但是這個鏡像是可以復用的,不必每次都重新構建)!訪問http://localhost:8000/可以看到通過這個api獲取數據后綁定到前端頁面列表

    • 如果我們先把之前的hi服務容器hiServ運行起來,并把前面步驟中的nginx.conf中到/api/news的配置改為:

      proxy_set_header Content-Type application/json;proxy_pass http://hiServ:5000/api/news;

      然后再次構建news:or鏡像,并重新運行這個鏡像的容器,你會發現效果跟第5步一樣。只是原來上是通過反向代理訪問了hiServ上的新聞api而已。

    • 至于如何使用openresty設置更復雜的反向代理、運行Lua腳本等細節,請移步到http://agentzh.org/misc/slides/ngx-openresty-ecosystem/#1?了解一些相關特性,也到https://moonbingbing.gitbooks.io/openresty-best-practices/content/查看相關最佳實踐,一次學習終生受用。

    • 用shelljs自動拉取代碼構建鏡像并推送Slack通知

      你可能已經發現了,我們前面的內容中幾乎所有的編譯、發布、打包、容器的運行停止等都是用命令行來做的。原因就是命令行指令可以寫成批處理腳本,腳本并不涉及鼠標點擊等人工干預,所以就可以讓機器自按照一些計劃安排自動反復執行。我們在前面提到過的xunit.net、mocha等測試框架甚至grunt、gulp、webpack等web前端打包工具也都有對應的命令行(CLI)支持,所以也都可以很方便的自動化執行。

      我們選擇shelljs作為批處理工具的原因是使用熟悉的javascript語言寫比其他有很多額外的好處,比如更豐富的基礎類庫、工具鏈、依賴包等。

      至于Slack的介紹前面已經講過,我們主要用它把機器和人之間的交互打通,讓機器積極主動的告訴人或團隊,一些代碼發生了什么事情。

      提示:

      下面的例子代碼可能僅兼容MacOS或Linux,不支持Windows

    • 準備 Slack 集成的WebHook:

      假設你已經在Slack上注冊并創建了自己的團隊url是https://XXX.slack.com。那么請登錄后訪問https://XXX.slack.com/apps/manage/custom-integrations,在Incoming WebHooks configuration中添加真對您某個頻道(假設是YYYY)的配置,此時會獲得一個WebHook的Url,我們假設這個Url是https://hooks.slack.com/services/T00000000/B00000000/XXXXXXXXXXXXXXXXXXXXXXXX。incoming-webhooks的使用方式可以查看?https://api.slack.com/incoming-webhooks

    • 切換到hi服務所在目錄的父級目錄中

    • 新建一個用于推送Slack通知的slack.sh文件:

      channel=$1nickname=$2msg=$3data="payload={\"text\": \"${msg}\", \"channel\": \"#${channel}\", \"username\": \"${nickname}\", \"icon_emoji\": \":monkey_face:\"}"curl -X POST \ --data-urlencode "${data}" \https://hooks.slack.com/services/T00000000/B00000000/XXXXXXXXXXXXXXXXXXXXXXXX
    • 新建一個build.js:

      var SECONDS_FOR_BUILD = 1 * 60; //兩次構建之間間隔的秒數exec('clear');echo('每隔' + SECONDS_FOR_BUILD + '秒檢查git代碼是否更新');
      function build_dotnet(){cd('hi'); ? ?echo('從git上拉取最新代碼...');exec('git pull'); ? ?echo('清理編譯環境...'); //清理的目的是為了強制更新,可根據自己的實際需求決定是否需要這樣做rm('-rf', './bin');rm('-rf', './obj');rm('-rf', './dist');exec('dotnet clear'); ? ?echo('編譯并發布...');exec('dotnet restore'); ? ?var buildResult = exec('dotnet build -c Release'); ? ?if (buildResult.code != 0) { ? ? ? ?echo('編譯失敗!');exec('sh slack.sh YYYY CSharp編譯器 糟糕代碼沒有編譯通過', { silent: true }); ? ? ? ?return;}exec('dotnet publish -c Release -o dist'); ? ?echo('構建Docker鏡像...');exec('docker build -t hi .'); ? ?//echo('推送鏡像到私有Docker Registry')//exec('docker push xxx.xxxxx.xxx/hi'); //將 xxx.xxxxx.xxx 改為自己的私有Docker Registry地址echo('完成');exec('sh slack.sh YYYY 構建器 恭喜主人,新版本的鏡像已經準備好了', { silent: true });cd('../'); }build_dotnet(); //立即執行一次構建setInterval(function () {build_dotnet(); }, SECONDS_FOR_BUILD * 1000);
    • 運行命令:

      shjs build.js

      這個構建程序會每個一段時間(上面代碼中為60秒)拉取最新代碼,然后編譯、發布、打包docker鏡像、推送docker鏡像等一系列動作。

      如果代碼沒有編譯通過,你會在Slack中收到一個來自機器人CSharp編譯器的消息推送糟糕代碼沒有編譯通過;如果編譯通過、打包好新的Docker鏡像,推送至私有Docker Registry上后,你又會在Slack中收到一個來自機器人構建器的消息推送恭喜主人,新版本的鏡像已經準備好了。是不是很酷呢?團隊或項目主管可以第一時間通過Slack了解構建程序執行的情況。

    • 生產環境中則可以用build.js類似的方式定期從私有Docker Registry上使用docker pull xxx.xxxxx.xxx/hi的命令拉取最新hi服務的Docker鏡像,并用新的鏡像替換舊的。甚至可以使用docker-compose或docker-swarm等做docker的編排和集群更新。這里因為各自情況不同,老衣就不給例子代碼了,你發揮一下自己的想象力和編程能力吧。

    • 附錄

      • 有基于OpenResty的國產API網關:Orange, 可以參考學習一下,因為中文文檔的產品對國人來說太好了

      • .NET Core領域的很多優秀庫和項目可以參考https://github.com/thangchung/awesome-dotnet-core

      • Actor Model(Actor模型)也可以實現一些場景的微服務,建議學習和了解一些成熟的框架(例如?Akka、Akka.NET、Orleans等);目前我比較喜歡的是Proto.Actor

      • zeit?是一家微服務領域很神奇的公司,開源了不少不錯的庫,比如pkg可以把nodejs項目直接打包成可執行程序,而不必依賴Node.js環境;micro?輕松實現基于Node.js的異步HTTP微服務;hyper?構建在Web技術上的終端控制臺;next.js?是在服務器端渲染React應用的框架。仔細學習研究一下會有很多收獲的

      • Jint?是一個.NET版的javascript解釋器,它提供了對ECMA5.1的完整兼容,并且可以運行在任何.NET平臺上。由于它不會動態生成.NET代碼,也不使用DLR,所以它可以很快的運行相對較小的js腳本。

      • NLua?是綁定.NET世界和Lua世界的項目。它可以讓你在Windows, Linux, Mac, iOS , Android, Windows Phone 7 and 8等幾乎任何C#應用中實現.NET與Lua的相互調用。


      原文:http://yimingzhi.net/2018/03/lao-yi-de-wei-fu-wu-shi-jian-jian-yao-zhi-yin-2017-ban


      .NET社區新聞,深度好文,歡迎訪問公眾號文章匯總 http://www.csharpkit.com

    總結

    以上是生活随笔為你收集整理的老衣的微服务实践简要指引2017版的全部內容,希望文章能夠幫你解決所遇到的問題。

    如果覺得生活随笔網站內容還不錯,歡迎將生活随笔推薦給好友。

    欧洲熟妇精品视频 | 久久国产精品精品国产色婷婷 | 精品国产av色一区二区深夜久久 | 蜜臀aⅴ国产精品久久久国产老师 | 精品人人妻人人澡人人爽人人 | 国精产品一品二品国精品69xx | 人妻有码中文字幕在线 | 极品嫩模高潮叫床 | 亚洲国产欧美日韩精品一区二区三区 | 色一情一乱一伦一区二区三欧美 | 精品久久久无码中文字幕 | 亚洲人成无码网www | 国产成人一区二区三区在线观看 | 亚洲欧美日韩国产精品一区二区 | 国产性生大片免费观看性 | 久久久久久久人妻无码中文字幕爆 | 久久久中文久久久无码 | 国产精品美女久久久 | 午夜熟女插插xx免费视频 | 中文字幕av日韩精品一区二区 | 国产精品18久久久久久麻辣 | 国产一区二区三区四区五区加勒比 | 麻豆md0077饥渴少妇 | 久久综合激激的五月天 | 强奷人妻日本中文字幕 | 亚洲色www成人永久网址 | 中文字幕无码av激情不卡 | 国产精品va在线观看无码 | 日本xxxx色视频在线观看免费 | 性欧美疯狂xxxxbbbb | 大胆欧美熟妇xx | 久久久婷婷五月亚洲97号色 | 亚洲精品国产精品乱码不卡 | 日本一卡二卡不卡视频查询 | 俺去俺来也www色官网 | 亚洲综合在线一区二区三区 | 亚洲色欲色欲天天天www | 图片区 小说区 区 亚洲五月 | 强伦人妻一区二区三区视频18 | 无码av最新清无码专区吞精 | 国产成人精品一区二区在线小狼 | 精品 日韩 国产 欧美 视频 | 亚洲乱码中文字幕在线 | 无人区乱码一区二区三区 | 自拍偷自拍亚洲精品被多人伦好爽 | 久久人人爽人人人人片 | 国产激情精品一区二区三区 | 国产真实乱对白精彩久久 | 久久亚洲国产成人精品性色 | 婷婷色婷婷开心五月四房播播 | 日本乱偷人妻中文字幕 | 天天综合网天天综合色 | 成人精品视频一区二区三区尤物 | 在线а√天堂中文官网 | 人妻少妇精品无码专区二区 | 俺去俺来也www色官网 | 国产精品久久久av久久久 | 男女下面进入的视频免费午夜 | 国产 浪潮av性色四虎 | 美女毛片一区二区三区四区 | 乱人伦人妻中文字幕无码久久网 | 丁香花在线影院观看在线播放 | 红桃av一区二区三区在线无码av | 日本精品少妇一区二区三区 | 色欲久久久天天天综合网精品 | 国产亚洲美女精品久久久2020 | 亚洲a无码综合a国产av中文 | 国产va免费精品观看 | 国产精品欧美成人 | 亚洲毛片av日韩av无码 | 亚洲成av人影院在线观看 | 国产成人无码午夜视频在线观看 | 人人超人人超碰超国产 | 色诱久久久久综合网ywww | 国产免费久久久久久无码 | 国产成人一区二区三区在线观看 | 久久亚洲a片com人成 | 欧美阿v高清资源不卡在线播放 | 巨爆乳无码视频在线观看 | 欧美35页视频在线观看 | 无码国模国产在线观看 | 男女性色大片免费网站 | 又大又硬又黄的免费视频 | 亚洲日本va中文字幕 | 亚洲大尺度无码无码专区 | 亚洲成熟女人毛毛耸耸多 | 无码人妻丰满熟妇区五十路百度 | 爱做久久久久久 | 成人欧美一区二区三区 | 亚洲国产精品无码久久久久高潮 | 亚洲欧美日韩成人高清在线一区 | 欧美激情内射喷水高潮 | 日本饥渴人妻欲求不满 | 女人被男人躁得好爽免费视频 | 国产69精品久久久久app下载 | 自拍偷自拍亚洲精品10p | 国产精品久久福利网站 | 无码人妻丰满熟妇区毛片18 | 精品一区二区不卡无码av | 丰满少妇高潮惨叫视频 | 丰腴饱满的极品熟妇 | 国产极品美女高潮无套在线观看 | 青青青手机频在线观看 | 亚洲娇小与黑人巨大交 | 在线播放免费人成毛片乱码 | 国产免费无码一区二区视频 | 国产电影无码午夜在线播放 | 国产精品美女久久久久av爽李琼 | 欧美亚洲国产一区二区三区 | 精品无码一区二区三区的天堂 | 国产偷国产偷精品高清尤物 | 久久久精品成人免费观看 | 内射巨臀欧美在线视频 | 国产香蕉尹人视频在线 | 欧美阿v高清资源不卡在线播放 | 国产尤物精品视频 | 无码纯肉视频在线观看 | 精品一二三区久久aaa片 | 在线观看欧美一区二区三区 | 日本一本二本三区免费 | 无遮无挡爽爽免费视频 | 成人无码视频免费播放 | 给我免费的视频在线观看 | 久久久精品国产sm最大网站 | 无码人妻久久一区二区三区不卡 | 久青草影院在线观看国产 | 久久久久成人精品免费播放动漫 | 男女下面进入的视频免费午夜 | 精品无人区无码乱码毛片国产 | 日韩精品久久久肉伦网站 | 熟妇女人妻丰满少妇中文字幕 | 男女下面进入的视频免费午夜 | 毛片内射-百度 | 青青青手机频在线观看 | 99久久婷婷国产综合精品青草免费 | 久久久久人妻一区精品色欧美 | 亚欧洲精品在线视频免费观看 | 丝袜美腿亚洲一区二区 | 成 人 网 站国产免费观看 | 三上悠亚人妻中文字幕在线 | 午夜性刺激在线视频免费 | 嫩b人妻精品一区二区三区 | 亚洲国产成人av在线观看 | 国产精品福利视频导航 | 亚洲日本在线电影 | 天天摸天天透天天添 | 欧美 日韩 亚洲 在线 | 国产婷婷色一区二区三区在线 | 日产精品99久久久久久 | 十八禁真人啪啪免费网站 | 四虎影视成人永久免费观看视频 | 无码成人精品区在线观看 | 成人无码视频免费播放 | 中文字幕色婷婷在线视频 | 国产亚洲日韩欧美另类第八页 | 99麻豆久久久国产精品免费 | 国产亚洲欧美在线专区 | 久久综合香蕉国产蜜臀av | 午夜福利试看120秒体验区 | 日本一区二区更新不卡 | 国产人妻精品一区二区三区不卡 | www国产亚洲精品久久久日本 | 一个人免费观看的www视频 | 黑人巨大精品欧美黑寡妇 | 2019午夜福利不卡片在线 | 国产乱码精品一品二品 | 精品人妻中文字幕有码在线 | 国产成人精品必看 | 日本爽爽爽爽爽爽在线观看免 | 亚洲自偷精品视频自拍 | 亚洲精品国偷拍自产在线观看蜜桃 | 欧美老熟妇乱xxxxx | 国产成人精品必看 | 亚洲精品国偷拍自产在线观看蜜桃 | 欧美日韩人成综合在线播放 | 色老头在线一区二区三区 | 日产国产精品亚洲系列 | 蜜桃臀无码内射一区二区三区 | 性生交大片免费看l | 国产成人人人97超碰超爽8 | 精品一区二区三区波多野结衣 | 无码午夜成人1000部免费视频 | 全黄性性激高免费视频 | 国产亚洲人成a在线v网站 | 国产性生交xxxxx无码 | 一本久道久久综合狠狠爱 | 免费无码av一区二区 | 亚洲爆乳精品无码一区二区三区 | 成熟人妻av无码专区 | 2020久久超碰国产精品最新 | 国产av久久久久精东av | 综合网日日天干夜夜久久 | 嫩b人妻精品一区二区三区 | 国产精品无码永久免费888 | 亚洲 欧美 激情 小说 另类 | 在线精品亚洲一区二区 | 一本色道婷婷久久欧美 | 亚洲精品国产第一综合99久久 | 老子影院午夜伦不卡 | 国产精品久久久午夜夜伦鲁鲁 | 日韩av无码中文无码电影 | 中文字幕无码日韩专区 | 福利一区二区三区视频在线观看 | 亚洲精品午夜国产va久久成人 | 欧美日本日韩 | 领导边摸边吃奶边做爽在线观看 | 在线精品国产一区二区三区 | 亲嘴扒胸摸屁股激烈网站 | 国产午夜福利亚洲第一 | 欧美日韩一区二区综合 | 蜜臀aⅴ国产精品久久久国产老师 | 激情五月综合色婷婷一区二区 | 一本加勒比波多野结衣 | 精品熟女少妇av免费观看 | 男女猛烈xx00免费视频试看 | 欧美 丝袜 自拍 制服 另类 | 18禁止看的免费污网站 | 免费无码一区二区三区蜜桃大 | 中文字幕无码视频专区 | 日本精品人妻无码77777 天堂一区人妻无码 | 欧洲精品码一区二区三区免费看 | 少妇的肉体aa片免费 | 亚洲综合伊人久久大杳蕉 | 欧美人妻一区二区三区 | 真人与拘做受免费视频一 | 色综合天天综合狠狠爱 | 黄网在线观看免费网站 | 亚洲一区av无码专区在线观看 | 国产精品无码永久免费888 | 欧美熟妇另类久久久久久多毛 | 无码国模国产在线观看 | 日韩成人一区二区三区在线观看 | 亚洲一区av无码专区在线观看 | 成人欧美一区二区三区黑人免费 | 亚洲精品鲁一鲁一区二区三区 | 精品无人区无码乱码毛片国产 | 国产偷自视频区视频 | 亚洲国产一区二区三区在线观看 | 熟妇激情内射com | 西西人体www44rt大胆高清 | 亚洲va中文字幕无码久久不卡 | 亚洲另类伦春色综合小说 | 亚洲中文无码av永久不收费 | 午夜理论片yy44880影院 | 伊在人天堂亚洲香蕉精品区 | 波多野结衣 黑人 | 欧美精品一区二区精品久久 | 亚洲日韩一区二区 | 欧美丰满少妇xxxx性 | 亚洲一区二区三区无码久久 | 小泽玛莉亚一区二区视频在线 | 欧美喷潮久久久xxxxx | 台湾无码一区二区 | 欧美 丝袜 自拍 制服 另类 | 久久精品一区二区三区四区 | 久久99精品久久久久久动态图 | 奇米影视7777久久精品人人爽 | 国产成人精品久久亚洲高清不卡 | 红桃av一区二区三区在线无码av | 亚洲经典千人经典日产 | 欧美丰满熟妇xxxx | 亚洲 a v无 码免 费 成 人 a v | 午夜福利试看120秒体验区 | 乱人伦中文视频在线观看 | 成人动漫在线观看 | 99久久精品日本一区二区免费 | 欧美自拍另类欧美综合图片区 | 国内精品久久毛片一区二区 | 精品国产一区av天美传媒 | 丰满护士巨好爽好大乳 | 精品国产aⅴ无码一区二区 | 极品嫩模高潮叫床 | 久久精品人人做人人综合试看 | 国产精品无码成人午夜电影 | 国产精品久久久久久亚洲毛片 | 亚洲综合在线一区二区三区 | 国产性猛交╳xxx乱大交 国产精品久久久久久无码 欧洲欧美人成视频在线 | 欧美性黑人极品hd | 图片区 小说区 区 亚洲五月 | 日韩人妻无码一区二区三区久久99 | 亚洲欧洲日本综合aⅴ在线 | 久久精品人妻少妇一区二区三区 | 亚洲一区av无码专区在线观看 | 麻豆成人精品国产免费 | 精品偷拍一区二区三区在线看 | 亚洲爆乳无码专区 | 三上悠亚人妻中文字幕在线 | 亚洲娇小与黑人巨大交 | 久久久久成人精品免费播放动漫 | 性色av无码免费一区二区三区 | 日日麻批免费40分钟无码 | 国产特级毛片aaaaaa高潮流水 | 无码国产色欲xxxxx视频 | 国产免费久久精品国产传媒 | 欧美熟妇另类久久久久久不卡 | 日本一本二本三区免费 | | 内射后入在线观看一区 | 亚洲国产欧美国产综合一区 | 中文字幕人妻无码一区二区三区 | 中文亚洲成a人片在线观看 | 日韩欧美中文字幕在线三区 | 久在线观看福利视频 | 中文字幕无码av激情不卡 | 成 人 网 站国产免费观看 | 麻豆md0077饥渴少妇 | 成在人线av无码免费 | 亚洲人成网站色7799 | 国产舌乚八伦偷品w中 | 欧美兽交xxxx×视频 | 日本在线高清不卡免费播放 | 天堂一区人妻无码 | 亚洲人成网站在线播放942 | 色综合久久久久综合一本到桃花网 | 荫蒂被男人添的好舒服爽免费视频 | 亚洲а∨天堂久久精品2021 | 成人亚洲精品久久久久软件 | aa片在线观看视频在线播放 | 国产无遮挡又黄又爽又色 | 国产精品久久久午夜夜伦鲁鲁 | 久久久久免费看成人影片 | 装睡被陌生人摸出水好爽 | 精品 日韩 国产 欧美 视频 | 色综合久久中文娱乐网 | 日韩亚洲欧美中文高清在线 | 国产精品久免费的黄网站 | 蜜桃av抽搐高潮一区二区 | 久久国产精品偷任你爽任你 | 国产精品a成v人在线播放 | 国产办公室秘书无码精品99 | 久久综合激激的五月天 | 亚洲欧美国产精品专区久久 | 丰满人妻精品国产99aⅴ | 女人被爽到呻吟gif动态图视看 | 扒开双腿疯狂进出爽爽爽视频 | 激情人妻另类人妻伦 | 漂亮人妻洗澡被公强 日日躁 | 国产色在线 | 国产 | 国产肉丝袜在线观看 | 欧美乱妇无乱码大黄a片 | 内射巨臀欧美在线视频 | 亚洲s码欧洲m码国产av | 亚洲aⅴ无码成人网站国产app | 亚洲精品午夜无码电影网 | 日本大乳高潮视频在线观看 | 无码av岛国片在线播放 | 久久综合久久自在自线精品自 | 亚洲精品中文字幕 | 国产精品久久久久无码av色戒 | 国产亚av手机在线观看 | 成熟女人特级毛片www免费 | 亚洲а∨天堂久久精品2021 | 一二三四在线观看免费视频 | 欧美一区二区三区视频在线观看 | 内射爽无广熟女亚洲 | 精品久久久中文字幕人妻 | 精品夜夜澡人妻无码av蜜桃 | 欧美性猛交内射兽交老熟妇 | 国产精品久久久 | 一本久久a久久精品亚洲 | 亚洲精品中文字幕久久久久 | 国产欧美熟妇另类久久久 | 爆乳一区二区三区无码 | 国产国产精品人在线视 | 蜜桃无码一区二区三区 | 中文字幕无码av波多野吉衣 | 亚洲欧洲无卡二区视頻 | 欧美性生交活xxxxxdddd | 亚洲色欲色欲天天天www | 天干天干啦夜天干天2017 | 性色欲情网站iwww九文堂 | 精品欧美一区二区三区久久久 | 熟女俱乐部五十路六十路av | 国产无av码在线观看 | 特级做a爰片毛片免费69 | 国精产品一品二品国精品69xx | 色狠狠av一区二区三区 | 任你躁国产自任一区二区三区 | 日韩少妇内射免费播放 | 国产国语老龄妇女a片 | 成年女人永久免费看片 | 国产精品亚洲专区无码不卡 | 麻豆人妻少妇精品无码专区 | 亚欧洲精品在线视频免费观看 | 婷婷六月久久综合丁香 | 亚洲经典千人经典日产 | 色噜噜亚洲男人的天堂 | 野外少妇愉情中文字幕 | 无人区乱码一区二区三区 | 啦啦啦www在线观看免费视频 | 高中生自慰www网站 | 国产又粗又硬又大爽黄老大爷视 | 18无码粉嫩小泬无套在线观看 | 日日摸天天摸爽爽狠狠97 | 国产97人人超碰caoprom | 波多野结衣乳巨码无在线观看 | 男女爱爱好爽视频免费看 | 国产成人无码午夜视频在线观看 | 亚洲色欲色欲天天天www | 蜜桃av蜜臀av色欲av麻 999久久久国产精品消防器材 | 人人爽人人澡人人高潮 | 亚洲欧美日韩国产精品一区二区 | aa片在线观看视频在线播放 | 欧美人与善在线com | 国产精品国产三级国产专播 | 久久久久国色av免费观看性色 | 又大又黄又粗又爽的免费视频 | 日韩欧美群交p片內射中文 | 对白脏话肉麻粗话av | 亚洲欧美色中文字幕在线 | 国语精品一区二区三区 | 无码人妻精品一区二区三区下载 | 欧美xxxx黑人又粗又长 | 国产手机在线αⅴ片无码观看 | 久久亚洲日韩精品一区二区三区 | 国产亚洲欧美在线专区 | 夜夜躁日日躁狠狠久久av | 一本久道久久综合狠狠爱 | 精品少妇爆乳无码av无码专区 | 欧美熟妇另类久久久久久不卡 | 国产亚av手机在线观看 | 国产精品亚洲五月天高清 | 国产精品香蕉在线观看 | 亚洲精品鲁一鲁一区二区三区 | 日日碰狠狠丁香久燥 | 久久久久亚洲精品中文字幕 | 成人性做爰aaa片免费看 | 毛片内射-百度 | 97色伦图片97综合影院 | 小泽玛莉亚一区二区视频在线 | 风流少妇按摩来高潮 | 午夜丰满少妇性开放视频 | 国产亲子乱弄免费视频 | 国产办公室秘书无码精品99 | 精品国产一区二区三区四区 | 免费无码av一区二区 | 欧美精品无码一区二区三区 | 亚洲理论电影在线观看 | 无码人妻出轨黑人中文字幕 | 精品少妇爆乳无码av无码专区 | 亚洲精品欧美二区三区中文字幕 | 国产精品福利视频导航 | 红桃av一区二区三区在线无码av | 久久精品女人的天堂av | 成人欧美一区二区三区黑人 | 我要看www免费看插插视频 | 亚洲国产高清在线观看视频 | 青青青爽视频在线观看 | 亚洲热妇无码av在线播放 | 77777熟女视频在线观看 а天堂中文在线官网 | 鲁鲁鲁爽爽爽在线视频观看 | 婷婷综合久久中文字幕蜜桃三电影 | 久久精品人人做人人综合 | 97人妻精品一区二区三区 | 免费看少妇作爱视频 | 白嫩日本少妇做爰 | 久久99热只有频精品8 | 天堂亚洲2017在线观看 | 国产精品无码成人午夜电影 | 内射巨臀欧美在线视频 | 免费无码av一区二区 | www国产亚洲精品久久网站 | 国产成人综合在线女婷五月99播放 | 伊人久久大香线蕉午夜 | 久久精品成人欧美大片 | 麻豆国产人妻欲求不满谁演的 | 国产一区二区三区日韩精品 | 久久视频在线观看精品 | 日韩av无码中文无码电影 | 亚洲熟悉妇女xxx妇女av | 永久免费观看国产裸体美女 | 久久久精品成人免费观看 | 99久久无码一区人妻 | 久久精品人人做人人综合试看 | 天堂а√在线地址中文在线 | 亚洲码国产精品高潮在线 | 青草青草久热国产精品 | 成人三级无码视频在线观看 | 亚洲色欲色欲天天天www | 久久天天躁夜夜躁狠狠 | 东京热一精品无码av | 亚洲精品一区二区三区大桥未久 | 久久综合狠狠综合久久综合88 | 1000部夫妻午夜免费 | 性生交大片免费看女人按摩摩 | 亚洲第一网站男人都懂 | 亚洲 另类 在线 欧美 制服 | 福利一区二区三区视频在线观看 | 日本精品久久久久中文字幕 | 少妇高潮一区二区三区99 | 日日摸日日碰夜夜爽av | 无码播放一区二区三区 | 最近的中文字幕在线看视频 | 国产卡一卡二卡三 | 亚洲国产av美女网站 | 亚洲国产午夜精品理论片 | 97精品国产97久久久久久免费 | av在线亚洲欧洲日产一区二区 | 欧洲精品码一区二区三区免费看 | 天堂无码人妻精品一区二区三区 | 精品一区二区三区波多野结衣 | 久久精品无码一区二区三区 | 国产亚洲美女精品久久久2020 | 国产情侣作爱视频免费观看 | 强开小婷嫩苞又嫩又紧视频 | 国产成人无码av在线影院 | 国产激情一区二区三区 | 国内精品一区二区三区不卡 | 在线亚洲高清揄拍自拍一品区 | 性欧美大战久久久久久久 | 久久精品国产99久久6动漫 | 国产99久久精品一区二区 | 色一情一乱一伦一区二区三欧美 | 给我免费的视频在线观看 | 无码人妻出轨黑人中文字幕 | 女人被男人躁得好爽免费视频 | aⅴ在线视频男人的天堂 | 日本精品人妻无码免费大全 | 成年美女黄网站色大免费视频 | 亚洲人成网站在线播放942 | 成人片黄网站色大片免费观看 | 亚洲色欲色欲欲www在线 | 国产明星裸体无码xxxx视频 | 亚洲 欧美 激情 小说 另类 | 骚片av蜜桃精品一区 | 麻豆成人精品国产免费 | 免费国产成人高清在线观看网站 | 性生交片免费无码看人 | 国产真实伦对白全集 | 午夜理论片yy44880影院 | 水蜜桃色314在线观看 | 粉嫩少妇内射浓精videos | 成人女人看片免费视频放人 | 99久久精品无码一区二区毛片 | 综合网日日天干夜夜久久 | 国产精品久久久久久亚洲毛片 | a片免费视频在线观看 | 欧美日韩亚洲国产精品 | 一个人免费观看的www视频 | 午夜性刺激在线视频免费 | 亚洲国产精品久久久天堂 | 亚洲中文字幕va福利 | 国产亚洲美女精品久久久2020 | 午夜理论片yy44880影院 | 色婷婷久久一区二区三区麻豆 | 日韩少妇白浆无码系列 | 亚洲爆乳无码专区 | 一区二区三区乱码在线 | 欧洲 | 免费网站看v片在线18禁无码 | 久久综合给合久久狠狠狠97色 | 成在人线av无码免观看麻豆 | 无遮挡国产高潮视频免费观看 | 日产精品高潮呻吟av久久 | 成人aaa片一区国产精品 | 2019nv天堂香蕉在线观看 | 成人一在线视频日韩国产 | 国产精品久久久久无码av色戒 | 成人精品视频一区二区三区尤物 | 黑人巨大精品欧美一区二区 | 久久久久亚洲精品中文字幕 | 无套内谢老熟女 | 麻豆国产丝袜白领秘书在线观看 | 精品水蜜桃久久久久久久 | 熟妇人妻无乱码中文字幕 | 国语精品一区二区三区 | 男人和女人高潮免费网站 | 久久精品国产精品国产精品污 | 亚洲成在人网站无码天堂 | 性生交大片免费看l | 国产av一区二区精品久久凹凸 | 亚洲 欧美 激情 小说 另类 | 日本一本二本三区免费 | 欧美人与牲动交xxxx | 色情久久久av熟女人妻网站 | 丝袜美腿亚洲一区二区 | 亚洲一区二区三区含羞草 | 欧美老人巨大xxxx做受 | 国产精品人人妻人人爽 | 澳门永久av免费网站 | 少妇愉情理伦片bd | 日本熟妇人妻xxxxx人hd | 日韩av无码一区二区三区不卡 | 一本久道久久综合婷婷五月 | 午夜精品一区二区三区在线观看 | 欧美成人午夜精品久久久 | 草草网站影院白丝内射 | 白嫩日本少妇做爰 | 久久久久av无码免费网 | 免费男性肉肉影院 | 四虎永久在线精品免费网址 | 激情爆乳一区二区三区 | 在线观看欧美一区二区三区 | 亚洲日韩av一区二区三区中文 | 精品水蜜桃久久久久久久 | 久久99精品久久久久婷婷 | 在线欧美精品一区二区三区 | 亚洲国产精华液网站w | 国产两女互慰高潮视频在线观看 | 亚洲国产精品无码久久久久高潮 | 国产莉萝无码av在线播放 | 国产偷自视频区视频 | 色婷婷综合中文久久一本 | 日日碰狠狠躁久久躁蜜桃 | 无码任你躁久久久久久久 | 内射老妇bbwx0c0ck | 亚洲人成影院在线观看 | 午夜免费福利小电影 | 国产手机在线αⅴ片无码观看 | 成 人 网 站国产免费观看 | 我要看www免费看插插视频 | 一本加勒比波多野结衣 | 亚洲一区二区三区四区 | 国产人妻大战黑人第1集 | 国产猛烈高潮尖叫视频免费 | 国产sm调教视频在线观看 | 九九久久精品国产免费看小说 | 国产精品久久久久久亚洲毛片 | 国精产品一区二区三区 | 激情五月综合色婷婷一区二区 | 色一情一乱一伦一区二区三欧美 | 国产免费无码一区二区视频 | 夫妻免费无码v看片 | 亚洲国产日韩a在线播放 | 成人影院yy111111在线观看 | 亚洲色无码一区二区三区 | 天干天干啦夜天干天2017 | 国产欧美精品一区二区三区 | 国产成人无码a区在线观看视频app | 国产综合色产在线精品 | 国模大胆一区二区三区 | aa片在线观看视频在线播放 | 欧美国产日韩亚洲中文 | 国内精品人妻无码久久久影院 | 亚洲综合色区中文字幕 | 波多野结衣一区二区三区av免费 | 131美女爱做视频 | 无码人妻精品一区二区三区下载 | 狠狠躁日日躁夜夜躁2020 | 国产av一区二区精品久久凹凸 | 国产 浪潮av性色四虎 | 日韩成人一区二区三区在线观看 | 国产艳妇av在线观看果冻传媒 | 久久www免费人成人片 | 国产一区二区三区影院 | 亚洲国产精品毛片av不卡在线 | 久久精品国产99久久6动漫 | 亚洲国产高清在线观看视频 | 亚洲午夜无码久久 | 日日碰狠狠躁久久躁蜜桃 | 啦啦啦www在线观看免费视频 | 亚洲成av人片天堂网无码】 | 亚洲欧美国产精品久久 | 国产精品人人妻人人爽 | 亚洲精品久久久久avwww潮水 | 骚片av蜜桃精品一区 | а√资源新版在线天堂 | 色欲av亚洲一区无码少妇 | 最新国产乱人伦偷精品免费网站 | 亚洲日韩乱码中文无码蜜桃臀网站 | 日韩人妻系列无码专区 | 亚洲人成网站免费播放 | 久久久久国色av免费观看性色 | 色一情一乱一伦一区二区三欧美 | 国产无遮挡又黄又爽又色 | 妺妺窝人体色www在线小说 | 国产偷抇久久精品a片69 | 18精品久久久无码午夜福利 | 蜜桃臀无码内射一区二区三区 | 亚洲一区二区三区无码久久 | 捆绑白丝粉色jk震动捧喷白浆 | 国产精品嫩草久久久久 | 成人无码视频免费播放 | 扒开双腿吃奶呻吟做受视频 | 国产午夜亚洲精品不卡下载 | 成人动漫在线观看 | 国産精品久久久久久久 | 精品少妇爆乳无码av无码专区 | 国产乱人伦app精品久久 国产在线无码精品电影网 国产国产精品人在线视 | 久久久久久久久蜜桃 | 亚洲小说图区综合在线 | 亚洲精品国产a久久久久久 | 亚洲成a人一区二区三区 | 人人超人人超碰超国产 | 国产精品自产拍在线观看 | 久久婷婷五月综合色国产香蕉 | 亚洲理论电影在线观看 | 久久99热只有频精品8 | 欧美一区二区三区 | 一本色道久久综合狠狠躁 | 国产精品.xx视频.xxtv | 一二三四在线观看免费视频 | 成人性做爰aaa片免费看不忠 | 乱中年女人伦av三区 | 亚洲中文无码av永久不收费 | 草草网站影院白丝内射 | 55夜色66夜色国产精品视频 | 中文精品久久久久人妻不卡 | 性做久久久久久久免费看 | 狠狠躁日日躁夜夜躁2020 | 大色综合色综合网站 | 国产一区二区三区精品视频 | 妺妺窝人体色www婷婷 | 亚洲精品一区二区三区婷婷月 | 国产激情无码一区二区 | 夜夜高潮次次欢爽av女 | 久久人人97超碰a片精品 | 成人免费视频视频在线观看 免费 | 色一情一乱一伦一视频免费看 | 夜夜夜高潮夜夜爽夜夜爰爰 | 亚洲啪av永久无码精品放毛片 | 亚洲一区二区观看播放 | 欧美国产日产一区二区 | 国产精品.xx视频.xxtv | 性开放的女人aaa片 | 老司机亚洲精品影院无码 | 毛片内射-百度 | 亚洲一区二区三区在线观看网站 | 久久亚洲国产成人精品性色 | 在线成人www免费观看视频 | 精品人人妻人人澡人人爽人人 | 精品国产精品久久一区免费式 | 精品欧美一区二区三区久久久 | 国产亚洲人成a在线v网站 | 欧美日韩一区二区综合 | 无套内谢的新婚少妇国语播放 | 熟妇人妻无码xxx视频 | 国产内射爽爽大片视频社区在线 | 天天摸天天碰天天添 | 国内少妇偷人精品视频 | 中文精品无码中文字幕无码专区 | 亚洲色欲久久久综合网东京热 | 亚洲精品中文字幕久久久久 | 国产成人精品必看 | 亚洲一区二区三区无码久久 | 免费观看激色视频网站 | 国产精品多人p群无码 | 伊人久久婷婷五月综合97色 | 国语精品一区二区三区 | 成 人影片 免费观看 | 久久婷婷五月综合色国产香蕉 | 大乳丰满人妻中文字幕日本 | 丰满岳乱妇在线观看中字无码 | 免费国产成人高清在线观看网站 | 蜜桃视频韩日免费播放 | 国产精品人人妻人人爽 | 亚洲一区二区三区无码久久 | 亚洲国产综合无码一区 | 国产精品久久久久无码av色戒 | 久久成人a毛片免费观看网站 | 免费男性肉肉影院 | 欧美 日韩 亚洲 在线 | 久久伊人色av天堂九九小黄鸭 | 精品久久久无码中文字幕 | 亚洲gv猛男gv无码男同 | 精品国产麻豆免费人成网站 | 国产精品-区区久久久狼 | 久久人人爽人人人人片 | 国产亚洲精品久久久久久久久动漫 | 97精品国产97久久久久久免费 | 无人区乱码一区二区三区 | 久久 国产 尿 小便 嘘嘘 | 久久久中文久久久无码 | 国产激情无码一区二区app | 久久久精品456亚洲影院 | 久久久精品成人免费观看 | 亚洲一区二区观看播放 | 亚洲中文字幕成人无码 | 午夜福利试看120秒体验区 | 国产婷婷色一区二区三区在线 | 国产人妻久久精品二区三区老狼 | yw尤物av无码国产在线观看 | 亚洲色欲久久久综合网东京热 | 麻豆人妻少妇精品无码专区 | 国产精品自产拍在线观看 | 我要看www免费看插插视频 | 特级做a爰片毛片免费69 | 日欧一片内射va在线影院 | 亚洲精品综合一区二区三区在线 | 国产免费无码一区二区视频 | 2020久久超碰国产精品最新 | 天天躁日日躁狠狠躁免费麻豆 | 久久亚洲精品成人无码 | 精品厕所偷拍各类美女tp嘘嘘 | 无套内射视频囯产 | 久久久久av无码免费网 | 在教室伦流澡到高潮hnp视频 | 亚洲中文无码av永久不收费 | 精品水蜜桃久久久久久久 | 久久久无码中文字幕久... | 久久精品人人做人人综合试看 | 国产手机在线αⅴ片无码观看 | 日本一卡2卡3卡四卡精品网站 | 久久熟妇人妻午夜寂寞影院 | 55夜色66夜色国产精品视频 | 中文字幕色婷婷在线视频 | 在线 国产 欧美 亚洲 天堂 | 玩弄少妇高潮ⅹxxxyw | 欧美三级a做爰在线观看 | 东京热无码av男人的天堂 | 女人和拘做爰正片视频 | 国产绳艺sm调教室论坛 | 成年美女黄网站色大免费视频 | 小sao货水好多真紧h无码视频 | 亚洲精品美女久久久久久久 | 日本熟妇人妻xxxxx人hd | 欧美老妇交乱视频在线观看 | 人妻aⅴ无码一区二区三区 | 97夜夜澡人人爽人人喊中国片 | 国产精品成人av在线观看 | 久久久久久亚洲精品a片成人 | 十八禁真人啪啪免费网站 | 国产手机在线αⅴ片无码观看 | 人人澡人摸人人添 | 欧美成人高清在线播放 | 欧美国产亚洲日韩在线二区 | 无码免费一区二区三区 | 好屌草这里只有精品 | 久久综合香蕉国产蜜臀av | 免费网站看v片在线18禁无码 | 亚洲精品综合五月久久小说 | 少女韩国电视剧在线观看完整 | 精品 日韩 国产 欧美 视频 | 九月婷婷人人澡人人添人人爽 | 无码国产激情在线观看 | 亚洲 a v无 码免 费 成 人 a v | 国产精品久久国产三级国 | 老司机亚洲精品影院 | 一本大道伊人av久久综合 | 久久久久久a亚洲欧洲av冫 | 亚洲自偷自偷在线制服 | 亚洲日本va中文字幕 | 18无码粉嫩小泬无套在线观看 | 天天燥日日燥 | 欧美性色19p | 麻花豆传媒剧国产免费mv在线 | 麻豆国产丝袜白领秘书在线观看 | 国产激情精品一区二区三区 | 日本精品少妇一区二区三区 | 丰满岳乱妇在线观看中字无码 | 免费网站看v片在线18禁无码 | 午夜福利一区二区三区在线观看 | 亚洲国产精品一区二区第一页 | 国产suv精品一区二区五 | 国产午夜亚洲精品不卡下载 | 高清不卡一区二区三区 | 日产精品99久久久久久 | 国产精品人人妻人人爽 | 麻豆md0077饥渴少妇 | 国产人妻久久精品二区三区老狼 | 又黄又爽又色的视频 | 欧美激情内射喷水高潮 | 内射后入在线观看一区 | 人人爽人人澡人人高潮 | 亚洲欧洲无卡二区视頻 | 久久久婷婷五月亚洲97号色 | 天天av天天av天天透 | 午夜无码区在线观看 | 伊人色综合久久天天小片 | 日本在线高清不卡免费播放 | 精品久久8x国产免费观看 | 狂野欧美性猛xxxx乱大交 | 在线播放亚洲第一字幕 | 噜噜噜亚洲色成人网站 | 欧洲精品码一区二区三区免费看 | 男人的天堂av网站 | 中文字幕无码免费久久9一区9 | 在线播放无码字幕亚洲 | 无码精品人妻一区二区三区av | 无码午夜成人1000部免费视频 | 中文字幕无码日韩欧毛 | 日韩精品无码免费一区二区三区 | 国产亚洲欧美日韩亚洲中文色 | 大地资源中文第3页 | 奇米综合四色77777久久 东京无码熟妇人妻av在线网址 | 日韩人妻少妇一区二区三区 | 大屁股大乳丰满人妻 | 国产午夜无码精品免费看 | 国产乡下妇女做爰 | 99精品国产综合久久久久五月天 | 久久久久久亚洲精品a片成人 | 99er热精品视频 | 性色av无码免费一区二区三区 | 天堂а√在线中文在线 | 色 综合 欧美 亚洲 国产 | 国产乱人伦偷精品视频 | 人妻少妇精品无码专区动漫 | 少妇性俱乐部纵欲狂欢电影 | 人人妻人人澡人人爽欧美一区 | 精品无码国产自产拍在线观看蜜 | 黑人玩弄人妻中文在线 | 亚洲色在线无码国产精品不卡 | 毛片内射-百度 | 狠狠色噜噜狠狠狠7777奇米 | 国产av无码专区亚洲awww | 国产网红无码精品视频 | 国产偷自视频区视频 | 久久亚洲精品成人无码 | 乌克兰少妇xxxx做受 | 一个人看的www免费视频在线观看 | 大乳丰满人妻中文字幕日本 | 免费无码的av片在线观看 | 亚洲熟妇色xxxxx欧美老妇 | 国产亚洲视频中文字幕97精品 | 国产精品人人妻人人爽 | 免费网站看v片在线18禁无码 | 99久久精品午夜一区二区 | 亚洲中文字幕在线无码一区二区 | 亚洲区欧美区综合区自拍区 | 国产精品永久免费视频 | 日欧一片内射va在线影院 | 丰满人妻翻云覆雨呻吟视频 | 国内精品久久久久久中文字幕 | 午夜时刻免费入口 | 中文字幕人妻无码一区二区三区 | 国产亚洲精品久久久久久 | 久久午夜无码鲁丝片 | 色爱情人网站 | 精品人妻av区 | 思思久久99热只有频精品66 | 狂野欧美性猛交免费视频 | 性生交大片免费看女人按摩摩 | 欧美人与牲动交xxxx | 国产精品无码mv在线观看 | 男女超爽视频免费播放 | 免费国产黄网站在线观看 | 国内精品人妻无码久久久影院 | 亚洲热妇无码av在线播放 | 国产午夜亚洲精品不卡 | 国产成人无码一二三区视频 | 国产国语老龄妇女a片 | 人妻与老人中文字幕 | 青青久在线视频免费观看 | 麻豆av传媒蜜桃天美传媒 | 亚洲国产一区二区三区在线观看 | 四虎国产精品免费久久 | 国精产品一区二区三区 | 欧美黑人性暴力猛交喷水 | 一个人免费观看的www视频 | 亚洲s码欧洲m码国产av | 十八禁真人啪啪免费网站 | 麻豆国产人妻欲求不满 | 国产特级毛片aaaaaaa高清 | 国产特级毛片aaaaaaa高清 | 国产网红无码精品视频 | 日本精品人妻无码77777 天堂一区人妻无码 | 日本一区二区更新不卡 | 亚洲欧洲无卡二区视頻 | 成人精品天堂一区二区三区 | 亚洲精品国偷拍自产在线观看蜜桃 | a片免费视频在线观看 | 欧美日韩色另类综合 | 女人被男人躁得好爽免费视频 | 亚洲国产高清在线观看视频 | 狂野欧美性猛交免费视频 | 久热国产vs视频在线观看 | 狂野欧美性猛交免费视频 | 欧美日韩视频无码一区二区三 | 伊人久久大香线蕉午夜 | 亚洲午夜福利在线观看 | 亚洲日韩乱码中文无码蜜桃臀网站 | 国产性生大片免费观看性 | 国产黑色丝袜在线播放 | 国内丰满熟女出轨videos | 欧美人与物videos另类 | 成熟女人特级毛片www免费 | 国产高潮视频在线观看 | 精品无码一区二区三区爱欲 | 内射老妇bbwx0c0ck | 99久久精品无码一区二区毛片 | 精品无人区无码乱码毛片国产 | 牲欲强的熟妇农村老妇女视频 | 亚洲精品中文字幕久久久久 | 色老头在线一区二区三区 | 亚洲人成网站在线播放942 | yw尤物av无码国产在线观看 | 超碰97人人做人人爱少妇 | 最近免费中文字幕中文高清百度 | 色五月丁香五月综合五月 | 国产黑色丝袜在线播放 | 国产舌乚八伦偷品w中 | 国产乱人伦av在线无码 | 丰满诱人的人妻3 | 一本久久a久久精品vr综合 | 亚洲国产精品美女久久久久 | 欧美日韩久久久精品a片 | 99久久久国产精品无码免费 | 成人一在线视频日韩国产 | 精品国产成人一区二区三区 | 人人爽人人爽人人片av亚洲 | 免费观看的无遮挡av | 亚洲日韩一区二区 | 国产成人精品优优av | 国语自产偷拍精品视频偷 | 国产一区二区三区日韩精品 | 中文字幕人妻丝袜二区 | 国产农村妇女高潮大叫 | 日韩精品无码一本二本三本色 | 久久99久久99精品中文字幕 | 色欲久久久天天天综合网精品 | 妺妺窝人体色www在线小说 | 无码人妻丰满熟妇区毛片18 | 一本久道高清无码视频 | 欧美丰满老熟妇xxxxx性 | 性生交大片免费看女人按摩摩 | 内射欧美老妇wbb | 3d动漫精品啪啪一区二区中 | 2019午夜福利不卡片在线 | 少妇高潮一区二区三区99 | 天天摸天天透天天添 | 天天躁日日躁狠狠躁免费麻豆 | 国产精品多人p群无码 | 精品国产福利一区二区 | 国精品人妻无码一区二区三区蜜柚 | 蜜臀aⅴ国产精品久久久国产老师 | 久久综合久久自在自线精品自 | 四虎国产精品免费久久 | 欧美日韩色另类综合 | 少妇被黑人到高潮喷出白浆 | 亚洲熟熟妇xxxx | 欧美zoozzooz性欧美 | 久久精品国产日本波多野结衣 | 丰满人妻翻云覆雨呻吟视频 | 日韩少妇白浆无码系列 | 国产女主播喷水视频在线观看 | 夜精品a片一区二区三区无码白浆 | 波多野结衣乳巨码无在线观看 | 思思久久99热只有频精品66 | 亚洲高清偷拍一区二区三区 | 国产热a欧美热a在线视频 | 国产香蕉尹人综合在线观看 | 成人综合网亚洲伊人 | 在线观看国产一区二区三区 | 一二三四在线观看免费视频 | 中文字幕av无码一区二区三区电影 | 亚洲欧美日韩国产精品一区二区 | 国产成人无码a区在线观看视频app | а√天堂www在线天堂小说 | 无码人妻精品一区二区三区不卡 | 欧美丰满熟妇xxxx | 四虎国产精品一区二区 | 无码纯肉视频在线观看 | 成人性做爰aaa片免费看不忠 | 俄罗斯老熟妇色xxxx | 色噜噜亚洲男人的天堂 | 乌克兰少妇xxxx做受 | 丝袜美腿亚洲一区二区 | 国产欧美精品一区二区三区 | 又色又爽又黄的美女裸体网站 | 国产无遮挡又黄又爽免费视频 | 丝袜 中出 制服 人妻 美腿 | 97资源共享在线视频 | 国产精华av午夜在线观看 | 黑森林福利视频导航 | 六月丁香婷婷色狠狠久久 | 人人爽人人澡人人高潮 | 强辱丰满人妻hd中文字幕 | 精品厕所偷拍各类美女tp嘘嘘 | 99riav国产精品视频 | 成 人 网 站国产免费观看 | 欧美日韩亚洲国产精品 | 欧美freesex黑人又粗又大 | 亚洲の无码国产の无码影院 | 日日碰狠狠躁久久躁蜜桃 | 久久久国产精品无码免费专区 | 欧美性生交活xxxxxdddd | 亚洲精品一区二区三区大桥未久 | 呦交小u女精品视频 | 色 综合 欧美 亚洲 国产 | 亚洲日本va午夜在线电影 | 国产国产精品人在线视 | 日本xxxx色视频在线观看免费 | 少妇性俱乐部纵欲狂欢电影 | 久久人人爽人人爽人人片ⅴ | 成人欧美一区二区三区黑人 | 亚洲成av人片天堂网无码】 | 永久免费观看国产裸体美女 | 久久精品国产亚洲精品 | 国产午夜福利亚洲第一 | 高清不卡一区二区三区 | 亚洲国产精品久久人人爱 | 88国产精品欧美一区二区三区 | 天天做天天爱天天爽综合网 | 国产特级毛片aaaaaaa高清 | 任你躁国产自任一区二区三区 | 美女毛片一区二区三区四区 | 欧美激情内射喷水高潮 | 大地资源中文第3页 | 无码午夜成人1000部免费视频 | 强伦人妻一区二区三区视频18 | 国产精品-区区久久久狼 | 免费网站看v片在线18禁无码 | 丁香啪啪综合成人亚洲 | 国产 精品 自在自线 | 永久免费观看美女裸体的网站 | 又粗又大又硬毛片免费看 | 亚洲狠狠色丁香婷婷综合 | 2020最新国产自产精品 | 99精品久久毛片a片 | 中文字幕无码av波多野吉衣 | 国产另类ts人妖一区二区 | 99视频精品全部免费免费观看 | 久久伊人色av天堂九九小黄鸭 | 亚洲男女内射在线播放 | 中文字幕无码日韩欧毛 | 熟妇人妻激情偷爽文 | 亚洲国产高清在线观看视频 | 色情久久久av熟女人妻网站 | 国产黑色丝袜在线播放 | 亚洲综合伊人久久大杳蕉 | 国产无套内射久久久国产 | 在线亚洲高清揄拍自拍一品区 | 国产极品视觉盛宴 | 狠狠躁日日躁夜夜躁2020 | a国产一区二区免费入口 | 国产精品成人av在线观看 | 人人爽人人爽人人片av亚洲 | 激情五月综合色婷婷一区二区 | 国产无套粉嫩白浆在线 | 亚洲国产欧美在线成人 | 国产偷国产偷精品高清尤物 | 成人av无码一区二区三区 | 日本xxxx色视频在线观看免费 | 久久人人爽人人爽人人片av高清 | 伊人久久大香线焦av综合影院 | 天干天干啦夜天干天2017 | 天堂无码人妻精品一区二区三区 | 国产内射爽爽大片视频社区在线 | 未满成年国产在线观看 | 国产精品久久久久无码av色戒 | 亚洲自偷自偷在线制服 | 天天拍夜夜添久久精品大 | 野外少妇愉情中文字幕 | 精品国产国产综合精品 | 午夜成人1000部免费视频 | 人妻互换免费中文字幕 | 精品厕所偷拍各类美女tp嘘嘘 | 天海翼激烈高潮到腰振不止 | 久久97精品久久久久久久不卡 | 亚洲爆乳无码专区 | 国产香蕉97碰碰久久人人 | 亚洲一区二区三区香蕉 | 国产片av国语在线观看 | 黑人粗大猛烈进出高潮视频 | 荡女精品导航 | 色一情一乱一伦一视频免费看 | 日韩人妻无码一区二区三区久久99 | 夜精品a片一区二区三区无码白浆 | 99国产精品白浆在线观看免费 | 熟女少妇在线视频播放 | 亚洲精品美女久久久久久久 | 中文字幕无码视频专区 | 国产在热线精品视频 | 色综合视频一区二区三区 | 天堂亚洲免费视频 | 全球成人中文在线 | 久久aⅴ免费观看 | 欧美人与动性行为视频 | 国产精品无码久久av | 亚洲中文字幕乱码av波多ji | 亚洲自偷自拍另类第1页 | 日韩人妻无码中文字幕视频 | 国产在线精品一区二区高清不卡 | 亚洲热妇无码av在线播放 | 中文字幕人成乱码熟女app | 中文字幕无码免费久久9一区9 | 亚洲精品综合五月久久小说 | 欧美日韩在线亚洲综合国产人 | 少妇久久久久久人妻无码 | 国产无套粉嫩白浆在线 | 中文字幕乱码人妻无码久久 | 亚洲中文字幕成人无码 | 亚洲日本va中文字幕 | 一本久道久久综合婷婷五月 | 日本大乳高潮视频在线观看 | 宝宝好涨水快流出来免费视频 | 成年女人永久免费看片 | 国产内射爽爽大片视频社区在线 | 黑人巨大精品欧美一区二区 | 国产激情综合五月久久 | 扒开双腿吃奶呻吟做受视频 | 亚洲日韩中文字幕在线播放 | 日日天干夜夜狠狠爱 | 国产香蕉尹人视频在线 | 免费无码av一区二区 | 理论片87福利理论电影 | 亚洲成a人一区二区三区 | 亚洲午夜福利在线观看 | 人人爽人人澡人人高潮 | 中国女人内谢69xxxxxa片 | 国产超碰人人爽人人做人人添 | 成 人 免费观看网站 | 欧美一区二区三区 | 一本无码人妻在中文字幕免费 | 国产精品无套呻吟在线 | 97色伦图片97综合影院 | 性开放的女人aaa片 | 51国偷自产一区二区三区 | 久久亚洲中文字幕精品一区 | 国产一区二区三区日韩精品 | 精品久久综合1区2区3区激情 | 国产内射老熟女aaaa | 亚洲另类伦春色综合小说 | 性啪啪chinese东北女人 | 亚洲精品成a人在线观看 | 少妇的肉体aa片免费 | 人妻少妇被猛烈进入中文字幕 | 国产肉丝袜在线观看 | 中文字幕 人妻熟女 | 樱花草在线社区www | 精品久久久久久人妻无码中文字幕 | 亚洲乱亚洲乱妇50p | 高清国产亚洲精品自在久久 | 一本精品99久久精品77 | 中文字幕av日韩精品一区二区 | 5858s亚洲色大成网站www | 国产片av国语在线观看 | 亚洲人成影院在线无码按摩店 | 女人被男人爽到呻吟的视频 | 精品厕所偷拍各类美女tp嘘嘘 | 中文字幕无码日韩欧毛 | 蜜臀av无码人妻精品 | 狠狠色丁香久久婷婷综合五月 | 国产在线精品一区二区高清不卡 | 99久久人妻精品免费二区 | 小泽玛莉亚一区二区视频在线 | 欧美freesex黑人又粗又大 | 熟妇激情内射com | 无人区乱码一区二区三区 | 成年美女黄网站色大免费全看 | 无码人妻丰满熟妇区五十路百度 | 国产人妻人伦精品1国产丝袜 | 日本精品久久久久中文字幕 | 撕开奶罩揉吮奶头视频 | 帮老师解开蕾丝奶罩吸乳网站 | 欧美性猛交内射兽交老熟妇 | 国产免费久久精品国产传媒 | 狠狠色色综合网站 | 久久久中文字幕日本无吗 | 清纯唯美经典一区二区 | 国产精品高潮呻吟av久久4虎 | 最新国产乱人伦偷精品免费网站 | 亚洲 a v无 码免 费 成 人 a v | 国产又粗又硬又大爽黄老大爷视 | 中文无码成人免费视频在线观看 | 国产婷婷色一区二区三区在线 | 成人精品天堂一区二区三区 | 4hu四虎永久在线观看 | 亚洲成av人在线观看网址 | 精品国产精品久久一区免费式 | 久久综合久久自在自线精品自 | 国产97色在线 | 免 | 精品一区二区三区无码免费视频 | 天干天干啦夜天干天2017 | 国产精品久久久久久久9999 | 国产极品视觉盛宴 | 狂野欧美性猛xxxx乱大交 | 性啪啪chinese东北女人 | 精品久久久无码人妻字幂 | 天天摸天天透天天添 | 丰满岳乱妇在线观看中字无码 | 日韩亚洲欧美精品综合 | 妺妺窝人体色www婷婷 | 青青青爽视频在线观看 | 国产精品va在线播放 | 丰满少妇人妻久久久久久 | 好爽又高潮了毛片免费下载 | 亚洲日韩精品欧美一区二区 | 成人欧美一区二区三区 | 国产三级久久久精品麻豆三级 | 久久国产精品萌白酱免费 | 欧美老熟妇乱xxxxx | 夫妻免费无码v看片 | 大胆欧美熟妇xx | 国産精品久久久久久久 | 亚洲成a人片在线观看无码3d | 国内少妇偷人精品视频 | 又色又爽又黄的美女裸体网站 | 免费乱码人妻系列无码专区 | 免费观看的无遮挡av | 香蕉久久久久久av成人 | 久久久无码中文字幕久... | 亚洲经典千人经典日产 | 欧美一区二区三区视频在线观看 | 久久国产精品_国产精品 | 少妇太爽了在线观看 | 国产精品国产三级国产专播 | 亚洲国产av精品一区二区蜜芽 | 熟妇女人妻丰满少妇中文字幕 | 日韩成人一区二区三区在线观看 | 欧美性猛交内射兽交老熟妇 | 亚洲国精产品一二二线 | 东京一本一道一二三区 | 无码av最新清无码专区吞精 | 久久久久se色偷偷亚洲精品av | 97久久国产亚洲精品超碰热 | 全黄性性激高免费视频 | 自拍偷自拍亚洲精品10p | 久久精品成人欧美大片 | 一个人看的视频www在线 | 中文字幕无码免费久久9一区9 | 欧洲极品少妇 | 东京无码熟妇人妻av在线网址 | 老头边吃奶边弄进去呻吟 | 国产超碰人人爽人人做人人添 | 久久综合狠狠综合久久综合88 | 高清无码午夜福利视频 | 国产偷自视频区视频 | 国产做国产爱免费视频 | 亚洲国产精品久久久久久 | 国产在线一区二区三区四区五区 | 男人和女人高潮免费网站 | av无码不卡在线观看免费 | 中文字幕亚洲情99在线 | 亚洲国产欧美国产综合一区 | 亚洲s色大片在线观看 | 国产手机在线αⅴ片无码观看 | 欧美性生交活xxxxxdddd | 国产尤物精品视频 | 亚洲精品一区国产 | 国产激情精品一区二区三区 | 欧美黑人巨大xxxxx | 色婷婷香蕉在线一区二区 | 亚洲精品久久久久avwww潮水 | 欧美怡红院免费全部视频 | 亚洲中文字幕va福利 | 久久精品国产亚洲精品 | 日韩欧美成人免费观看 | 精品国产一区二区三区av 性色 | 国产亚洲欧美在线专区 | 男女下面进入的视频免费午夜 | 国产精品久久久久无码av色戒 | 欧美黑人巨大xxxxx | 伊人久久大香线蕉午夜 | 曰韩少妇内射免费播放 | 曰韩少妇内射免费播放 | 国产97人人超碰caoprom | 人人妻人人澡人人爽欧美精品 | 久久熟妇人妻午夜寂寞影院 | 国产97色在线 | 免 | 亚洲欧洲日本无在线码 | 国产精品国产三级国产专播 | 久久国产精品精品国产色婷婷 | 乌克兰少妇xxxx做受 | 国产精品久久久午夜夜伦鲁鲁 | 男女作爱免费网站 | 无遮无挡爽爽免费视频 | 日韩人妻无码一区二区三区久久99 | 无码国产激情在线观看 | 任你躁国产自任一区二区三区 | 国产精品多人p群无码 | 大地资源网第二页免费观看 | 人人妻人人澡人人爽精品欧美 | 亚洲人成影院在线无码按摩店 | 76少妇精品导航 | 无码任你躁久久久久久久 | 久久久成人毛片无码 | 国产xxx69麻豆国语对白 | 天天综合网天天综合色 | 精品熟女少妇av免费观看 | 久久国产精品_国产精品 | 日日摸日日碰夜夜爽av | 沈阳熟女露脸对白视频 | 在线成人www免费观看视频 | 熟女少妇人妻中文字幕 | 亚洲国产精品一区二区美利坚 | 玩弄人妻少妇500系列视频 | 国产精品久久久久久无码 | 亚洲区小说区激情区图片区 | 国产绳艺sm调教室论坛 | 国产无套内射久久久国产 | 蜜臀av在线播放 久久综合激激的五月天 | 熟妇激情内射com | 国产精品无码久久av | 国产午夜精品一区二区三区嫩草 | 狠狠色噜噜狠狠狠7777奇米 | 亚洲精品一区二区三区在线观看 | 免费无码肉片在线观看 | 日韩欧美群交p片內射中文 | 人人爽人人澡人人人妻 | 久久www免费人成人片 | 亚无码乱人伦一区二区 | 夜夜高潮次次欢爽av女 | 亚洲熟妇色xxxxx欧美老妇 | 日日躁夜夜躁狠狠躁 | 国产精品高潮呻吟av久久4虎 | 亚洲欧美日韩国产精品一区二区 | 国产九九九九九九九a片 | 国产av久久久久精东av | 国产午夜精品一区二区三区嫩草 | 国产麻豆精品一区二区三区v视界 | 少妇厨房愉情理9仑片视频 | 亚洲中文字幕无码中文字在线 | 亚洲精品综合一区二区三区在线 | 中文字幕无码乱人伦 | 国产亚洲精品久久久久久久久动漫 | 欧美猛少妇色xxxxx | 亚洲熟妇自偷自拍另类 | 天干天干啦夜天干天2017 | 亚洲国产午夜精品理论片 | 日本xxxx色视频在线观看免费 | 曰本女人与公拘交酡免费视频 | 麻豆国产人妻欲求不满谁演的 | 亚洲精品久久久久久久久久久 | 性做久久久久久久免费看 | 少妇邻居内射在线 | 欧美刺激性大交 | 国产综合久久久久鬼色 | 亚洲精品鲁一鲁一区二区三区 | 老子影院午夜精品无码 | 性啪啪chinese东北女人 | 少妇被粗大的猛进出69影院 | 国产亚洲视频中文字幕97精品 | 未满小14洗澡无码视频网站 | 亚洲中文字幕久久无码 | 99在线 | 亚洲 | 综合激情五月综合激情五月激情1 | 丰腴饱满的极品熟妇 | 曰韩少妇内射免费播放 | 欧美35页视频在线观看 | 亚洲男人av天堂午夜在 | 久久综合九色综合欧美狠狠 | 一本色道久久综合亚洲精品不卡 | 国产肉丝袜在线观看 | 国产免费无码一区二区视频 | 亚洲成a人片在线观看日本 | 日日麻批免费40分钟无码 | 红桃av一区二区三区在线无码av | 国产特级毛片aaaaaa高潮流水 | 国产办公室秘书无码精品99 | 国产成人无码区免费内射一片色欲 | 偷窥村妇洗澡毛毛多 | 日本va欧美va欧美va精品 | 久久国产精品_国产精品 | 欧美日韩精品 | 网友自拍区视频精品 | 理论片87福利理论电影 | 青青久在线视频免费观看 | 波多野结衣av在线观看 | 国产亚洲精品精品国产亚洲综合 | 亚洲一区二区三区无码久久 | 亚洲精品欧美二区三区中文字幕 | 国产午夜精品一区二区三区嫩草 | 无码人妻久久一区二区三区不卡 | 国产女主播喷水视频在线观看 | 国产偷国产偷精品高清尤物 | 国产午夜无码精品免费看 | 成人欧美一区二区三区黑人免费 | 久久精品国产日本波多野结衣 | 亚洲熟妇色xxxxx亚洲 | 澳门永久av免费网站 | 国产精品久久国产三级国 | 玩弄中年熟妇正在播放 | 日产精品99久久久久久 | 亚洲成a人一区二区三区 | 亚洲人成人无码网www国产 | 中文字幕中文有码在线 | 中文字幕av日韩精品一区二区 | 97资源共享在线视频 | 国产乱人伦偷精品视频 | 西西人体www44rt大胆高清 | 天堂一区人妻无码 | 中文字幕亚洲情99在线 | 人妻无码αv中文字幕久久琪琪布 | 亚洲国产成人av在线观看 | 综合网日日天干夜夜久久 | 亚洲一区二区三区 | av无码久久久久不卡免费网站 | 300部国产真实乱 | 麻花豆传媒剧国产免费mv在线 | 18禁黄网站男男禁片免费观看 | 国产精品第一国产精品 | 国产三级久久久精品麻豆三级 | 国产一区二区不卡老阿姨 | 免费国产黄网站在线观看 | 97精品国产97久久久久久免费 | 人人爽人人澡人人人妻 | 国産精品久久久久久久 | 久久天天躁狠狠躁夜夜免费观看 | 青春草在线视频免费观看 | 一本大道久久东京热无码av | 西西人体www44rt大胆高清 | 精品国产乱码久久久久乱码 | 中文字幕乱码人妻二区三区 | 成 人 免费观看网站 | 欧美精品在线观看 | 日本一卡2卡3卡4卡无卡免费网站 国产一区二区三区影院 | 久久久久免费精品国产 | 国产内射爽爽大片视频社区在线 | 久久久久免费看成人影片 | 人人澡人人透人人爽 | 亚洲熟悉妇女xxx妇女av | 天下第一社区视频www日本 | 亚洲熟妇色xxxxx欧美老妇y | 野狼第一精品社区 | 亚洲日本va午夜在线电影 | 丰满人妻翻云覆雨呻吟视频 | 中文字幕中文有码在线 | 动漫av一区二区在线观看 | 兔费看少妇性l交大片免费 | 日本熟妇乱子伦xxxx | 欧美成人免费全部网站 | 国产亚洲人成在线播放 | √天堂中文官网8在线 | 中文精品无码中文字幕无码专区 | 在线播放无码字幕亚洲 | 国产真实乱对白精彩久久 | 丁香花在线影院观看在线播放 | 亚洲の无码国产の无码影院 | 少女韩国电视剧在线观看完整 | 日日麻批免费40分钟无码 | 国产性猛交╳xxx乱大交 国产精品久久久久久无码 欧洲欧美人成视频在线 | 娇妻被黑人粗大高潮白浆 | 日本大香伊一区二区三区 | 久久97精品久久久久久久不卡 | 扒开双腿疯狂进出爽爽爽视频 | 亚洲码国产精品高潮在线 | 亚洲成熟女人毛毛耸耸多 | 中文字幕av无码一区二区三区电影 | 俺去俺来也www色官网 | 日本xxxx色视频在线观看免费 | 亚洲中文字幕无码中文字在线 | 老头边吃奶边弄进去呻吟 | 在线亚洲高清揄拍自拍一品区 | 中文精品无码中文字幕无码专区 | 久久人妻内射无码一区三区 | 人妻尝试又大又粗久久 | 久久精品国产大片免费观看 | 国产成人精品三级麻豆 | 97精品国产97久久久久久免费 | 亚洲gv猛男gv无码男同 | 久久天天躁狠狠躁夜夜免费观看 | 国产福利视频一区二区 | 日本精品少妇一区二区三区 | 中文字幕av无码一区二区三区电影 | 亚洲一区二区三区国产精华液 | 骚片av蜜桃精品一区 | 国产色视频一区二区三区 | 四虎影视成人永久免费观看视频 | 久久久久亚洲精品中文字幕 | 亚洲 a v无 码免 费 成 人 a v | 国产精品手机免费 | 红桃av一区二区三区在线无码av | 大肉大捧一进一出好爽视频 | 成人三级无码视频在线观看 | 亚洲男女内射在线播放 | 国产香蕉97碰碰久久人人 | 在线精品国产一区二区三区 | 国产美女极度色诱视频www | 亚洲中文字幕乱码av波多ji | 国产人妻大战黑人第1集 | 水蜜桃色314在线观看 | 欧美人与禽zoz0性伦交 | 中文字幕无码视频专区 | 国产成人精品一区二区在线小狼 | 久久99精品国产.久久久久 | 日本高清一区免费中文视频 | 少妇性l交大片欧洲热妇乱xxx | 日日摸夜夜摸狠狠摸婷婷 | 一本久久伊人热热精品中文字幕 | 亚洲欧美日韩国产精品一区二区 | 亚洲va中文字幕无码久久不卡 | √天堂中文官网8在线 | 偷窥村妇洗澡毛毛多 | 亚洲日本一区二区三区在线 | 国内精品人妻无码久久久影院 | 人妻插b视频一区二区三区 | 久久亚洲日韩精品一区二区三区 | 中文无码伦av中文字幕 | 欧洲vodafone精品性 | 精品成在人线av无码免费看 | 欧美怡红院免费全部视频 | 成人三级无码视频在线观看 | 日本肉体xxxx裸交 | 国产美女极度色诱视频www | 欧洲熟妇色 欧美 | 亚洲一区二区三区国产精华液 | 国产乱人伦app精品久久 国产在线无码精品电影网 国产国产精品人在线视 | 人妻无码久久精品人妻 | 久久精品丝袜高跟鞋 | 免费看男女做好爽好硬视频 | 中文字幕无码日韩专区 | 亚洲理论电影在线观看 | 亚洲欧洲无卡二区视頻 | 人人妻人人澡人人爽欧美一区九九 | 亚洲精品一区三区三区在线观看 | 夜夜影院未满十八勿进 | 久久精品中文字幕大胸 | 又大又硬又黄的免费视频 | 久久久国产精品无码免费专区 | 亚洲欧洲日本无在线码 | 女人被男人爽到呻吟的视频 | 无码av岛国片在线播放 | 国产精品无码成人午夜电影 | 午夜福利不卡在线视频 | √8天堂资源地址中文在线 | 午夜无码区在线观看 | 国产又爽又黄又刺激的视频 | 亚洲自偷自拍另类第1页 | 丁香啪啪综合成人亚洲 | 露脸叫床粗话东北少妇 | 国产精华av午夜在线观看 | 国产精品福利视频导航 | 久久亚洲国产成人精品性色 | 在线精品亚洲一区二区 | 精品人妻中文字幕有码在线 | 日本一区二区三区免费播放 | 中文字幕无线码免费人妻 | 男人的天堂2018无码 | 高清不卡一区二区三区 | 少妇性荡欲午夜性开放视频剧场 | 性史性农村dvd毛片 | 色窝窝无码一区二区三区色欲 | 亚洲乱亚洲乱妇50p | 精品偷拍一区二区三区在线看 | 综合人妻久久一区二区精品 | 国产舌乚八伦偷品w中 | 曰韩少妇内射免费播放 | 极品尤物被啪到呻吟喷水 | 色婷婷综合激情综在线播放 | 亚洲精品久久久久中文第一幕 | 国产香蕉尹人综合在线观看 | 国产婷婷色一区二区三区在线 | 人妻少妇精品无码专区动漫 | 无码av免费一区二区三区试看 | 大肉大捧一进一出视频出来呀 | 国产人妻精品午夜福利免费 | 色偷偷av老熟女 久久精品人妻少妇一区二区三区 | 亚洲综合另类小说色区 | 欧美日韩综合一区二区三区 | 中文字幕无线码 | 久久99精品国产麻豆 | 中文字幕 亚洲精品 第1页 | 国产性生交xxxxx无码 | 亚洲成色www久久网站 | 亚洲国产精品无码久久久久高潮 | 俺去俺来也在线www色官网 | 国产超级va在线观看视频 | 少妇无套内谢久久久久 | 高清国产亚洲精品自在久久 | 亚洲精品国产品国语在线观看 | 最近免费中文字幕中文高清百度 | 正在播放老肥熟妇露脸 | 亚洲欧美综合区丁香五月小说 | 一个人看的www免费视频在线观看 | 成人一区二区免费视频 | 人人妻人人澡人人爽欧美一区九九 | 内射巨臀欧美在线视频 | 日日躁夜夜躁狠狠躁 | 天堂久久天堂av色综合 | 美女毛片一区二区三区四区 | 亚洲国产日韩a在线播放 | 欧美国产日韩久久mv | 日本xxxx色视频在线观看免费 | 乱中年女人伦av三区 | 天天av天天av天天透 | 色一情一乱一伦 | 天海翼激烈高潮到腰振不止 | 日日夜夜撸啊撸 | 国产内射爽爽大片视频社区在线 | 色窝窝无码一区二区三区色欲 | 中文字幕乱码人妻二区三区 | 久久伊人色av天堂九九小黄鸭 | 一区二区三区乱码在线 | 欧洲 | 九月婷婷人人澡人人添人人爽 | 久久综合给合久久狠狠狠97色 | 精品乱码久久久久久久 | 亚洲第一网站男人都懂 | 强开小婷嫩苞又嫩又紧视频 | 婷婷丁香六月激情综合啪 | 国产成人亚洲综合无码 | 久久久久亚洲精品男人的天堂 | 成人欧美一区二区三区黑人 | 狠狠色噜噜狠狠狠7777奇米 | 男女性色大片免费网站 | 国产精品沙发午睡系列 | 中文字幕人妻无码一夲道 |