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

使用Kubernetes的區塊鏈案例

譯文
開發 前端 區塊鏈
本文展示了如何使用Kubernetes和微服務架構來構建具有復雜功能的加密解決方案。

譯者 | 李睿

審校 | 孫淑娟

為了說明如何使用Kubernetes,建議考慮本文介紹的區塊鏈案例,并探討為加密貨幣市場開發的應用程序。這個應用程序使用的技術是實用的,也可以用于其他項目。換句話說,技術任務是一個非常通用的解決方案,主要針對Kubernetes進行了專門調整,也可以用于其他行業。

使用的技術

該項目是一個啟動項目,預算有限。而開發人員將定期為投資者提供演示,并定期展示開發新功能的進展情況。因此決定使用以下技術:

  • Node JS(NestJS 框架)
  • Postgre SQL數據庫
  • Kafka JS
  • Kubernetes(k8s)+Helm圖表
  • Flutter
  • React

開發過程

對于第一階段,開發人員的主要目的是將其應用程序拆分為微服務。在這一案例中,決定創建6個微服務。

(1)管理微服務

(2)核心微服務

(3)支付微服務

(4)郵件和通知服務

(5)Cron任務服務

(6)Webhooks微服務

值得一提的是,雖然技術堆棧是實用的,并且可以在各種情況下使用而無需更改,但上述微服務卻不是,它們是專門為這一項目中所需的功能而創建的。因此可以使用相同的技術,但必須根據需要設計新的微服務。

以下了解如何在NestJS上制作這些微服務。需要為Kafka消息代理進行配置選項。因此,為所有微服務的常用模塊和配置創建了一個共享資源文件夾。

微服務配置選項

import { ClientProviderOptions, Transport } from '@nestjs/microservices';

import CONFIG from '@application-config';

import { ConsumerGroups, ProjectMicroservices } from './microservices.enum';

const { BROKER_HOST, BROKER_PORT } = CONFIG.KAFKA;

export const PRODUCER_CONFIG = (name: ProjectMicroservices): ClientProviderOptions => ({

name,

transport: Transport.KAFKA,

options: {

client: {

brokers: [`${BROKER_HOST}:${BROKER_PORT}`],

},

}

});



export const CONSUMER_CONFIG = (groupId: ConsumerGroups) => ({

transport: Transport.KAFKA,

options: {

client: {

brokers: [`${BROKER_HOST}:${BROKER_PORT}`],

},

consumer: {

groupId

}

}

});

以消費者模式將管理面板微服務連接到Kafka。它將允許捕獲和處理來自主題的事件。

使應用程序在微服務模式下工作,以便能夠使用事件:

app.connectMicroservice(CONSUMER_CONFIG(ConsumerGroups.ADMIN)); await app.startAllMicroservices();

可以注意到消費者配置包含groupId。這是一個重要的選項,它將允許來自同一組的消費者從主題中獲取事件,并將它們分發給彼此以更快地處理它們。

例如,假設微服務接收事件的速度快于處理它們的速度。在這種情況下,可以進行自動擴展以生成額外的pod以在它們之間共享負載,并使該過程加快兩倍。

為了實現這一點,消費者應該在組中,并且在擴展之后,生成的pod也將在同一個組中。因此,他們將能夠共享加載,而不是處理來自不同Kafka分區的相同主題事件。

以下了解一個如何在NestJS中捕獲和處理Kafka事件的示例:

消費者控制器

import { Controller } from '@nestjs/common';

import { Ctx, KafkaContext, MessagePattern, EventPattern, Payload } from '@nestjs/microservices';

@Controller('consumer')

export class ConsumerController {

@MessagePattern('hero')

readMessage(@Payload() message: any, @Ctx() context: KafkaContext) {

return message;

}

@EventPattern('event-hero')

sendNotif(data) {

console.log(data);

}

}

消費者可以在兩種模式下工作。它接收事件并處理它們而不返回任何響應(EventPattern decorator),或者在處理事件后將響應返回給生產者(MessagePattern decorator)。EventPattern更好,如果可能的話應該是首選,因為它不包含任何額外的源代碼層來提供請求/響應功能。

生產者呢?

對于連接生產者,需要為負責發送事件的模塊提供生產者配置。

生產者連接

import { Module } from '@nestjs/common';

import DatabaseModule from '@shared/database/database.module';

import { ClientsModule } from '@nestjs/microservices';

import { ProducerController } from './producer.controller';

import { PRODUCER_CONFIG } from '@shared/microservices/microservices.config';

import { ProjectMicroservices } from '@shared/microservices/microservices.enum';


@Module({

imports: [

DatabaseModule,

ClientsModule.register([PRODUCER_CONFIG(ProjectMicroservices.ADMIN)]),

],

controllers: [ProducerController],

providers: [],

})

export class ProducerModule {}

基于事件的生產者

import { Controller, Get, Inject } from '@nestjs/common';

import { ClientKafka } from '@nestjs/microservices';

import { ProjectMicroservices } from '@shared/microservices/microservices.enum';


@Controller('producer')

export class ProducerController {

constructor(

@Inject(ProjectMicroservices.ADMIN)

private readonly client: ClientKafka,

) {}


@Get()

async getHello() {

this.client.emit('event-hero', { msg: 'Event Based'});

}

}

基于請求/響應的生產者

import { Controller, Get, Inject } from '@nestjs/common';

import { ClientKafka } from '@nestjs/microservices';

import { ProjectMicroservices } from '@shared/microservices/microservices.enum';



@Controller('producer')

export class ProducerController {

constructor(

@Inject(ProjectMicroservices.ADMIN)

private readonly client: ClientKafka,

) {}



async onModuleInit() {

// Need to subscribe to a topic

// to make the response receiving from Kafka microservice possible

this.client.subscribeToResponseOf('hero');

await this.client.connect();

}



@Get()

async getHello() {

const responseBased = this.client.send('hero', { msg: 'Response Based' });

return responseBased;

}

}

每個微服務可以同時在兩種模式(生產者/消費者)或兩種模式(混合)下工作。通常情況下,微服務使用混合模式來達到負載平衡的目的,為主題生成事件并均勻地使用它們,共享負載。

基于Helm圖表模板的Kubernetes配置,針對每個微服務實現。

Helm圖表描述的Admin API微服務組件及其結構

該模板由幾個配置文件組成:

  • 部署
  • hpa(水平pod自動擴展器)
  • 入口控制器
  • 服務

以下來看每個配置文件(沒有Helm模板)

Admin-API部署

apiVersion: apps/v1

kind: Deployment

metadata:

name: admin-api

spec:

replicas: 1

selector:

matchLabels:

app: admin-api

template:

metadata:

labels:

app: admin-api

spec:

containers:

- name: admin-api

image: xxx208926xxx.dkr.ecr.us-east-1.amazonaws.com/project-name/stage/admin-api

resources:

requests:

cpu: 250m

memory: 512Mi

limits:

cpu: 250m

memory: 512Mi

ports:

- containerPort: 80

env:

- name: NODE_ENV

value: production



- name: APP_PORT

           value: "80"

部署可以包含更多的精簡配置,如資源限制、健康檢查配置、更新策略等。但是提供了一個基本配置示例,可以根據任何其他項目的需要進行擴展。

Admin-API服務

--

apiVersion: v1

kind: Service

metadata:

name: admin-api

spec:

selector:

app: admin-api

ports:

- name: admin-api-port

port: 80

targetPort: 80

protocol: TCP

 type: NodePort

需要將服務暴露給外界才能使用它。通過負載均衡器公開的應用程序,并提供SSL配置以使用安全的HTTPS連接。

需要在集群上安裝一個負載均衡控制器。這是最流行的解決方案:AWS負載均衡器控制器。

然后,需要使用以下配置創建入口:

Admin-API入口控制器

apiVersion: networking.k8s.io/v1

kind: Ingress

metadata:

namespace: default

name: admin-api-ingress

annotations:

alb.ingress.kubernetes.io/load-balancer-name: admin-api-alb

alb.ingress.kubernetes.io/ip-address-type: ipv4

alb.ingress.kubernetes.io/tags: Environment=production,Kind=application

alb.ingress.kubernetes.io/scheme: internet-facing

alb.ingress.kubernetes.io/certificate-arn: arn:aws:acm:us-east-2:xxxxxxxx:certificate/xxxxxxxxxx

alb.ingress.kubernetes.io/listen-ports: '[{"HTTP": 80}, {"HTTPS":443}]'

alb.ingress.kubernetes.io/healthcheck-protocol: HTTPS

alb.ingress.kubernetes.io/healthcheck-path: /healthcheck

alb.ingress.kubernetes.io/healthcheck-interval-seconds: '15'

alb.ingress.kubernetes.io/ssl-redirect: '443'

alb.ingress.kubernetes.io/group.name: admin-api

spec:

ingressClassName: alb

rules:

- host: example.com

http:

paths:

- path: /*

pathType: ImplementationSpecific

backend:

service:

name: admin-api

port:

                 number: 80

應用這一配置后,將創建一個新的alb負載均衡器,需要使用在“host”參數中提供的名稱創建一個域,并將流量從該主機路由到負載均衡器。

Admin-API自動擴展配置

apiVersion: autoscaling/v2beta1

kind: HorizontalPodAutoscaler

metadata:

name: admin-api-hpa

spec:

scaleTargetRef:

apiVersion: apps/v1

kind: Deployment

name: admin-api

minReplicas: 1

maxReplicas: 2

metrics:

- type: Resource

resource:

name: cpu

       targetAverageUtilization: 90

Helm呢?

當想要降低K8s基礎設施的復雜性時,Helm變得非常有用。如果沒有這個工具——需要編寫很多yml文件才能在集群上運行它。

此外,應該記住應用程序、標簽、名稱等之間的關系。但是,可以使用Helm使一切變得更簡單。它的工作方式類似于包管理器,允許創建應用程序的模板,然后使用簡單的命令準備和運行它。

使用Helm來制作模板:

Admin-API 部署(Helm圖表)

apiVersion: v1

kind: Service

metadata:

name: {{ .Values.global.appName }}

spec:

selector:

app: {{ .Values.global.appName }}

ports:

- name: {{ .Values.global.appName }}-port

port: {{ .Values.externalPort }}

targetPort: {{ .Values.internalPort }}

protocol: TCP

 type: NodePort

Admin-API 服務(Helm圖表)

apiVersion: networking.k8s.io/v1

kind: Ingress

metadata:

namespace: default

name: ingress

annotations:

alb.ingress.kubernetes.io/load-balancer-name: {{ .Values.ingress.loadBalancerName }}

alb.ingress.kubernetes.io/ip-address-type: ipv4

alb.ingress.kubernetes.io/tags: {{ .Values.ingress.tags }}

alb.ingress.kubernetes.io/scheme: internet-facing

alb.ingress.kubernetes.io/certificate-arn: {{ .Values.ingress.certificateArn }}

alb.ingress.kubernetes.io/listen-ports: '[{"HTTP": 80}, {"HTTPS":443}]'

alb.ingress.kubernetes.io/healthcheck-protocol: HTTPS

alb.ingress.kubernetes.io/healthcheck-path: {{ .Values.ingress.healthcheckPath }}

alb.ingress.kubernetes.io/healthcheck-interval-seconds: {{ .Values.ingress.healthcheckIntervalSeconds }}

alb.ingress.kubernetes.io/ssl-redirect: '443'

alb.ingress.kubernetes.io/group.name: {{ .Values.ingress.loadBalancerGroup }}

spec:

ingressClassName: alb

rules:

- host: {{ .Values.adminApi.domain }}

http:

paths:

- path: {{ .Values.adminApi.path }}

pathType: ImplementationSpecific

backend:

service:

name: {{ .Values.adminApi.appName }}

port:

                 number: {{ .Values.adminApi.externalPort }}

Admin-API自動擴展配置(Helm圖表)

{{- if .Values.autoscaling.enabled }}

apiVersion: autoscaling/v2beta1

kind: HorizontalPodAutoscaler

metadata:

name: {{ include "ks.fullname" . }}

labels:

{{- include "ks.labels" . | nindent 4 }}

spec:

scaleTargetRef:

apiVersion: apps/v1

kind: Deployment

name: {{ include "ks.fullname" . }}

minReplicas: {{ .Values.autoscaling.minReplicas }}

maxReplicas: {{ .Values.autoscaling.maxReplicas }}

metrics:

{{- if .Values.autoscaling.targetCPUUtilizationPercentage }}

- type: Resource

resource:

name: cpu

targetAverageUtilization: {{ .Values.autoscaling.targetCPUUtilizationPercentage }}

{{- end }}

{{- if .Values.autoscaling.targetMemoryUtilizationPercentage }}

- type: Resource

resource:

name: memory

targetAverageUtilization: {{ .Values.autoscaling.targetMemoryUtilizationPercentage }}

{{- end }}

{{- end }}

模板的值位于“values.yml”、“values-dev.yml”和“values-stage.yml”文件中。使用哪一個取決于環境。檢查一下dev env的一些值的示例。

Admin-API Helm Values-Stage.yml File

env: stage

appName: admin-api

domain: admin-api.xxxx.com

path: /*

internalPort: '80'

externalPort: '80'



replicas: 1

image:

repository: xxxxxxxxx.dkr.ecr.us-east-2.amazonaws.com/admin-api

pullPolicy: Always

tag: latest



ingress:

loadBalancerName: project-microservices-alb

tags: Environment=stage,Kind=application

certificateArn: arn:aws:acm:us-east-2:xxxxxxxxx:certificate/xxxxxx

healthcheckPath: /healthcheck

healthcheckIntervalSeconds: '15'

loadBalancerGroup: project-microservices



autoscaling:

enabled: false

minReplicas: 1

maxReplicas: 100

targetCPUUtilizationPercentage: 80


env:

- name: NODE_ENV

value: stage



- name: ADMIN_PORT

   value: "80"

要在集群上應用配置,需要升級圖表并重新啟動部署。

以下檢查負責此操作的GitHub Actions步驟。

在GitHub操作中應用Helm配置

env: stage

appName: admin-api

domain: admin-api.xxxx.com

path: /*

internalPort: '80'

externalPort: '80'



replicas: 1

image:

repository: xxxxxxxxx.dkr.ecr.us-east-2.amazonaws.com/admin-api

pullPolicy: Always

tag: latest


ingress:

loadBalancerName: project-microservices-alb

tags: Environment=stage,Kind=application

certificateArn: arn:aws:acm:us-east-2:xxxxxxxxx:certificate/xxxxxx

healthcheckPath: /healthcheck

healthcheckIntervalSeconds: '15'

loadBalancerGroup: project-microservices



autoscaling:

enabled: false

minReplicas: 1

maxReplicas: 100

targetCPUUtilizationPercentage: 80


env:

- name: NODE_ENV

value: stage


- name: ADMIN_PORT

   value: "80"

結語

最終,本文研究了如何在特定案例中使用Kubernetes構建微服務。顯然跳過了其他必備步驟和組件,將代碼示例轉換為成熟的工作應用程序。但是,上述源代碼足以展示和解釋Kubernetes微服務是如何構建的。

原文標題:??Blockchain Case Using Kubernetes??,作者:Tetiana Stoyk

責任編輯:華軒 來源: 51CTO
相關推薦

2021-01-21 11:36:01

區塊鏈醫療安全

2020-07-08 15:51:25

區塊鏈數字貨幣金融

2021-07-29 16:58:22

區塊鏈比特幣數字貨幣

2018-05-15 10:26:10

區塊鏈數字貨幣比特幣

2022-01-10 10:56:37

區塊鏈技術比特幣

2021-09-23 22:40:10

區塊鏈比特幣技術

2020-05-13 09:45:08

區塊鏈公共區塊鏈私有區塊鏈

2018-04-02 16:35:57

區塊鏈數字貨幣比特幣

2019-04-03 10:50:09

Javascript區塊鏈技術

2021-04-09 20:04:34

區塊鏈Go加密

2018-03-27 09:52:30

區塊鏈數字貨幣比特幣

2022-10-26 08:42:28

2021-04-09 06:25:41

區塊鏈區塊鏈技術

2018-09-16 15:50:48

區塊鏈醫療健康數據

2018-10-10 10:42:06

2018-03-05 15:17:01

區塊鏈支付寶數字貨幣

2022-01-19 15:11:34

區塊鏈云計算安全

2017-07-19 07:27:39

區塊鏈ICO監管

2021-12-23 17:15:54

區塊鏈域名加密貨幣

2020-02-14 11:16:00

區塊鏈的醫學應用
點贊
收藏

51CTO技術棧公眾號

福利在线播放| 免费精品一区二区| 秋霞影院一区二区三区| 欧美日韩精品在线观看| 亚洲成人网上| 亚洲精品久久久久久动漫器材一区 | 亚洲av综合一区二区| 日韩综合av| 欧美日韩久久久久| 国产又爽又黄ai换脸| 国产小视频免费观看| 日韩中文字幕av电影| 欧美成人亚洲成人日韩成人| 波多野结衣一本| 日本精品视频| 欧美午夜精品一区二区三区| 日本中文字幕在线视频观看| 高清日韩av电影| 成人av片在线观看| 成人黄色片网站| 五月天婷婷导航| 国产一区亚洲| 久久久精品欧美| 国产免费看av| 久久视频在线观看| 日韩一区二区麻豆国产| 邪恶网站在线观看| 中文字幕人成乱码在线观看| 一区二区三区在线看| 日韩福利视频| 男生女生差差差的视频在线观看| 成人午夜视频福利| 成人国产精品久久久| 久久精品无码av| 黄色日韩精品| 欧美日本啪啪无遮挡网站| 色屁屁草草影院ccyy.com| 天天躁日日躁成人字幕aⅴ| 日韩欧美国产不卡| 欧美激情国内自拍| 四虎国产精品永久在线国在线| 色综合天天综合网天天看片| 国产婷婷一区二区三区| 天堂8中文在线| 亚洲欧洲精品一区二区精品久久久| 欧美重口乱码一区二区| 日韩毛片在线一区二区毛片| bt欧美亚洲午夜电影天堂| caoporen国产精品| 国产又粗又长视频| 精品一区二区三区欧美| 国产综合香蕉五月婷在线| 国产天堂第一区| 日韩高清不卡一区二区| 国产精品扒开腿做爽爽爽的视频| 国产免费av一区| 免费在线播放第一区高清av| 欧美在线一区二区三区四| 国产精品久久久久久久妇| 日韩视频一区| 欧美亚洲另类激情另类| 久久夜色精品国产噜噜亚洲av| 99pao成人国产永久免费视频| 国内精品久久久| 久草视频在线观| 亚洲国产婷婷| 欧美自拍视频在线| 国产偷人爽久久久久久老妇app| 奇米影视一区二区三区小说| 国产精品亚洲一区二区三区| 国产伦精品一区二区三区四区 | 久色成人在线| 国产精品成人免费电影| 一区二区视频免费| 国产呦精品一区二区三区网站| 91精品国产99久久久久久红楼| 成人乱码一区二区三区 | 久久精品国产免费| 91夜夜揉人人捏人人添红杏| 狠狠躁夜夜躁av无码中文幕| 91麻豆免费看| 伊人av成人| 搞黄网站在线看| 色伊人久久综合中文字幕| 在线观看免费成人av| 精品久久久久久久久久岛国gif| 精品国产123| 精品国产无码在线观看| 色爱综合网欧美| 久久久亚洲精选| 天天爱天天做天天爽| 国模娜娜一区二区三区| 国内精品国语自产拍在线观看| 天堂在线中文| 综合精品久久久| 黄色免费观看视频网站| 亚洲毛片在线免费| 亚洲精品久久久久久久久久久久| 日本精品久久久久中文| 日韩图片一区| 国产精品丝袜视频| 日本精品久久久久| 亚洲欧洲无码一区二区三区| 欧美日本视频在线观看| www欧美在线观看| 亚洲欧美国产va在线影院| avove在线播放| 美女久久一区| 国产精品夜夜夜一区二区三区尤| 在线a人片免费观看视频| 亚洲成av人片在www色猫咪| 欧美一级特黄a| 欧美激情极品| 色综合导航网站| 一级黄色录像大片| 91论坛在线播放| www国产免费| 香蕉久久一区| 在线播放国产一区中文字幕剧情欧美| 日产亚洲一区二区三区| 国产精品一级在线| 午夜精品区一区二区三| 蜜臀久久精品| 精品捆绑美女sm三区| 色哟哟一一国产精品| 天堂蜜桃一区二区三区| 国内成+人亚洲| 性欧美1819sex性高清大胸| 欧美巨大另类极品videosbest | 一色屋精品亚洲香蕉网站| 虎白女粉嫩尤物福利视频| 澳门成人av| 欧美乱妇高清无乱码| 91久久精品国产91性色69 | 亚洲三级一区| 六九午夜精品视频| 亚洲色图13p| 欧美a视频在线观看| 99久久免费精品| 岛国大片在线播放| caoporn成人免费视频在线| 另类视频在线观看| 国产强被迫伦姧在线观看无码| 国产精品久久网站| 欧美午夜aaaaaa免费视频| 国产一区毛片| 国产精品久久久精品| 国产黄色免费在线观看| 亚洲国产中文字幕久久网 | 欧美日韩国产亚洲一区| 成人写真视频福利网| 日韩毛片久久久| 欧美喷水一区二区| 午夜精品久久久久99蜜桃最新版 | 国产精品国语对白| 成年人在线观看网站| 欧美色男人天堂| 战狼4完整免费观看在线播放版| 免费精品99久久国产综合精品| 日韩精品电影网站| 国产精品久久久久久久久免费高清| 亚洲香蕉在线观看| 中文字幕人成人乱码亚洲电影| 国产精品毛片久久久久久| 91福利国产成人精品播放| 日韩久久综合| 成人免费直播live| 秋霞在线视频| 亚洲国产成人精品久久久国产成人一区| 国产一级视频在线播放| aaa亚洲精品| 日韩手机在线观看视频| 日韩av在线播放网址| 国产综合色香蕉精品| 色av手机在线| 亚洲精品一区二区在线| 波多野结衣av无码| 亚洲欧美在线aaa| 亚洲一级Av无码毛片久久精品| 亚洲一区网站| 亚洲精品国产精品久久| 日本亚洲视频| 91爱视频在线| 麻豆系列在线观看| 亚洲精品一线二线三线| 国产免费av一区| 亚洲欧洲av一区二区三区久久| 亚洲乱妇老熟女爽到高潮的片 | 性感美女一级片| 欧美三级在线视频| 男女免费视频网站| 国产日韩精品一区二区三区| 男人女人拔萝卜视频| 亚洲欧美久久| 免费成人进口网站| 国产不卡av一区二区| 91系列在线播放| 久九九久频精品短视频| 成人444kkkk在线观看| 香蕉视频国产在线| 91精品国产91热久久久做人人| 一级免费在线观看| 亚洲欧洲国产日韩| 国产手机在线观看| 岛国一区二区三区| 久热精品在线播放| 亚洲影音一区| 成人短视频在线观看免费| 久久综合影院| 成人在线资源网址| 日韩午夜视频在线| 日本人成精品视频在线| 国产偷倩在线播放| 久久久国产精品一区| 国产玉足榨精视频在线观看| 亚洲国产99精品国自产| 国产超碰人人模人人爽人人添| 日本精品一级二级| 日韩欧美视频在线免费观看| ...av二区三区久久精品| 日本二区在线观看| 97精品视频在线观看自产线路二| 精品人妻一区二区三| 美国三级日本三级久久99| 黄色片视频在线免费观看| 欧美在线高清| 免费在线精品视频| av在线不卡顿| 日本黑人久久| 蜜桃一区二区| 乱一区二区三区在线播放| 高潮按摩久久久久久av免费| 91精品网站| 国产精品国产亚洲精品| 国产狼人综合免费视频| 国产福利亚洲| 国产精品久久久久久久久久| 不卡一二三区| 青草青草久热精品视频在线观看| av资源网在线播放| 国内外成人免费激情在线视频 | 国产精品 欧美在线| 一区二区三区短视频| 91干在线观看| 在线观看v片| 欧美一区二区三区精品电影| 黄色漫画在线免费看| 57pao成人永久免费视频| 三妻四妾完整版在线观看电视剧 | 国产在线观看福利| 国产精品婷婷| 大肉大捧一进一出好爽视频| 亚洲欧美日本视频在线观看| 岳毛多又紧做起爽| 久久久人人人| 在线免费观看视频黄| 美女视频黄a大片欧美| 九九热视频免费| 国产精品88av| 在线免费观看a级片| 久久久久久日产精品| 超碰97av在线| 亚洲精品国产a久久久久久| 久久久久久久久久综合| 亚洲成人av一区| 中文字幕亚洲乱码熟女1区2区| 在线看日本不卡| 亚洲一线在线观看| 日韩欧美国产综合一区| 日韩专区第一页| 亚洲区一区二区| 久草中文在线观看| 欧美激情久久久久久| 涩涩网在线视频| 国产精自产拍久久久久久| 欧州一区二区三区| 精品久久sese| 色天天综合网| 国产曰肥老太婆无遮挡| 久久久久久夜| 亚洲精品第三页| 成人av网站免费观看| 日韩精品电影一区二区三区| 亚洲自拍偷拍av| 69视频免费看| 欧美大胆一级视频| 牛牛澡牛牛爽一区二区| 久久躁狠狠躁夜夜爽| 黄色激情在线播放| 91精品视频专区| 日韩有码中文字幕在线| 91社在线播放| 日韩中文字幕麻豆| 在线观看你懂的视频| 国产午夜精品一区二区| 草视频在线观看| 91久久精品日日躁夜夜躁欧美| 国产www免费观看| 国产午夜一区二区| 美足av综合网| 国产精品视频999| 日韩欧美影院| 无码熟妇人妻av在线电影| 青青草97国产精品免费观看| a级片在线观看视频| 国产精品国产a| 国产超碰人人爽人人做人人爱| 欧美一级理论性理论a| 国模吧精品人体gogo| 欧美大片在线看免费观看| 欧美videos粗暴| 欧美日韩免费高清| 激情婷婷欧美| 日本高清免费观看| 国产精品入口麻豆九色| 日本一区二区三区精品| 日韩欧美一二三四区| 思思99re6国产在线播放| 欧美孕妇与黑人孕交| 99精品中文字幕在线不卡| 中文字幕一区二区三区四区五区六区| 亚洲在线成人| 国产精品无码一区二区三| 一区二区三区在线影院| 国产精品探花视频| 在线电影欧美日韩一区二区私密| 三级在线看中文字幕完整版| 国产伦精品一区二区三区| 欧美成人一区二免费视频软件| 日韩高清第一页| 国产欧美日韩亚州综合| 99re这里只有精品在线| 亚洲精品天天看| 天堂av在线网| 欧美精品尤物在线| 亚洲一区二区毛片| 给我免费观看片在线电影的| 亚洲电影激情视频网站| 国内爆初菊对白视频| 欧美国产第二页| 一区二区三区视频免费视频观看网站 | 中文字幕日韩综合| 欧美国产精品一区二区| 久久久久久亚洲av无码专区| 亚洲乱亚洲乱妇无码| 日本久久免费| 日韩高清av电影| 美女久久久精品| 亚洲色图27p| 正在播放亚洲一区| 九七久久人人| 99一区二区三区| 亚洲精品黄色| 成人影视免费观看| 色噜噜狠狠色综合欧洲selulu| www.av在线播放| 成人在线播放av| 欧美日韩亚洲三区| 亚洲av成人无码一二三在线观看| 婷婷久久综合九色国产成人| 噜噜噜在线观看播放视频| 国产精品久久久亚洲| 911精品美国片911久久久| 成人一区二区三区仙踪林| 亚洲午夜私人影院| 性猛交xxxx| 国产精品视频地址| 中文一区一区三区免费在线观看| aaa黄色大片| 色综合久久综合| 日本在线观看网站| 91免费看网站| 久久精品免费| 欧美一区免费观看| 精品对白一区国产伦| 综合另类专区| 伊人久久av导航| 成人不卡免费av| 中国女人真人一级毛片| 久久国产精品久久久久久| 欧美电影免费网站| 五月婷婷丁香色| 亚洲成人黄色影院| www.成人.com| 国产无套精品一区二区| 麻豆精品视频在线观看视频| 久久久精品人妻一区二区三区四| 亚洲精品日韩在线| 91成人在线网站| www.com毛片| 一区二区三区精品在线观看| 黄色av网站在线| 99视频国产精品免费观看| 日韩经典中文字幕一区| 激情五月少妇a| 影音先锋日韩有码| 黄色美女久久久| 女人高潮一级片| 日韩欧美亚洲成人| 日本三级在线观看网站|