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

Spring Boot 使用 Disruptor 做內部高性能消息隊列

開發(fā) 架構
其實 生成者 -> 消費者 模式是很常見的,通過一些消息隊列也可以輕松做到上述的效果。不同的地方在于,Disruptor 是在內存中以隊列的方式去實現(xiàn)的,而且是無鎖的。這也是 Disruptor 為什么高效的原因。

工作中遇到項目使用Disruptor做消息隊列,對你沒看錯,不是Kafka,也不是rabbitmq。Disruptor有個最大的優(yōu)點就是快,還有一點它是開源的哦,下面做個簡單的記錄。

圖片

Disruptor介紹

  • Disruptor 是英國外匯交易公司LMAX開發(fā)的一個高性能隊列,研發(fā)的初衷是解決內存隊列的延遲問題(在性能測試中發(fā)現(xiàn)竟然與I/O操作處于同樣的數(shù)量級)。基于 Disruptor 開發(fā)的系統(tǒng)單線程能支撐每秒 600 萬訂單,2010 年在 QCon 演講后,獲得了業(yè)界關注。
  • Disruptor是一個開源的Java框架,它被設計用于在生產(chǎn)者—消費者(producer-consumer problem,簡稱PCP)問題上獲得盡量高的吞吐量(TPS)和盡量低的延遲。
  • 從功能上來看,Disruptor 是實現(xiàn)了“隊列”的功能,而且是一個有界隊列。那么它的應用場景自然就是“生產(chǎn)者-消費者”模型的應用場合了。
  • Disruptor是LMAX在線交易平臺的關鍵組成部分,LMAX平臺使用該框架對訂單處理速度能達到600萬TPS,除金融領域之外,其他一般的應用中都可以用到Disruptor,它可以帶來顯著的性能提升。
  • 其實Disruptor與其說是一個框架,不如說是一種設計思路,這個設計思路對于存在“并發(fā)、緩沖區(qū)、生產(chǎn)者—消費者模型、事務處理”這些元素的程序來說,Disruptor提出了一種大幅提升性能(TPS)的方案。
  • Disruptor的github主頁:https://github.com/LMAX-Exchange/disruptor

Disruptor 的核心概念

先從了解 Disruptor 的核心概念開始,來了解它是如何運作的。下面介紹的概念模型,既是領域對象,也是映射到代碼實現(xiàn)上的核心對象。

Ring Buffer

如其名,環(huán)形的緩沖區(qū)。曾經(jīng) RingBuffer 是 Disruptor 中的最主要的對象,但從3.0版本開始,其職責被簡化為僅僅負責對通過 Disruptor 進行交換的數(shù)據(jù)(事件)進行存儲和更新。在一些更高級的應用場景中,Ring Buffer 可以由用戶的自定義實現(xiàn)來完全替代。

Sequence Disruptor

通過順序遞增的序號來編號管理通過其進行交換的數(shù)據(jù)(事件),對數(shù)據(jù)(事件)的處理過程總是沿著序號逐個遞增處理。一個 Sequence 用于跟蹤標識某個特定的事件處理者( RingBuffer/Consumer )的處理進度。雖然一個 AtomicLong 也可以用于標識進度,但定義 Sequence 來負責該問題還有另一個目的,那就是防止不同的 Sequence 之間的CPU緩存?zhèn)喂蚕?Flase Sharing)問題。(注:這是 Disruptor 實現(xiàn)高性能的關鍵點之一,網(wǎng)上關于偽共享問題的介紹已經(jīng)汗牛充棟,在此不再贅述)。

Sequencer

Sequencer 是 Disruptor 的真正核心。此接口有兩個實現(xiàn)類 SingleProducerSequencer、MultiProducerSequencer ,它們定義在生產(chǎn)者和消費者之間快速、正確地傳遞數(shù)據(jù)的并發(fā)算法。

Sequence Barrier

用于保持對RingBuffer的 main published Sequence 和Consumer依賴的其它Consumer的 Sequence 的引用。Sequence Barrier 還定義了決定 Consumer 是否還有可處理的事件的邏輯。

Wait Strategy

定義 Consumer 如何進行等待下一個事件的策略。(注:Disruptor 定義了多種不同的策略,針對不同的場景,提供了不一樣的性能表現(xiàn))

Event

在 Disruptor 的語義中,生產(chǎn)者和消費者之間進行交換的數(shù)據(jù)被稱為事件(Event)。它不是一個被 Disruptor 定義的特定類型,而是由 Disruptor 的使用者定義并指定。

EventProcessor

EventProcessor 持有特定消費者(Consumer)的 Sequence,并提供用于調用事件處理實現(xiàn)的事件循環(huán)(Event Loop)。

EventHandler

Disruptor 定義的事件處理接口,由用戶實現(xiàn),用于處理事件,是 Consumer 的真正實現(xiàn)。

Producer

即生產(chǎn)者,只是泛指調用 Disruptor 發(fā)布事件的用戶代碼,Disruptor 沒有定義特定接口或類型。

圖片

案例-demo

通過下面8個步驟,你就能將Disruptor Get回家啦:

1.添加pom.xml依賴

<dependency>
<groupId>com.lmax</groupId>
<artifactId>disruptor</artifactId>
<version>3.3.4</version>
</dependency>

2.消息體Model

/**
* 消息體
*/
@Data
public class MessageModel {
private String message;
}

3.構造EventFactory

public class HelloEventFactory implements EventFactory<MessageModel> {
@Override
public MessageModel newInstance() {
return new MessageModel();
}
}

4.構造EventHandler-消費者

@Slf4j
public class HelloEventHandler implements EventHandler<MessageModel> {
@Override
public void onEvent(MessageModel event, long sequence, boolean endOfBatch) {
try {
//這里停止1000ms是為了確定消費消息是異步的
Thread.sleep(1000);
log.info("消費者處理消息開始");
if (event != null) {
log.info("消費者消費的信息是:{}",event);
}
} catch (Exception e) {
log.info("消費者處理消息失敗");
}
log.info("消費者處理消息結束");
}
}

5.構造BeanManager

/**
* 獲取實例化對象
*/
@Component
public class BeanManager implements ApplicationContextAware {

private static ApplicationContext applicationContext = null;

@Override
public void setApplicationContext(ApplicationContext applicationContext) throws BeansException {
this.applicationContext = applicationContext;
}

public static ApplicationContext getApplicationContext() { return applicationContext; }

public static Object getBean(String name) {
return applicationContext.getBean(name);
}

public static <T> T getBean(Class<T> clazz) {
return applicationContext.getBean(clazz);
}
}

6.構造MQManager

@Configuration
public class MQManager {

@Bean("messageModel")
public RingBuffer<MessageModel> messageModelRingBuffer() {
//定義用于事件處理的線程池, Disruptor通過java.util.concurrent.ExecutorSerivce提供的線程來觸發(fā)consumer的事件處理
ExecutorService executor = Executors.newFixedThreadPool(2);

//指定事件工廠
HelloEventFactory factory = new HelloEventFactory();

//指定ringbuffer字節(jié)大小,必須為2的N次方(能將求模運算轉為位運算提高效率),否則將影響效率
int bufferSize = 1024 * 256;

//單線程模式,獲取額外的性能
Disruptor<MessageModel> disruptor = new Disruptor<>(factory, bufferSize, executor,
ProducerType.SINGLE, new BlockingWaitStrategy());

//設置事件業(yè)務處理器---消費者
disruptor.handleEventsWith(new HelloEventHandler());

// 啟動disruptor線程
disruptor.start();

//獲取ringbuffer環(huán),用于接取生產(chǎn)者生產(chǎn)的事件
RingBuffer<MessageModel> ringBuffer = disruptor.getRingBuffer();

return ringBuffer;
}

7.構造Mqservice和實現(xiàn)類-生產(chǎn)者

public interface DisruptorMqService {

/**
* 消息
* @param message
*/
void sayHelloMq(String message);
}

@Slf4j
@Component
@Service
public class DisruptorMqServiceImpl implements DisruptorMqService {

@Autowired
private RingBuffer<MessageModel> messageModelRingBuffer;


@Override
public void sayHelloMq(String message) {
log.info("record the message: {}",message);
//獲取下一個Event槽的下標
long sequence = messageModelRingBuffer.next();
try {
//給Event填充數(shù)據(jù)
MessageModel event = messageModelRingBuffer.get(sequence);
event.setMessage(message);
log.info("往消息隊列中添加消息:{}", event);
} catch (Exception e) {
log.error("failed to add event to messageModelRingBuffer for : e = {},{}",e,e.getMessage());
} finally {
//發(fā)布Event,激活觀察者去消費,將sequence傳遞給改消費者
//注意最后的publish方法必須放在finally中以確保必須得到調用;如果某個請求的sequence未被提交將會堵塞后續(xù)的發(fā)布操作或者其他的producer
messageModelRingBuffer.publish(sequence);
}
}
}

8.構造測試類及方法

@Slf4j
@RunWith(SpringRunner.class)
@SpringBootTest(classes = DemoApplication.class)
public class DemoApplicationTests {

@Autowired
private DisruptorMqService disruptorMqService;
/**
* 項目內部使用Disruptor做消息隊列
* @throws Exception
*/
@Test
public void sayHelloMqTest() throws Exception{
disruptorMqService.sayHelloMq("消息到了,Hello world!");
log.info("消息隊列已發(fā)送完畢");
//這里停止2000ms是為了確定是處理消息是異步的
Thread.sleep(2000);
}
}

測試運行結果:

2020-04-05 14:31:18.543  INFO 7274 --- [           main] c.e.u.d.d.s.Impl.DisruptorMqServiceImpl  : record the message: 消息到了,Hello world!
2020-04-05 14:31:18.545 INFO 7274 --- [ main] c.e.u.d.d.s.Impl.DisruptorMqServiceImpl : 往消息隊列中添加消息:MessageModel(message=消息到了,Hello world!)
2020-04-05 14:31:18.545 INFO 7274 --- [ main] c.e.utils.demo.DemoApplicationTests : 消息隊列已發(fā)送完畢
2020-04-05 14:31:19.547 INFO 7274 --- [pool-1-thread-1] c.e.u.d.disrupMq.mq.HelloEventHandler : 消費者處理消息開始
2020-04-05 14:31:19.547 INFO 7274 --- [pool-1-thread-1] c.e.u.d.disrupMq.mq.HelloEventHandler : 消費者消費的信息是:MessageModel(message=消息到了,Hello world!)
2020-04-05 14:31:19.547 INFO 7274 --- [pool-1-thread-1] c.e.u.d.disrupMq.mq.HelloEventHandler : 消費者處理消息結束

總結

其實 生成者 -> 消費者 模式是很常見的,通過一些消息隊列也可以輕松做到上述的效果。不同的地方在于,Disruptor 是在內存中以隊列的方式去實現(xiàn)的,而且是無鎖的。這也是 Disruptor 為什么高效的原因。

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

2025-08-14 07:42:21

2022-12-09 08:40:56

高性能內存隊列

2024-10-30 15:43:56

2017-07-11 15:26:57

LocalMQ RocketMQ高性能

2025-06-27 10:41:04

Redis數(shù)據(jù)庫集群

2024-08-15 06:51:31

2024-10-25 08:41:18

消息隊列RedisList

2025-01-15 07:54:02

2024-07-31 08:31:13

2024-04-29 18:55:16

緩存Spring性能

2024-12-31 07:56:33

Disruptor內存有界隊列消費模式

2024-01-10 08:17:50

HikariCP數(shù)據(jù)庫Spring

2025-02-06 10:00:52

RedisSpring高性能

2023-10-23 11:40:44

SpringBootDisruptor

2021-09-03 06:46:34

Spring 6pring Boot 項目

2021-09-15 09:02:20

Spring 6Spring BootJava

2021-03-11 06:01:41

Linux消息隊列

2024-03-22 12:10:39

Redis消息隊列數(shù)據(jù)庫

2017-10-11 15:08:28

消息隊列常見

2025-05-29 01:33:00

微服務架構系統(tǒng)
點贊
收藏

51CTO技術棧公眾號

日本不良网站在线观看| 成人午夜福利视频| 久久久久久久久国产一区| 日韩一区二区三区三四区视频在线观看| 国产一二三四五| 亚州精品国产精品乱码不99按摩| 奇米影视一区二区三区| 久久成人免费视频| 欧亚乱熟女一区二区在线| av激情成人网| 亚洲va韩国va欧美va精品| 日本电影一区二区三区| 精品国自产拍在线观看| 美女诱惑一区| 欧美国产日韩二区| 免费看日本黄色片| 超碰97成人| 欧美三级在线视频| 成人午夜精品久久久久久久蜜臀| 国内精品在线视频| 国产激情精品久久久第一区二区| 日本免费久久高清视频| 亚洲欧美一区二区三区四区五区| 国产精品中文字幕亚洲欧美| 亚洲精品一线二线三线| 性欧美1819| 在线男人天堂| 亚洲图片自拍偷拍| 亚洲精品久久区二区三区蜜桃臀 | 亚洲成人精品| 亚洲新声在线观看| 六十路息与子猛烈交尾| 一区中文字幕电影| 欧美一级艳片视频免费观看| 亚洲污视频在线观看| 高端美女服务在线视频播放| 亚洲欧洲综合另类在线| 婷婷亚洲婷婷综合色香五月| 天天操天天干天天舔| 国产精品资源在线| 成人免费网站在线| 91久久国产综合久久91| 一区久久精品| 欧美激情手机在线视频| 99鲁鲁精品一区二区三区| 加勒比久久综合| 日韩二区三区在线| 强迫凌虐淫辱の牝奴在线观看| 国产精品成人**免费视频| 欧美性videosxxxxx| 亚洲午夜无码av毛片久久| 999av小视频在线| 亚洲在线观看免费视频| 欧美日韩在线免费观看视频| a黄色在线观看| 欧美激情一区二区三区不卡 | 特黄视频在线观看| 成人一区二区三区| 国产欧美一区二区三区不卡高清| 精品国产av一区二区| 国产一区在线不卡| 91精品啪aⅴ在线观看国产| 亚洲中文字幕一区二区| 秋霞影院一区二区| 国产精品午夜一区二区欲梦| 亚洲av人无码激艳猛片服务器| 视频一区欧美精品| 国产精品香蕉国产| 91国产免费视频| 国产一区 二区 三区一级| 亚洲综合色av| 性一交一乱一透一a级| 丁香婷婷深情五月亚洲| 国产欧美一区二区三区另类精品| 日批视频在线播放| 337p粉嫩大胆噜噜噜噜噜91av| 久久久久久久久久久久久久久久av | 国产传媒一区二区三区| 蜜桃视频久久一区免费观看入口| 成人动漫视频在线| 久久精品美女| а天堂8中文最新版在线官网| 一色屋精品亚洲香蕉网站| 艳母动漫在线观看| 538在线视频| 日本韩国欧美三级| 小早川怜子一区二区三区| 一区二区视频| 亚洲男人第一av网站| 女性裸体视频网站| 亚洲小说欧美另类婷婷| 国产成人精品久久| av中文在线观看| 91色视频在线| 日本黄色a视频| 99热99re6国产在线播放| 色久优优欧美色久优优| 在线观看av免费观看| 日本久久成人网| 色妞色视频一区二区三区四区| 好吊色视频在线观看| 天堂精品中文字幕在线| 亚洲一区二区三区乱码aⅴ蜜桃女| 蜜桃91麻豆精品一二三区| 国产午夜亚洲精品不卡| 蜜桃网站在线观看| free欧美| 精品电影一区二区三区| 国产一二三av| 午夜宅男久久久| 91欧美日韩一区| 毛片网站在线观看| 亚洲精品免费在线| 美女喷白浆视频| 加勒比色老久久爱综合网| 精品国产欧美成人夜夜嗨| 天天做天天爱夜夜爽| 狠狠色狠狠色综合系列| 日本精品视频一区| av影院在线| 欧美一区二区三区婷婷月色| 国产激情在线免费观看| 伊人久久久大香线蕉综合直播| 国产精品尤物福利片在线观看| 色一情一乱一乱一区91av| 亚洲日韩欧美一区二区在线| 一级黄色香蕉视频| 日韩有码av| 久久久亚洲精品视频| 国产精品久久久久久在线| 国产日产亚洲精品系列| 国产在线精品91| 7m精品国产导航在线| 另类天堂视频在线观看| 中文字幕视频二区| 久久综合色播五月| 波多野结衣家庭教师在线播放| 日韩激情精品| 久久福利视频网| 在线观看免费视频a| 国产日韩欧美高清在线| 国产精品第12页| 大奶一区二区三区| 欧美激情视频一区二区| www.xxx国产| 亚洲免费av高清| 日韩成人av免费| 99久久精品费精品国产| 国产精品欧美久久久| 大胆av不用播放器在线播放| 日韩欧美国产网站| 国产精品815.cc红桃| 久久久精品五月天| 日韩免费中文专区| yy6080久久伦理一区二区| 亚洲欧美另类中文字幕| 性色av免费观看| 久久久久久久av麻豆果冻| 欧洲熟妇精品视频| japanese国产精品| 国产精品香蕉国产| 成人在线免费看片| 日韩一二在线观看| 国产无码精品在线播放| 不卡电影一区二区三区| 精品人妻一区二区三区四区在线| 日韩精品免费一区二区三区竹菊 | 亚洲 欧美 日韩 综合| 91天堂素人约啪| 欧美亚洲日本在线观看| 色综合五月天| 97se视频在线观看| free性护士videos欧美| 亚洲欧洲在线观看| 亚洲午夜精品久久久| 亚洲欧美日韩国产成人精品影院 | 国产喷白浆一区二区三区| 亚洲xxxx2d动漫1| 亚洲一区二区日韩| 国产美女精品在线观看| 69久成人做爰电影| xvideos亚洲| 亚洲福利在线观看视频| 狠狠躁夜夜躁人人躁婷婷91| 特级西西www444人体聚色| 久久99精品国产.久久久久久| 国产精品啪啪啪视频| 欧美自拍视频| 国产日韩精品在线播放| 免费污视频在线观看| 国产丝袜视频一区| 国产一区二区三区三州| 亚洲成人自拍偷拍| 在线观看天堂av| av亚洲精华国产精华精华| 男人插女人下面免费视频| 欧美国产91| 欧美日韩一区在线视频| 91九色成人| 青草青草久热精品视频在线网站| 一广人看www在线观看免费视频| 精品国产制服丝袜高跟| 中文字幕 人妻熟女| 亚洲国产欧美一区二区三区丁香婷| 男人天堂av电影| 国产suv精品一区二区6| av在线无限看| 亚洲国产激情| 亚洲自拍偷拍一区二区三区| 九九久久婷婷| 国产伦精品一区二区三区高清| 欧美黄色成人| 奇米一区二区三区四区久久| 国产丝袜精品丝袜| 播播国产欧美激情| 国产精品一区在线看| 欧美成人高清电影在线| 中文字幕一区二区三区四区视频| 精品福利在线看| 中文字幕av免费在线观看| 国产精品毛片大码女人| 亚洲av无码一区二区二三区| 成人免费视频国产在线观看| 亚洲精品20p| 奇米色777欧美一区二区| heyzo国产| 亚洲大片av| 在线观看污视频| 性欧美69xoxoxoxo| 亚洲精品免费在线看| 国产精品一线天粉嫩av| 欧美福利精品| 五月综合久久| 中文字幕av资源一区| 国产精品久久久久久亚洲影视| av手机在线观看| 欧美国产第一页| 18videosex性欧美麻豆| 精品国产一区二区三区久久| 国产大学生校花援交在线播放| 日韩精品视频在线观看网址| 国产视频在线观看免费| 欧美日韩久久久| 亚洲国产无线乱码在线观看| 在线免费观看日本一区| 中文字幕一区二区人妻电影| 欧美日韩国产中文字幕| 香蕉免费毛片视频| 天天av天天翘天天综合网色鬼国产| 久久综合加勒比| 亚洲一区在线视频| 久久婷婷一区二区| 亚洲成人免费在线观看| 国产午夜免费视频| 亚洲国产毛片aaaaa无费看| 久久久久久久久久久网| 亚洲愉拍自拍另类高清精品| 国产系列精品av| 精品国产91久久久| 男女视频免费看| 色综合网站在线| 久久精品视频2| 欧美午夜电影一区| 91丨porny丨在线中文 | 国产精品久久久久久久久久久久久久久久久久 | 国产精品传媒麻豆hd| 成人精品久久久| 玖玖玖视频精品| 国产精品日韩一区二区免费视频 | 亚洲精品影院| 911久久香蕉国产线看观看| 麻豆映画在线观看| 伊人成人在线| 男人天堂成人在线| 久久国产精品第一页| 原创真实夫妻啪啪av| 成人av资源站| 少妇按摩一区二区三区| 国产日韩亚洲欧美综合| 一级片一级片一级片| 性感美女极品91精品| 欧美亚洲另类小说| 7777精品久久久大香线蕉| 亚洲春色一区二区三区| 日韩精品免费综合视频在线播放| 国产女人在线视频| 久久中文字幕一区| 日韩精品av| 国产精品揄拍一区二区| 成人精品毛片| 日韩国产欧美一区| 国产综合精品一区| 中文字幕乱码人妻综合二区三区| 久久国产剧场电影| 亚洲中文字幕一区| 亚洲欧美视频在线观看| 国产香蕉视频在线| 欧美日本韩国一区二区三区视频 | 在线视频欧美日韩| 牛牛精品在线| 国产精品久久久久久久一区探花 | 欧美一级二级三级| 中文不卡在线| 一本久道中文无码字幕av| 国产精品综合av一区二区国产馆| 亚洲人成人无码网www国产| 亚洲男同性恋视频| 久久精品国产成人av| 欧美日韩高清不卡| 四虎精品成人免费网站| 久久视频在线直播| 欧美日韩亚洲国产| 精品久久久久久乱码天堂| 91国语精品自产拍| 欧美日韩在线成人| 成人av高清在线| 欧美爱爱免费视频| 欧美三级资源在线| 奇米影视888狠狠狠777不卡| 欧美激情视频一区二区| **日韩最新| 五码日韩精品一区二区三区视频| 亚洲每日更新| 亚洲色图欧美另类| 亚洲乱码中文字幕综合| 中文字幕+乱码+中文乱码91| 亚洲女成人图区| 女海盗2成人h版中文字幕| 古典武侠综合av第一页| 一区二区三区网站| 亚洲成人天堂网| 亚洲国产精品黑人久久久| 成人午夜视频在线播放| 亚洲国产欧美精品| 蜜臀av在线| 成人黄色片视频网站| 中文精品久久| 亚洲午夜精品一区| 国产精品久久久久久亚洲伦| 国产情侣小视频| 亚洲欧洲午夜一线一品| 成人免费网站视频| 久久影视中文粉嫩av| 国产精品腿扒开做爽爽爽挤奶网站| 日本中文字幕有码| 一区二区成人在线视频| 国产浮力第一页| 欧美大片va欧美在线播放| 精品午夜视频| 天天想你在线观看完整版电影免费| 精品亚洲免费视频| 加勒比婷婷色综合久久| 欧美一区二区三区公司| 伊人春色在线观看| 懂色av一区二区三区在线播放| 狠狠入ady亚洲精品经典电影| 国产chinesehd精品露脸| 午夜精品一区在线观看| 污污网站免费在线观看| 国产91在线视频| 日韩av免费大片| 男女视频在线观看网站| 亚洲精选视频免费看| 亚洲欧美激情另类| 4438全国亚洲精品在线观看视频| 九色成人国产蝌蚪91| 美女在线视频一区二区| 亚洲男人的天堂在线aⅴ视频| 亚洲精品国产片| 18性欧美xxxⅹ性满足| 精品日韩毛片| 亚洲第一区第二区第三区| 亚洲成人一区在线| 二区三区在线| 91香蕉电影院| 亚洲精品欧美| 亚洲AV无码成人精品区明星换面| 欧美日韩免费不卡视频一区二区三区 | 嫩草影院一区二区三区| 日韩在线观看免费全集电视剧网站| 北岛玲精品视频在线观看| 久久亚洲精品无码va白人极品| 26uuu精品一区二区| 中文字幕在线观看1| 欧美激情视频网| 神马影视一区二区| 免费网站在线观看黄| 精品国产福利在线| 最新av网站在线观看| 国产91社区| 首页综合国产亚洲丝袜| 男女做暖暖视频| 日韩精品免费观看| av国产精品| 91精品91久久久中77777老牛| 国产精品蜜臀av| 亚洲精品97久久中文字幕无码 | 在线观看18视频网站| 26uuu国产一区二区三区| 国产口爆吞精一区二区|