精品欧美一区二区三区在线观看 _久久久久国色av免费观看性色_国产精品久久在线观看_亚洲第一综合网站_91精品又粗又猛又爽_小泽玛利亚一区二区免费_91亚洲精品国偷拍自产在线观看 _久久精品视频在线播放_美女精品久久久_欧美日韩国产成人在线

干掉復雜代碼 — Spring Boot 與 CQRS 才是黃金組合!

開發 架構
CQRS 提供了一種獨特的方式來擴展和組織微服務。當與 Spring 的生態系統結合時,它可以提供強大的工具包來構建健壯、可擴展和可維護的系統。然而,與所有架構決策一樣,必須權衡利弊并確保它適合您的特定用例。

微服務的興起以及現代軟件架構對可擴展性、靈活性和可維護性的需求導致開發人員接受各種設計模式。

近年來備受關注的一種模式是命令查詢職責分離 (CQRS) 模式。CQRS 特別適合命令(改變狀態)和查詢(讀取狀態)之間有明顯區別的系統。在本文中,我們將深入研究 CQRS 并了解如何使用 Spring 微服務來實現它。

了解 CQRS

什么是 CQRS?

命令查詢職責分離(CQRS)是一種架構模式,建議將數據修改操作(命令)與數據檢索操作(查詢)分離。這種分離允許開發專門的模型來查詢和更新數據,從而增強應用程序的清晰度和可擴展性。

CQRS 的核心目標是通過確保每個任務負責單個操作(命令或查詢,但絕不會同時負責兩者)來簡化任務。

起源與演變

CQRS 并不是一個全新的概念。它的根源可以追溯到 CQS(命令查詢分離),這是 Eiffel 編程語言的創建者 Bertrand Meyer 推廣的一項原則。雖然 CQS 主要是關于方法——聲明方法應該執行命令或回答查詢,但 CQRS 將這一原則擴展到應用程序的架構級別,建議不同的架構組件處理命令和查詢。

為什么使用 CQRS?

  • 可擴展性: CQRS 允許水平可擴展性,因為您可以根據需求部署命令或查詢服務的多個實例。讀取密集型和寫入密集型操作可以獨立擴展,從而優化資源利用率。
  • 靈活性: 命令和查詢之間的明確區別意味著開發人員可以為每個命令和查詢使用最合適的持久性機制、策略和優化。例如,雖然關系數據庫可能用于事務命令操作,但非規范化視圖存儲甚至全文搜索引擎都可以提供查詢服務。
  • 可維護性: 實施良好的 CQRS 模式簡化了代碼庫。通過讀取和寫入操作的單獨模型,開發人員可以專注于每個操作的細節,而不會分散不相關問題的注意力。這種隔離通常會產生更清晰的代碼,更容易維護和擴展。
  • 增強的安全性: CQRS 本質上促進了更好的安全實踐。通過分離命令和查詢操作,可以更輕松地對寫入操作實施嚴格的驗證和授權檢查,同時優化讀取操作的性能。

微服務中的 CQRS

微服務架構的興起放大了 CQRS 的必要性。在分布式系統中,服務通常需要自治和高度解耦,CQRS 提供了一條清晰的路徑。關注公眾號:碼猿技術專欄,回復關鍵詞:BAT,獲取大廠面試真題!每個微服務都可以采用 CQRS 模式,確保其處理命令和查詢的內部機制從其他服務中抽象出來。這也與領域驅動設計(DDD)非常吻合,其中領域事件可以觸發不同微服務中的命令。

潛在的陷阱

雖然 CQRS 提供了許多好處,但它也面臨著挑戰:

  • 復雜性增加: 引入 CQRS 會增加開銷,尤其是在讀取和寫入之間的區別不明顯的系統中。可能并不總是需要將每個讀取和寫入操作分開,這樣做可能會導致不必要的復雜性增加。
  • 一致性: 鑒于寫入存儲和讀取存儲可能不同,確保它們之間的數據一致性可能具有挑戰性,尤其是在分布式系統中。

CQRS 與 Spring 微服務

Spring 生態系統擁有豐富的工具和框架,非常適合在微服務環境中實現 CQRS 模式。

設置 Spring 引導

第一步是建立一個基本的 Spring Boot 項目。如果您是 Spring Boot 新手,您可以使用Spring Initializr輕松初始化您的項目。基本依賴項包括 Spring Web、Spring Data JPA 以及您喜歡的任何數據庫連接器。

命令、命令處理程序和聚合

在基于 Spring 的 CQRS 系統中,命令表示更改某些狀態的意圖,命令處理程序處理這些命令。

示例命令:

public class CreateUserCommand {
    private final String userId;
    private final String username;

    // Constructor, getters, and other methods...
}

對于每個命令,都定義了相應的命令處理程序。該處理程序包含處理命令的實際邏輯:

@Service
public class CreateUserCommandHandler implements CommandHandler<CreateUserCommand> {
    
    @Autowired
    private UserRepository userRepository;

    @Override
    public void handle(CreateUserCommand command) {
        User user = new User(command.getUserId(), command.getUsername());
        userRepository.save(user);
    }
}

在領域驅動設計(DDD)的背景下,狀態突變通常發生在聚合上。這些聚合可確保在保留任何更改之前遵守所有域規則。

查詢和查詢處理程序

類似地,查詢表示讀取某些狀態的請求,查詢處理程序處理這些請求。

查詢示例:

public class GetUserByIdQuery {
    private final String userId;

    // Constructor, getters, and other methods...
}

對應的查詢處理程序:

@Service
public class GetUserByIdQueryHandler implements QueryHandler<GetUserByIdQuery, User> {
    
    @Autowired
    private UserRepository userRepository;

    @Override
    public User handle(GetUserByIdQuery query) {
        return userRepository.findById(query.getUserId()).orElse(null);
    }
}

將事件溯源與 Axon 框架集成

雖然 CQRS 提供了隔離機制,但可以使用事件源來簡化命令和查詢之間狀態的維護。Axon 框架是一種有助于使用 Spring 實現 CQRS 和事件溯源的流行框架。

對于 Axon,事件在命令處理后發布。這些事件可以被持久化,然后用于重新創建聚合的狀態。它還有助于保持查詢端與命令端同步。

與 Apache Kafka 的異步通信

鑒于微服務的分布式特性,在服務之間實現異步通信通常是有益的。Apache Kafka 可以集成到 Spring 生態系統中,以實現強大的事件驅動架構,這在 CQRS 設置中特別有用。

命令端產生的事件可以推送到Kafka主題中,查詢端可以使用這些事件來更新自己的數據存儲。這確保了命令端和查詢端之間的解耦,使系統更具彈性和可擴展性。

事件溯源和 CQRS

雖然 CQRS 專注于分離命令和查詢職責,但事件溯源可確保應用程序狀態的每次更改都被捕獲在事件對象中,并按照它們應用于同一聚合的順序存儲。這種方法允許您重建過去的狀態,并且與 CQRS 結合使用時特別有利。

事件溯源的本質

事件溯源是關于持久化域事件而不是狀態本身。這些事件捕獲狀態轉換。通過重放它們,可以重建聚合的當前狀態。

例如,您將存儲所有交易(例如存款和取款等事件),而不是存儲銀行帳戶的當前余額。通過重播這些事件可以得出當前余額。

事件溯源的好處

  • 審計跟蹤: 事件溯源提供了自然的變更審計日志。這對于可追溯性和歷史記錄至關重要的領域至關重要。
  • 臨時查詢: 您可以確定系統在任何時間點的狀態。這對于調試和理解過去的狀態非常有價值。
  • 事件重播: 通過重播事件,您可以重新生成讀取優化的視圖。當您想要創建新的投影或重建損壞的投影時,這尤其有用。

將事件溯源與 CQRS 集成

CQRS 和事件溯源通過以下方式相互補充:

  • 解耦: 正如命令和查詢在 CQRS 中解耦一樣,通過事件源,事件(表示狀態更改)與實際狀態解耦。這促進了松散耦合的架構。
  • 可擴展性: CQRS 中讀取和寫入的隔離性質非常適合事件驅動系統。命令模型處理命令并生成事件,而查詢模型處理查詢并可以通過偵聽這些事件來更新。
  • 彈性: 通過重放事件的能力,可以在發生故障時重建系統狀態,甚至可以遷移到全新的系統。

使用 Spring 和 Axon 框架實現

如前所述,Axon 框架提供了一種在 Spring 應用程序中實現 CQRS 和事件源的無縫方法:

聚合和事件處理: 在 Axon 中,聚合負責命令處理和事件生成。處理命令后,它們應用導致狀態更改的事件。

@Aggregate
publicclass Account {
    @AggregateIdentifier
    private String accountId;
    privateint balance;

    @CommandHandler
    public void handle(WithdrawMoneyCommand cmd) {
        if (cmd.getAmount() > balance) {
            thrownew InsufficientFundsException();
        }
        apply(new MoneyWithdrawnEvent(cmd.getAccountId(), cmd.getAmount()));
    }

    @EventSourcingHandler
    public void on(MoneyWithdrawnEvent evt) {
        this.balance -= evt.getAmount();
    }
}

事件存儲: Axon 提供了一種存儲和檢索事件的機制。可以重播這些事件以重建聚合的狀態。

投影: Axon 中的投影提供了 CQRS 的查詢端。他們監聽事件并更新讀取優化視圖。這樣,您的查詢模型始終會根據最新更改保持更新。

挑戰和考慮因素

雖然 CQRS 和事件溯源可以提供巨大的好處,但它們也具有復雜性。意識到這些挑戰將確保更明智、更順利的實施。

復雜性開銷

架構復雜性: CQRS 和事件源向系統引入了額外的層和組件,例如事件存儲、命令和事件總線以及同步機制。

學習曲線: 對于剛接觸這些模式的團隊,將有一個學習階段。從傳統的基于 CRUD 的系統的概念轉變可能具有挑戰性。

數據一致性

最終一致性: 鑒于命令和查詢模型的隔離性質,通常會為了最終一致性而犧牲即時一致性。這意味著在命令端所做的更改反映在查詢端之前可能會有延遲。

事件排序: 確保事件按照生成的順序進行處理,尤其是在分布式系統中,可能很棘手,但對于保持一致的狀態至關重要。

事件版本控制

隨著時間的推移,事件的結構或語義可能會發生變化,從而導致以下挑戰:

  • 版本不匹配: 處理同一事件類型的不同版本可能會變得復雜。
  • 事件升級: 隨著事件的發展,系統必須能夠將舊事件升級為新版本,而不改變存儲的事件。

數據存儲和重放

存儲注意事項: 由于存儲所有事件,事件存儲可能會快速增長,從而導致存儲成本增加和潛在的性能問題。

重播持續時間: 通過重播長期歷史事件來重建系統狀態可能非常耗時,會影響系統恢復和初始化時間。

與其他系統集成

將使用 CQRS 和事件源的系統與不遵循這些模式的外部系統集成可能具有挑戰性,特別是在數據同步和事務管理方面。

確定邊界

粒度決策: 決定應用 CQRS 和事件溯源的粒度至關重要。在微觀層面上實施它們可能會導致過于復雜化,而過于廣泛地實施可能會削弱好處。

域復雜性: 這些模式對于簡單域來說可能有點過分了。它們更適合復雜的領域,其好處超過了實施和維護成本。

工具和基礎設施

雖然有像 Axon 和框架這樣的工具支持 CQRS 和事件溯源,但它們可能并不總是適合所有場景。可能需要自定義實現,這會增加項目的復雜性和持續時間。

結論

CQRS 提供了一種獨特的方式來擴展和組織微服務。當與 Spring 的生態系統結合時,它可以提供強大的工具包來構建健壯、可擴展和可維護的系統。然而,與所有架構決策一樣,必須權衡利弊并確保它適合您的特定用例。

責任編輯:武曉燕 來源: 碼猿技術專欄
相關推薦

2025-03-03 08:49:59

2023-08-14 23:23:56

2023-11-09 08:28:06

DDDCQRS黃金組合

2024-06-11 08:50:43

xlwingsPython庫Excel

2025-10-10 04:10:00

2009-06-22 16:19:27

無線路由器產品華碩

2020-11-09 14:03:51

Spring BootMaven遷移

2022-02-11 23:24:47

QuarkusSpringJava

2025-04-21 09:07:00

2025-06-26 01:10:00

服務定位解析器Spring

2025-10-11 01:25:00

Spring編程黃金模式

2019-04-25 14:25:24

Spring Bootif elseJava

2025-09-03 07:39:06

2009-12-04 09:08:53

CentOS紅帽

2025-03-12 14:09:56

2009-05-25 10:18:29

PHPLAMPGLAMMP

2020-05-11 15:23:58

CQRS代碼命令

2025-08-20 09:34:57

2025-07-08 08:20:39

2025-02-07 11:32:20

點贊
收藏

51CTO技術棧公眾號

久久久精品2019中文字幕之3| 亚洲国产黄色| 欧美一区二区在线不卡| 欧美中文字幕在线观看视频| 日批免费在线观看| 日韩电影在线观看电影| 久久久av一区| 亚洲男人在线天堂| 欧美亚洲人成在线| 亚洲国产精品影院| 视频一区二区三区免费观看| 99久久久久久久| 亚洲综合日本| 欧美精品一本久久男人的天堂| 伊人网综合视频| 99久久综合国产精品二区| 国产精品美女一区二区| 国产一区二区在线网站| 一二三区中文字幕| 99精品视频免费全部在线| 日韩在线国产精品| www.超碰97| 日本亚州欧洲精品不卡| 色婷婷综合久久久久中文一区二区| 欧美另类videos| 欧美一区二区视频| 国产乱码精品一区二区三区五月婷| 欧美激情精品久久久久久变态| 久久精品三级视频| 久久精品论坛| 日韩精品一区二区三区在线观看| 99草草国产熟女视频在线| 国产亚av手机在线观看| 国产人成亚洲第一网站在线播放| 国产精品免费观看高清| 91亚洲欧美激情| 日韩二区三区四区| 26uuu另类亚洲欧美日本一| 日韩成人毛片视频| 日韩欧美高清在线播放| 亚洲欧洲视频在线| 亚洲啪av永久无码精品放毛片 | 亚洲一区二区| 中文字幕精品久久| 日本理论中文字幕| 国产一区二区三区四区五区| 日韩av在线一区| 国产国语老龄妇女a片| 欧洲精品99毛片免费高清观看 | 99久久夜色精品国产亚洲96| 中文日韩在线观看| www.狠狠爱| 国产精品美女久久久久久不卡| 亚洲精品中文字幕有码专区| 亚洲av成人片色在线观看高潮| 伊人精品久久| 精品免费视频一区二区| 日本一区二区免费视频| 在这里有精品| 精品国产91亚洲一区二区三区婷婷| 男插女视频网站| 亚洲高清在线一区| 欧美精品一区二区不卡| 伦理片一区二区| 欧美人体视频| 国产一区二区三区丝袜| 永久免费av无码网站性色av| 欧美1级片网站| 久久久精品2019中文字幕神马| 四虎影院中文字幕| 综合激情婷婷| 久久久影视精品| 天堂а√在线中文在线新版| 日韩精品久久理论片| 国产精品亚洲网站| av手机免费看| 91免费观看在线| 亚洲7777| 日本无删减在线| 色综合久久中文综合久久牛| 一区二区三区韩国| 精品一区二区三区四区五区| 欧美tk丨vk视频| 美女久久久久久久久久| 久久国产亚洲精品| 色综合久久88色综合天天看泰| 在线观看 中文字幕| 丝袜亚洲另类丝袜在线| 国产日韩一区在线| 日韩在线视频第一页| 国产三区在线成人av| 中文字幕色一区二区| 成人在线高清免费| 欧洲视频一区二区| 丰满少妇中文字幕| 九九精品在线| 另类色图亚洲色图| 国产高清中文字幕| 日韩免费高清视频网站| 欲求不满的岳中文字幕| 亚洲AV无码一区二区三区少妇| 国产69精品久久久久毛片| 精品国产乱码久久久久| 91在线不卡| 亚洲在线观看免费视频| 日本xxxxxxx免费视频| 国产精品欧美一区二区三区不卡| 日韩成人av网址| 国产在线免费看| 国产欧美三级| 91在线视频精品| 邻家有女韩剧在线观看国语| 亚洲精选视频在线| 粗暴91大变态调教| 亚洲码欧美码一区二区三区| 国产一级揄自揄精品视频| 久久99久久久| 久久草av在线| 欧美日韩国产高清视频| 免费男女羞羞的视频网站在线观看| 日韩欧美在线网址 | 久久国产成人午夜av影院| 免费成人看片网址| 欧美大片黄色| 欧美一区二区三区在线观看视频| 日本乱子伦xxxx| 999亚洲国产精| 97操在线视频| 黄视频网站在线看| 欧美四级电影网| 精品无码一区二区三区| 在线亚洲成人| 九色91在线视频| 成年人黄色大片在线| 日韩欧美国产电影| 欧美在线视频第一页| 精品一区二区在线看| 日本免费高清一区| 黑人巨大精品欧美一区二区桃花岛| 精品久久免费看| 免费网站看av| 高清av一区二区| 亚洲色婷婷久久精品av蜜桃| 国产日韩中文在线中文字幕| 日日狠狠久久偷偷四色综合免费 | 青草av.久久免费一区| 欧美日韩日本网| 亚洲成人激情社区| 亚洲欧洲日韩国产| 高潮毛片又色又爽免费 | 久久99精品久久久久子伦| 97超碰免费在线| 亚洲国产精品大全| 日本一区二区三区免费视频| www.视频一区| av免费观看网| 国产精品一区二区av交换| 日本成人黄色片| 国产二区视频在线观看| 欧美在线观看一区| 亚洲毛片亚洲毛片亚洲毛片| 精品一区精品二区高清| 国内外成人激情免费视频| 欧美视频三区| 国内外成人免费激情在线视频| 日韩中文字幕免费在线观看| 动漫精品一区二区| 性欧美一区二区| 久久99精品国产91久久来源| 中国老女人av| 欧美国产不卡| 国产精品久久久久久av福利| 日本视频在线播放| 日韩欧美国产三级电影视频| 欧美三级韩国三级日本三斤在线观看| 97久久精品人人澡人人爽| 欧美牲交a欧美牲交aⅴ免费下载| 欧美亚洲国产精品久久| 亚洲a中文字幕| av今日在线| 一区二区日韩精品| 99产精品成人啪免费网站| 亚洲韩国一区二区三区| 欧美狂猛xxxxx乱大交3| 国产在线一区二区| 久无码久无码av无码| 精品久久久久久久| 超碰97人人人人人蜜桃| 亚洲永久av| 久久国产精品网站| 日本啊v在线| 91精品在线观看入口| 五月天综合激情网| 国产精品福利一区| 亚洲成av人片在线观看无| 日韩高清国产一区在线| 91成人综合网| 99精品综合| 免费看污久久久| 免费观看亚洲视频大全| 日本一区二区三区四区视频| 黄网站在线播放| 亚洲欧美激情在线视频| 国产模特av私拍大尺度| 日本黄色一区二区| 久久午夜无码鲁丝片| 国产日韩av一区| 香蕉久久久久久av成人| 日本欧美大码aⅴ在线播放| 国产黄色激情视频| 天天久久综合| 日本午夜精品一区二区| 成人福利一区| 成人在线播放av| 成人免费福利| 97色在线观看免费视频| 国产在线高潮| 在线观看亚洲区| 日本视频在线观看一区二区三区| 日韩三级视频在线看| 在线免费观看日韩视频| 欧美性xxxx极品hd欧美风情| 青青草原免费观看| 中文字幕制服丝袜成人av | 国产成人精品免费视| 国产v亚洲v天堂无码| 国产aa精品| 国产噜噜噜噜久久久久久久久| 亚洲欧洲自拍| 97av在线影院| 成年女人在线看片| 久久人人爽人人爽人人片av高清| 国产美女av在线| 日韩在线观看免费全| 亚洲1卡2卡3卡4卡乱码精品| 亚洲日韩中文字幕| 日韩专区一区二区| 亚洲精品少妇网址| 香蕉视频911| 亚洲激情中文字幕| 天堂在线观看视频| 亚洲成人教育av| 蜜臀av免费在线观看| 日韩女优视频免费观看| www国产一区| 日韩精品一区二区在线观看| www日本高清| 欧美大片在线观看一区二区| 成人激情四射网| 精品久久免费看| 亚州av在线播放| 亚洲美女性视频| 搞黄视频免费在线观看| 一道本无吗dⅴd在线播放一区 | 日本一区二区三区国色天香| 国产综合精品在线| 国产精品国产三级国产aⅴ原创 | yourporn在线观看视频| 夜夜嗨av一区二区三区四区| 91大神在线网站| 久久精品亚洲国产| 3d玉蒲团在线观看| 欧美韩日一区二区| 天堂电影一区| 国产精品久久久久一区二区 | 国产精品久久久久久免费观看| aaa国产精品视频| 精选一区二区三区四区五区| 久久91成人| 在线视频不卡一区二区三区| 亚洲一区二区| 欧美色图色综合| 日韩av中文在线观看| 在线能看的av网站| 粉嫩蜜臀av国产精品网站| 激情综合丁香五月| 欧美国产一区视频在线观看| 欧美日韩在线国产| 精品久久久久久国产91| 中文字幕观看在线| 日韩欧美亚洲另类制服综合在线| 天天干,夜夜操| 中文字幕在线看视频国产欧美| 性网站在线观看| 日本电影亚洲天堂| 国产日韩欧美中文在线| 久久香蕉综合色| 天天天综合网| 国产精品免费观看久久| 激情文学综合插| 鲁大师私人影院在线观看| 国产精品福利影院| 免费日韩一级片| 欧美美女一区二区| 无码国产精品一区二区色情男同 | 九九九九精品| 91精品二区| av无码精品一区二区三区| 国产馆精品极品| 日本少妇高潮喷水xxxxxxx| 亚洲人精品午夜| 午夜久久久久久久久久影院| 欧美精品一区二区三区久久久| 午夜在线观看视频| 久久免费视频在线| 91精品网站在线观看| 欧美日韩高清免费| 在线免费观看欧美| 国产永久免费网站| 久久免费精品国产久精品久久久久| 蜜臀久久精品久久久用户群体| 色综合天天综合给合国产| 丰满人妻一区二区三区四区53| 精品国产欧美一区二区五十路| videos性欧美另类高清| 成人av片网址| 亚洲国产精品久久久天堂 | 手机福利在线视频| 天堂精品中文字幕在线| 亚洲一区二区乱码| 一区二区三区在线观看动漫| 中文字幕有码视频| 亚洲午夜精品久久久久久久久久久久| 成全电影大全在线观看| 91在线直播亚洲| 手机在线一区二区三区| 在线观看av日韩| 久久精品一区四区| 亚洲永久精品在线观看| 日韩成人性视频| 暧暧视频在线免费观看| 91精品黄色| 一区二区日韩欧美| 成人亚洲免费视频| 国产精品麻豆网站| 国产成人精品亚洲| 一区二区三区国产在线观看| 肉色欧美久久久久久久免费看| 久久国产精品免费一区| 一区二区日韩免费看| 你懂的在线观看网站| 亚洲成人激情综合网| 亚洲精品一区二区三区蜜桃| 欧美精品日韩三级| 日本精品在线播放| 欧美成人精品免费| 99久久精品免费精品国产| 国产成人无码精品亚洲| 亚洲精品国产拍免费91在线| 国产在线88av| 欧美极品视频一区二区三区| 日韩中文字幕亚洲一区二区va在线| 一级黄色录像毛片| 欧美日韩国产小视频在线观看| 最近高清中文在线字幕在线观看| 国产精品一区二区久久精品| 久久一本综合| 欧美激情第一区| 亚洲精品国产无天堂网2021 | av男人天堂一区| 日韩免费视频一区二区视频在线观看| 国产视频久久久| 亚洲女同av| 宅男在线精品国产免费观看| 国产在线一区二区| 九热这里只有精品| 国产婷婷色综合av蜜臀av| 日韩一区精品| 黄黄视频在线观看| 99精品欧美一区二区三区小说| 欧美a视频在线观看| 中文字幕日韩精品在线| 国产一区二区三区免费在线| 欧美视频免费看欧美视频| 久久久久久一二三区| 亚洲午夜激情视频| 欧美国产日韩在线| 视频国产一区| 女人扒开腿免费视频app| 精品福利樱桃av导航| 91精品国产综合久久久久久豆腐| 成人h视频在线观看| 免费精品视频| 欧美黄色aaa| 亚洲欧洲国产伦综合| 日本在线一区二区三区| 北条麻妃在线观看| 亚洲人亚洲人成电影网站色| 日韩在线免费看| 91精品久久久久久蜜桃| 首页亚洲欧美制服丝腿| 中文字幕另类日韩欧美亚洲嫩草| 日韩精品在线视频美女| 四虎永久精品在线| 国产视频九色蝌蚪| 中文字幕中文字幕一区| 你懂的视频在线免费| 99国产在线| 日本不卡视频在线| 日韩精品视频免费看|