日韩av黄I国产麻豆传媒I国产91av视频在线观看I日韩一区二区三区在线看I美女国产在线I麻豆视频国产在线观看I成人黄色短片

歡迎訪問 生活随笔!

生活随笔

當(dāng)前位置: 首頁 > 编程资源 > 编程问答 >内容正文

编程问答

KCL:声明式的云原生配置策略语言

發(fā)布時間:2024/4/11 编程问答 52 豆豆
生活随笔 收集整理的這篇文章主要介紹了 KCL:声明式的云原生配置策略语言 小編覺得挺不錯的,現(xiàn)在分享給大家,幫大家做個參考.

楔子: 以螞蟻集團(tuán)典型的建站場景為例,在接入 Kusion 后,用戶側(cè)配置代碼減少到 5.5%,用戶面對的 4 個平臺通過接入統(tǒng)一代碼庫而消減,在無其他異常的情況下交付時間從 2 天下降到 2 小時……

注:本文是柴樹杉在 2021 GIAC 大會上分享的內(nèi)容。

00

你好 GIAC

大家好,我是來自螞蟻集團(tuán)的同學(xué),很高興能在 GIAC 的編程語言新范式板塊和大家分享《KCL 配置策略語言》。KCL 語言是螞蟻內(nèi)部的 Kusion 解決方案中針對云原生基礎(chǔ)設(shè)施配置代碼化自研的 DSL 語言,目前已經(jīng)在建站場景等一些場景開始小范圍推廣試用。

我們先看一下簡單的 KCL 代碼:

schema GIACInvitation[name: str]:Name: str = nameTopic: str = "分享主題"Company?: str = NoneType: str = "分享嘉賓"Address: str = "深圳"invitation = GIACInvitation("姓名") {Topic: "KCL 配置策略語言"Company: "螞蟻集團(tuán)" }

這個例子代碼先通過 schema 定義了一個 GIACInvitation 結(jié)構(gòu)體:該結(jié)構(gòu)體有一個 str 類型的 Name 參數(shù),同時還有一組標(biāo)注了類型和默認(rèn)值的屬性。然后通過聲明式的語法構(gòu)造了 GIACInvitation 的實(shí)例 invitation。

這個例子雖然簡單,但是包含了 KCL 最重要的 schema 語言結(jié)構(gòu)。從例子可以看出 KCL 嘗試通過聲明式的語法、靜態(tài)類型檢查特性來改進(jìn)配置代碼的編寫和維護(hù)工作。這也是設(shè)計 KCL 語言的初衷,我們希望通過編程領(lǐng)域成熟的技術(shù)理論來解決云原生領(lǐng)域的配置代碼化的問題。

01

KCL 語言的誕生背景

在經(jīng)典的 Linux/UNIX 操作系統(tǒng)中,我們通過 Shell 和系統(tǒng)內(nèi)置的各種工具和內(nèi)核進(jìn)行交互,同時通過 Shell 腳本來管理更上層的 App。可以說 Shell 語言極大地簡化了內(nèi)核的編程界面,不僅僅提升了操作系統(tǒng)易用性也簡化了上層 App 的管理和運(yùn)維,也提高了生產(chǎn)效率。而 Kubernetes 作為容器管理領(lǐng)域的事實(shí)標(biāo)準(zhǔn),已經(jīng)成為云計算時代的 Linux/UNIX。類比 UNIX 系統(tǒng),Kubernetes 目前還缺少一種符合其聲明式、開放、共享設(shè)計理念的交互語言及工具。

1.1 為何要設(shè)計 KCL 語言?

K8s 已經(jīng)成為云計算的操作系統(tǒng),但是目前尚缺少功能完備的 Shell 交互界面。目前雖然有很多而且開源方案,但是還沒有像 UNIX 的 Shell 那種出現(xiàn)比較成熟的方案,特別是尚無法滿足頭部互聯(lián)網(wǎng)企業(yè)大規(guī)模工程化的要求。云原生技術(shù)與企業(yè)落地之間存在 Gap 需要填補(bǔ),這正是云原生工程化要解決的問題,也是設(shè)計 KCL 語言的出發(fā)點(diǎn)。

1.2 目前是一個好時機(jī)

云原生的思路是高度的開放化和民主化,結(jié)果就是萬物可配置,一切配置都是代碼。在配置代碼面前人人平等,每個用戶都可以通過調(diào)整配置代碼和基礎(chǔ)平臺設(shè)施進(jìn)行交互。因此對配置的編寫和維護(hù)正在成為云計算時代軟件工程師的必備的技能和需求。基于對云原生配置代碼化需求的日益旺盛,硅谷的諸多頭部公司已經(jīng)對這個方向進(jìn)行了大規(guī)模的實(shí)踐和驗(yàn)證,這些都給了我們大量可以參考的經(jīng)驗(yàn)。

因此螞蟻的 Kusion 項(xiàng)目嘗試通過 KCL 配置策略語言正是為了簡化云原生技術(shù)設(shè)施的接入方式設(shè)計,其設(shè)計目標(biāo)不僅僅是為了提升螞蟻基礎(chǔ)設(shè)施的開放程度及使用效率,同時希望能夠優(yōu)化共享、協(xié)同的開發(fā)流程,可以說其定位正是云原生時代的 Shell 語言。雖然目前還處于探索和實(shí)踐階段,我們通過此文和大家分享下 KCL 語言的設(shè)計與實(shí)現(xiàn)的一些理念,為云原生的快速到來貢獻(xiàn)一點(diǎn)綿薄之力。

1.3 KCL 誕生歷史

KCL 語言從 2019 年開始初期的調(diào)研和設(shè)計工作。到 2020 年 3 月發(fā)布 kcl-0.1,基于 Python 定制語法,采用 Go 版本的 Grumpy 和 AntLR 等工具開發(fā)。2020 年下半年改用 Python 語言并加快了開發(fā)和迭代速度,發(fā)布的 kcl-0.2.x 引入了大量語言特性、增加了 Plugin 擴(kuò)展支持、同時支持 IDEA 插件。2021 年上半年開始統(tǒng)一優(yōu)化和整合語言特性,發(fā)布的 kcl-0.3 優(yōu)化類型系統(tǒng)、集成單元測試工具、優(yōu)化執(zhí)行性能并提供了 Go 等多語言的 API 支持、同時通過 LSP 為 VSCode 提供支持。2021 年下半年開始在建站等常見落地,同時引入靜態(tài)類型檢查和優(yōu)化性能,完善語言的文檔支持。

02

KCL 語言的設(shè)計原則

基于螞蟻踐行多年的經(jīng)典運(yùn)維中臺沉淀的經(jīng)驗(yàn)和對各種問題利弊的思考,Kusion 項(xiàng)目對如何充分利用云原生技術(shù)帶來的紅利,打造一個開放、透明、聲明式、可協(xié)同的運(yùn)維體系進(jìn)行了探索和思考,提出并實(shí)踐了基于基礎(chǔ)設(shè)施代碼化的云原生協(xié)同開發(fā)的模型。而 KCL 語言正是 Kusion 項(xiàng)目為了解決云原生協(xié)同開發(fā)而設(shè)計的聲明式的配置編程語言,簡單、穩(wěn)定、高效和工程化是 KCL 語言設(shè)計的設(shè)計理念。

2.1 簡單為王

簡單不僅僅可以降低學(xué)習(xí)和溝通的成本,而且可以減少代碼出問題的風(fēng)險。不論是 UNIX 奉行的 KISS 原則還是 Go 語言推崇的 Less is more 設(shè)計理念,簡化易用的界面始終是各種成功產(chǎn)品追求的一個目標(biāo)。同樣從簡單原則出發(fā),KCL 語言在參考現(xiàn)代編程語言之上只保留了必要的元素,同時通過類型自動推導(dǎo)、引入受限的控制流和 schema 提供了基礎(chǔ)靈活的配置定義編寫能力,刪減語言特性始終是 KCL 語言設(shè)計工作的一個重要目標(biāo)。

2.1.1 聲明式語法

聲明式編程是和命令式編程并列的一種編程范式,聲明式編程只告訴你想要的結(jié)果,執(zhí)行引擎負(fù)責(zé)執(zhí)行的過程。聲明式編程使用更加簡單,可以降低命令式拼裝造成的復(fù)雜性和副作用,保持配置代碼清晰可讀,而復(fù)雜的執(zhí)行邏輯已經(jīng)由 Kubernetes 系統(tǒng)提供支持。

KCL 語言通過簡化對 schema 結(jié)構(gòu)體實(shí)例化的語法結(jié)構(gòu)對聲明式語法提供支持,通過僅提供少量的語句來減少命令過程式編程帶來的復(fù)雜性。圍繞 schema 和配置相關(guān)的語法,KCL 希望每種配置需求盡可能通過固定的寫法完成,使得配置代碼盡可能的統(tǒng)一化。

比如作為 KCL 聲明式語法的核心結(jié)構(gòu) schema 可以采用聲明式方式實(shí)例化:

schema Name:firstName: strlastName: strschema Person:name: Name = {firstName: "John"lastName: "default"}JohnDoe = Person {name.lastName: "Doe" }

首先通過 schema 定義了一個 Name 結(jié)構(gòu),結(jié)構(gòu)包含 2 個字符串類型的必填屬性。

然后在 Person 中復(fù)用 Name 類型聲明一個 Name 屬性,并且給 Name 屬性設(shè)置了默認(rèn)值以簡化用戶使用。

最終在定義 JohnDoe 配置定義的時候,只需填寫 Name.lastName 一個屬性參數(shù)即可,其他部分屬性均采用默認(rèn)的參數(shù)。

對于一些標(biāo)準(zhǔn)的業(yè)務(wù)應(yīng)用,通過將可復(fù)用的模型封裝為 KCL schema,這樣可以為前端用戶提供最簡單的配置界面。比如基于螞蟻內(nèi)部 Konfig 大庫中 sofa.SofaAppConfiguration 只需添加少量的配置參數(shù)就可以定制一個 App。

appConfiguration = sofa.SofaAppConfiguration {resource: resource.Resource {cpu: "4"memory: "8Gi"disk: "50Gi"}overQuota: True }

通過聲明式語法描述必要的參數(shù)(其他的參數(shù)全部采用默認(rèn)配置),可以極大簡化普通用戶的配置代碼。

2.1.2 順序無關(guān)語法

有別于命令式編程,KCL 推崇的是更適合于配置定義的聲明式語法。以斐波那契數(shù)列為例,可以把一組聲明式的定義看作一個方程組,方程式的編寫順序本質(zhì)上不影響方程組的求解,而計算屬性依賴并“求解”的過程由 KCL 解釋器完成,這樣可以避免大量命令式拼裝過程及順序判斷代碼。

schema Fib:n1: int = n - 1n2: int = n1 - 1n: intvalue: intif n <= 1:value = 1elif n == 2:value = 1else:value = (Fib {n: n1}).value + (Fib {n: n2}).valuefib8 = (Fib {n: 8}).value # 21

代碼中 Fib 定義的成員 n、n1 和 n2 有一定的依賴關(guān)系,但是和它們書寫的順序并無關(guān)系。KCL 語言引擎會根據(jù)聲明式代碼中的依賴關(guān)系自動計算出正確的執(zhí)行順序,同時對類似循環(huán)引用等異常狀態(tài)告警。

2.1.3 同名配置合并

當(dāng)整個業(yè)務(wù)和開發(fā)維護(hù)團(tuán)隊(duì)都變得復(fù)雜時,配置代碼的編寫和維護(hù)也將變得復(fù)雜化:同一份配置參數(shù)可能散落在多個團(tuán)隊(duì)的多個模塊中,同時一個完整的應(yīng)用配置則需要合并這些散落在不同地方的相同和不同配置參數(shù)才可以生效,而相同的配置參數(shù)可能因?yàn)椴煌瑘F(tuán)隊(duì)的修改而產(chǎn)生沖突。通過人工方式同步這些同名配置和合并不同的配置都是一個極大的挑戰(zhàn)。

比如 Konfig 大庫中應(yīng)用配置模型分為 base 和各環(huán)境 stack 配置,要求程序運(yùn)行時按照某一 merge 策略合并為一份應(yīng)用配置,相當(dāng)于要求大庫前端配置能夠自動合并,即能夠分開多次定義并且合并,然后實(shí)例化生成相應(yīng)的唯一前端配置。

借助 KCL 語言的能力和 Konfig 的最佳實(shí)踐,可通過將基線配置和環(huán)境配置自動合并簡化配置的編寫。比如對于標(biāo)準(zhǔn) SOFA 應(yīng)用 opsfree,其基線配置和環(huán)境配置分別維護(hù),最終交由平臺工具進(jìn)行配置合并和檢查。KCL 語言通過自動化合并同名配置實(shí)現(xiàn)簡化團(tuán)隊(duì)協(xié)同開發(fā)的設(shè)計目標(biāo)。

比如 base 配置收集的通用的配置:

appConfiguration = sofa.SofaAppConfiguration {mainContainer: container.Main {readinessProbe: probe_tpl.defaultSofaReadinessProbe}resource: res_tpl.mediumreleaseStrategy: "percent" }

然后再預(yù)發(fā)環(huán)境在 base 配置的基礎(chǔ)之上針對某些參數(shù)進(jìn)行微調(diào):

appConfiguration = sofa.SofaAppConfiguration {resource: resource.Resource {cpu: "4"memory: "8Gi"disk: "50Gi"}overQuota: True }

合并的 pre 配置實(shí)際是一份 SofaAppConfiguration 配置(相當(dāng)于如下等效代碼,環(huán)境配置的優(yōu)先級默認(rèn)高于基線配置)

appConfiguration = sofa.SofaAppConfiguration {mainContainer: container.Main {readinessProbe: probe_tpl.defaultSofaReadinessProbe}resource: resource.Resource {cpu: "4"memory: "8Gi"disk: "50Gi"}overQuota: TruereleaseStrategy: "percent" }

目前的同名配置雖然只針對應(yīng)用的主包配置有效,但已經(jīng)帶來了可觀察的收益。

2.2?穩(wěn)定壓倒一切

越是基礎(chǔ)的組件對穩(wěn)定性要求越高,復(fù)用次數(shù)越多的穩(wěn)定性帶來的收益也更好。因?yàn)榉€(wěn)定性是基礎(chǔ)設(shè)施領(lǐng)域一個必備的要求,不僅僅要求邏輯正確,而且需要降低錯誤出現(xiàn)的幾率。

2.2.1 靜態(tài)類型和強(qiáng)不可變性

很多配置語言采用運(yùn)行時動態(tài)檢查類型。動態(tài)類型最大的缺點(diǎn)只能檢查正在被執(zhí)行屬性的類型,這非常不利于開發(fā)階段提前發(fā)現(xiàn)類型的錯誤。靜態(tài)類型不僅僅可以提前分析大部分的類型錯誤,還可以降低后端運(yùn)行時的動態(tài)類型檢查的性能損耗。

除了靜態(tài)類型,KCL 還通過 final 關(guān)鍵字禁止某些重要屬性被修改。靜態(tài)類型再結(jié)合屬性的強(qiáng)不可變性,可以為配置代碼提供更強(qiáng)的穩(wěn)定性保障。

schema CafeDeployment:final apiVersion: str = "apps.cafe.cloud.alipay.com/v1alpha1"final kind: str = 123 # 類型錯誤schema ContainerPort:containerPort: int = 8080protocol: "TCP" | "UDP" | "SCTP" = "TCP"ext? : str = None

比如對于 CafeDeployment 中的 apiVersion 信息是一種常量類型的配置參數(shù),final 為這類配置提供保障:

代碼中 apiVersion 和 kind 屬性都被 final 保護(hù)禁止被修改。但是 kind 因?yàn)閷傩灶愋统跏贾挡煌[含一個錯誤,通過靜態(tài)類型檢查很容易在開發(fā)階段發(fā)現(xiàn)錯誤并改正。

2.2.2運(yùn)行時類型和邏輯 check 驗(yàn)證

KCL 的 schema 不僅僅是帶類型的結(jié)構(gòu)體,也可以用于在運(yùn)行時校驗(yàn)存量的無類型的 JSON 和 YAML 數(shù)據(jù)。此外 schema 的 check 塊可以編寫語義檢查的代碼,在運(yùn)行時實(shí)例化 schema 時會自動進(jìn)行校驗(yàn)。同時,基于 schema 的繼承和 mixin 可以產(chǎn)生跟多關(guān)聯(lián)的 check 規(guī)則。

比如以下的例子展示 check 的常見用法:

schema sample:foo: strbar: intfooList: [str]check:bar > 0 # minimum, also support the exclusive casebar < 100, "message" # maximum, also support the exclusive caselen(fooList) > 0 # min length, also support exclusive caselen(fooList) < 100 # max length, also support exclusive caseregex.match(foo, "^The.*Foo$") # regex matchisunique(fooList) # uniquebar?in?range(100)?#?rangebar in [2, 4, 6, 8] # enummultiplyof(bar, 2) # multipleOf

check 中每個語句都是一個可以產(chǎn)生 bool 結(jié)果的表達(dá)式和可選的錯誤信息組成(每個普通的 bool 表達(dá)式其實(shí)是 assert 語句的簡化而來)。通過內(nèi)置的語法和函數(shù)可以實(shí)現(xiàn)在運(yùn)行時對屬性值的邏輯驗(yàn)證。

2.2.3 內(nèi)置測試支持

單元測試是提升代碼質(zhì)量的有效手段。KCL 基于已有的 schema 語法結(jié)構(gòu),配合一個內(nèi)置 kcl-test 命令提供靈活的單元測試框架(結(jié)合 testing 包可指定面值類型的命令行參數(shù))。

內(nèi)置測試工具

schema TestPerson:a = Person{}assert a.name == 'kcl'schema TestPerson_age:a = Person{}assert a.age == 1

kcl-test 命令不僅僅執(zhí)行單元測試,還會統(tǒng)計每個測試執(zhí)行的時間,而且可以通過正則表達(dá)式參數(shù)選擇執(zhí)行指定的測試。此外通過 kcl-test ./... 可以遞歸執(zhí)行子目錄的單元測試,同時支持集成測試和 Plugin 測試。

2.3?高效是永恒的追求

KCL 代碼不僅僅通過聲明式的風(fēng)格簡化編程,同時通過模塊支持、mixin 特性、內(nèi)置的 lint 和 fmt 工具、以及 IDE 插件提供高效的開發(fā)體驗(yàn)。

2.3.1 schema 中好用的語法

schema 是 KCL 編寫配置程序的核心語法結(jié)構(gòu),其中幾乎每個特性均是針對具體的業(yè)務(wù)場景提效而設(shè)計。比如在定義和實(shí)例化深層次嵌套的配置參數(shù)時,均可以直接指定屬性的路徑定義和初始化。

schema A:a: b: c: inta: b: d: str = 'abc'A {a.b.c: 5 }

同時為了安全,對于每個屬性默認(rèn)都是非空的字段,在實(shí)例化時會自動進(jìn)行檢查。

schema 不僅僅是一個獨(dú)立的帶類型注解的配置對象,我們也可以通過繼承的方式來擴(kuò)展已有的 schema:

schema Person:firstName: strlastName: str# schema Scholar inherits schema Person schema Scholar(Person):fullName: str = firstName + '_' + lastNamesubject: strJohnDoe = Scholar {firstName: "John",lastName: "Doe",subject: "CS" }

代碼中 Scholar 從 Person 繼承,然后又?jǐn)U展了一些屬性。作為子類的 Scholar 可以直接訪問父類中定義的 firstName 等屬性信息。

繼承是 OOP 編程中基礎(chǔ)的代碼復(fù)用手段,但同時也有多繼承導(dǎo)致的菱形繼承的技術(shù)問題。KCL 語言刻意簡化了繼承的語法,只保留了單繼承的語法。同時 schema 可以通過 mixin 特性混入復(fù)用相同的代碼片段,對于不同的能力配套,我們通過 mixin 機(jī)制編寫,并通過 mixin 聲明的方式“混入”到不同的結(jié)構(gòu)體中。

比如通過在 Person 中混入 FullnameMixin 可以給 schema 增加新的屬性或邏輯(包括 check 代碼塊):

schema FullnameProtocol:firstName : str = "default"lastName : strmixin FullnameMixin for FullnameProtocol:fullName : str = "${firstName} ${lastName}"schema relax Person:mixin [FullnameMixin]firstName : str = "default"lastName : str

通過 KCL 的語言能力,平臺側(cè)同學(xué)可以通過單繼承的方式擴(kuò)展結(jié)構(gòu)體,通過 mixin 機(jī)制定義結(jié)構(gòu)體內(nèi)屬性的依賴關(guān)系及值內(nèi)容,通過結(jié)構(gòu)體內(nèi)順序無關(guān)的編寫方式完成聲明式的結(jié)構(gòu)體定義,此外還支持如邏輯判斷、默認(rèn)值等常用功能。

2.3.2 doc、fmt、lint 和外圍的 LSP 工具

在編程領(lǐng)域代碼雖然是最核心的部分,但是代碼對應(yīng)的文檔和配套的工具也是和編程效率高度相關(guān)的部分。KCL 配置策略語言設(shè)計哲學(xué)并不局限于語言本身,還包括文檔、代碼格式化工具、代碼風(fēng)格評估工具和 IDE 的支持等。

KCL 通過 kcl-doc 支持從配置代碼直接提取產(chǎn)生文檔,自動化的文檔不僅僅減少了手工維護(hù)的成本,也降低的學(xué)習(xí)和溝通成本。kcl-fmt 則很方便將當(dāng)前目錄下的全部代碼(包含嵌套的子目錄)格式化為唯一的一種風(fēng)格,而相同格式的代碼同樣降低的溝通和代碼評審的成本。

kcl-lint 工具則是通過將一些內(nèi)置的風(fēng)險監(jiān)測策略對 KCL 代碼平行評估,方便用戶根據(jù)評估結(jié)果優(yōu)化代碼的風(fēng)格。

2.4?工程化的解決方案

任何語言想要在工程中實(shí)際應(yīng)用,不僅僅需要很好的設(shè)計,還需要為升級、擴(kuò)展和集成等常規(guī)的場景提供完整的解決方案。

2.4.1 多維度接口

KCL 語言設(shè)計通過在不同的抽象層次為普通用戶(KCL 命令行)、KCL 語言定制者(Go-API、Python-API)、KCL 庫擴(kuò)展者(Plugin)和 IDE 開發(fā)者(LSP 服務(wù))均提供了幾乎等價的功能界面,從而提供了最大的靈活度。

2.4.2 千人千面的配置 DB

KCL 是面向配置的編程語言,而配置的核心是結(jié)構(gòu)化的數(shù)據(jù)。因此,我們可以將完整 KCL 代碼看做是一種配置數(shù)據(jù)庫。通過 KCL 的配置參數(shù)的查詢和更新(override/-O 命令)可以和對應(yīng)的配置屬性路徑,可以實(shí)現(xiàn)對屬性參數(shù)的查詢、臨時修改和存盤修改。

將代碼化的配置作為 DB 的唯一源,不僅僅可以集成 DB 領(lǐng)域成熟的查詢和分析手段,而且可以通過配置代碼視角調(diào)整配置代碼的邏輯結(jié)構(gòu)。特別是在自動化運(yùn)維實(shí)踐中,通過程序自動生成的配置代碼修改的 PullRequest 可以方便引入開發(fā)人員進(jìn)行代碼評審,很好地達(dá)到人機(jī)通過不同界面配合運(yùn)維。

2.4.3 版本平滑升級

隨著業(yè)務(wù)和代碼的演化,相關(guān)模塊的 API 也會慢慢腐化。KCL 語言設(shè)計通過嚴(yán)格的依賴版本管理,然后結(jié)合語言內(nèi)置的語法和檢查工具保障 API 平滑的升級和過渡,再配合代碼集成測試和評審流程提升代碼安全。KCL 語言通過 @deprecated 特性在代碼出現(xiàn)腐化早期給出提示,同時為用戶的過渡升級留出一定的時間窗口,甚至等到 API 徹底腐爛前通過報錯的方式強(qiáng)制要求同步升級相關(guān)的代碼。

比如在某次升級中,Name 屬性被 fullName 替代了,則可以通過 @deprecated 特性標(biāo)志:

schema Person:@deprecated(version="1.1.0", reason="use fullName instead", strict=True)name: str... # Omitted contentsperson = Person {# report an error on configing a deprecated attributename: "name" }

這樣在實(shí)例化 Person 時,Name 屬性的初始化語句將會及時收到報錯信息。

2.4.4 內(nèi)置模塊、KCL 模塊、插件模塊

KCL 是面向配置的編程語言,通過內(nèi)置模塊、KCL 模塊和插件模塊提供工程化的擴(kuò)展能力。

用戶代碼中不用導(dǎo)入直接使用 builtin 的函數(shù)(比如用 len 計算列表的長度、通過 typeof 獲取值的類型等),而對于字符串等基礎(chǔ)類型也提供了一些內(nèi)置方法(比如轉(zhuǎn)化字符串的大小寫等方法)。

對于相對復(fù)雜的通用工作則通過標(biāo)志庫提供,比如通過 import 導(dǎo)入 math 庫就可以使用相關(guān)的數(shù)學(xué)函數(shù),可以通過導(dǎo)入 regex 庫使用正則表達(dá)式庫。而針對 KCL 代碼也可以組織為模塊,比如 Konfig 大庫中將基礎(chǔ)設(shè)施和各種標(biāo)準(zhǔn)的應(yīng)用抽象為模塊供上層用戶使用。

此外還可以通過 Plugin 機(jī)制,采用 Python 為 KCL 開發(fā)插件,比如目前有 meta 插件可以通過網(wǎng)絡(luò)查詢中心配置信息,app-context 插件則可以用于獲取當(dāng)前應(yīng)用的上下文信息從而簡化代碼的編寫。

03

KCL語言的實(shí)現(xiàn)原理

3.1 整體架構(gòu)

KCL 雖然作為一個專用于云原生配置和策略定義的語言,但是保持大多數(shù)過程式和函數(shù)式編程語言的相似實(shí)現(xiàn)架構(gòu),其內(nèi)部整體架構(gòu)組成也是經(jīng)典的編譯器 “三段式” 架構(gòu)。下面是 KCL 實(shí)現(xiàn)的架構(gòu)圖:

主要有以下幾個關(guān)鍵模塊:

  • 解析器 Parser:解析器分析 KCL 源代碼產(chǎn)生 AST(抽象語法樹)。

  • 編譯器 Compiler:對 AST 進(jìn)行多次遍歷,對 AST 進(jìn)行語義檢查(比如進(jìn)行類型檢查、無效代碼檢查)并對 AST 進(jìn)行優(yōu)化(合并常量表達(dá)式等),最終產(chǎn)生虛擬機(jī)可以執(zhí)行的字節(jié)碼。

  • 虛擬機(jī) Virtual Machine (VM):執(zhí)行 Compiler 產(chǎn)生的字節(jié)碼,計算產(chǎn)生相應(yīng)的配置結(jié)果,并將配置結(jié)果序列化為 YAML/JSON 進(jìn)行輸出。

整體架構(gòu)分為三段式的好處是可以把針對 KCL 源語言的前端和針對目標(biāo)機(jī)器的后端組合起來,這種創(chuàng)建編譯器組合的方法可以大大減少工作量。

比如目前的 KCL 字節(jié)碼定義和后端虛擬機(jī)采用自研實(shí)現(xiàn),KCL 虛擬機(jī)主要用于計算產(chǎn)生配置結(jié)果并序列化為 YAML/JSON 進(jìn)行輸出。

如果遇到在其他特殊使用 KCL 的場景比如在瀏覽器中執(zhí)行 KCL,則可以重寫一個適配 WASM 的后端,就可輕易將 KCL 移植到瀏覽器中使用,但是 KCL 本身的語法和語義不需要發(fā)生任何變化,編譯器前端代碼也無需任何改動。

3.2 Go 和 Python 通信原理

為了更好地釋放 KCL 配置策略語言的能力以及遍于上層自動化產(chǎn)品集成(比如著名的編譯器后端 LLVM 就因其 API 設(shè)計良好,開發(fā)人員可以利用其 API 快速地構(gòu)建自己的編程語言),KCLVM 目前提供了 Python 和 Go 兩種語言的 API,使得用戶可以使用相應(yīng)的 API 快速地構(gòu)建語言外圍工具,語言自動化查詢修改工具等提升語言的自動化能力,并且進(jìn)一步可以基于此構(gòu)建服務(wù)化能力,幫助更多的用戶構(gòu)建自己云原生配置代碼化應(yīng)用或者快速接入基礎(chǔ)設(shè)施。

KCLVM 主體采用 Python 代碼實(shí)現(xiàn),而很多的云原生應(yīng)用以 Go 程序構(gòu)建,因此為了更好地滿足云原生應(yīng)用用戶訴求。KCLVM 首先基于 CGo 和 CPython 構(gòu)建了 Go 程序和 Python 程序通信媒介,基于此設(shè)計了 Python 函數(shù)到 Go 函數(shù)的 RPC 調(diào)用,調(diào)用參數(shù)以 JSON 形式存儲,使得 KCLVM-Python 編譯器的能力平滑地過度到 Go 代碼中,通過 Go 一行 import 調(diào)用即可操作 KCL 代碼。

補(bǔ)充:在服務(wù)化實(shí)踐的過程中,基于 CGO 調(diào)用 Python 的方案也遇到了一些問題:首先是 Go + CGO + Python 導(dǎo)致交叉編譯困難,對 ACI 的自動化測試和打包產(chǎn)生了挑戰(zhàn);其次是 CGO 之后的 Python 不支持多語言多線程并發(fā),無法利用多核的性能;最后即使通過 CGO 將 Python 虛擬機(jī)編譯到了 Go 程序中,依然還是需要安裝 Python 的標(biāo)準(zhǔn)庫和第三方庫。

3.3 協(xié)同配置原理

當(dāng)有了一個簡單易用并能夠保證穩(wěn)定性的配置語言后,另一個面臨的問題是如何使用配置代碼化的方式提升協(xié)同能力。基于此,KCL 配置可分為用戶側(cè)和平臺側(cè)配置兩類,最終的配置內(nèi)容由各自用戶側(cè)和平臺側(cè)的配置內(nèi)容共同決定,因此存在兩個方面的協(xié)同問題:

  • 平臺側(cè)配置與用戶側(cè)配置之間的協(xié)同;

  • 用戶側(cè)配置之間的協(xié)同。

針對上述協(xié)同問題,KCL 在技術(shù)側(cè)提出了順序無關(guān)語法,同名配置合并等抽象模型來滿足不同的協(xié)同配置場景。

以上圖為例,首先 KCL 代碼在編譯過程中形成兩張圖(用戶不同配置直接的引用和從屬關(guān)系一般形式一張有向無環(huán)圖),分別對應(yīng)結(jié)構(gòu)體內(nèi)部聲明代碼及結(jié)構(gòu)體使用聲明代碼。編譯過程可以簡單分為三步:

  • 首先定義平臺側(cè)的結(jié)構(gòu)體并形成結(jié)構(gòu)體內(nèi)部聲明代碼圖;

  • 其次聲明并合并不同用戶側(cè)配置代碼圖;

  • 最后將用戶側(cè)配置代碼圖計算的結(jié)果代入平臺側(cè)結(jié)構(gòu)體內(nèi)部聲明代碼圖求解,最終得到完整配置圖定義。

通過這樣簡單的計算過程,可以在編譯時完成大部分代換運(yùn)算,最終運(yùn)行時僅進(jìn)行少量計算即可得到最終的解。同時在編譯合并圖過程中仍然能夠執(zhí)行類型檢查和值的檢查,區(qū)別是類型檢查是做泛化、取偏序上確界(檢查某個變量的值是否滿足既定類型或者既定類型的子類型),值檢查是做特化、取偏序下確界(比如將兩個字典合并為一個字典)

04

對未來的展望

KCL 語言目前依然處于一個高速發(fā)展的階段,目前已經(jīng)有一些應(yīng)用開始試用。我們希望通過 KCL 語言為 Kusion 技術(shù)棧提供更強(qiáng)的能力,在運(yùn)維、可信、云原生架構(gòu)演進(jìn)方面起到積極的作用。同時對于一些特殊的非標(biāo)應(yīng)用提供靈活的擴(kuò)展和集成方案,比如我們正在考慮如何讓后端支持 WebAssembly 平臺,從而支持更多的集成方案。

在合適的時間我們希望能夠開放 KCL 的全部代碼,為云原生代碼化的快速落地貢獻(xiàn)綿薄之力。

05

本周推薦文章

螞蟻集團(tuán)萬級規(guī)模 K8s?集群 etcd 高可用建設(shè)之路

2021-07-29

我們做出了一個分布式注冊中心

2021-07-27

開啟云原生 MOSN 新篇章 — 融合 Envoy 和 GoLang 生態(tài)

2021-07-06

MOSN 子項(xiàng)目 Layotto:開啟服務(wù)網(wǎng)格+應(yīng)用運(yùn)行時新篇章

2021-06-21

總結(jié)

以上是生活随笔為你收集整理的KCL:声明式的云原生配置策略语言的全部內(nèi)容,希望文章能夠幫你解決所遇到的問題。

如果覺得生活随笔網(wǎng)站內(nèi)容還不錯,歡迎將生活随笔推薦給好友。

免费又黄又爽的视频 | 日韩在线一级 | 最新国产在线观看 | 日本福利视频在线 | 亚洲精品国产欧美在线观看 | 国产69精品久久99的直播节目 | 午夜在线看片 | 爱爱av网| 亚洲亚洲精品在线观看 | 日韩av不卡在线播放 | 欧美日韩国产欧美 | 国产免费高清视频 | 91免费高清在线观看 | 国产视频综合在线 | 日日夜夜操av | 国产免费xvideos视频入口 | 色五月激情五月 | 国产九九九精品视频 | 亚洲精品视 | 96精品在线 | 亚洲综合视频在线观看 | 丁香五月亚洲综合在线 | 九九视频在线观看视频6 | 波多野结衣电影一区 | 精品日韩在线 | 久久综合操 | 日韩午夜大片 | 日韩黄色在线 | 五月天中文字幕mv在线 | 一区二区三区高清 | 13日本xxxxxⅹxxx20 | 五月天中文字幕 | 国产999精品久久久久久绿帽 | 久久国产成人午夜av影院潦草 | 午夜在线资源 | 91视频久久久久 | 狠狠色伊人亚洲综合成人 | 久久免费av | 超碰人人超 | 色狠狠综合 | 天天干天天摸 | 国产中的精品av小宝探花 | 欧美成人高清 | 国产精品电影在线 | 久久大视频 | 欧美日韩久久 | 久久精品一二三 | 97精品国产一二三产区 | av亚洲产国偷v产偷v自拍小说 | 天天鲁天天干天天射 | 欧美另类重口 | 黄色一区二区在线观看 | 天天在线操 | a精品视频 | 99午夜| www色,com | 久久在线免费视频 | 1024手机看片国产 | 国内精品久久久久影院优 | 亚洲天堂网站视频 | 日本免费久久高清视频 | 国产高清一 | 久久久久欠精品国产毛片国产毛生 | 国内精品久久久久影院优 | 美女网站免费福利视频 | 精品在线观看一区二区三区 | 亚洲另类人人澡 | 91精品国自产拍天天拍 | 色婷婷综合久久久久中文字幕1 | 91桃色在线免费观看 | 国产一二区在线观看 | 国产高清成人av | 在线观看久久久久久 | 国产免费视频在线 | 97在线视频免费看 | 免费看三级网站 | 国产精品热视频 | 手机成人av | 99麻豆久久久国产精品免费 | 一区二区三区动漫 | 日本不卡一区二区 | 成人精品一区二区三区中文字幕 | 粉嫩高清一区二区三区 | a级片网站 | 久久久色 | 日韩中文字幕第一页 | 91精品啪 | 国产精品 亚洲精品 | 国产乱对白刺激视频不卡 | 国产精品久久久久久久久久免费 | 麻豆视频www | 亚洲国产片 | 波多野结衣一区二区 | 日日夜夜国产 | 亚洲精品欧美成人 | 国产成人一区二区在线观看 | 国产精品99久久久精品免费观看 | 国内综合精品午夜久久资源 | 欧洲精品视频一区二区 | 欧美午夜精品久久久久 | 三级av片 | 国产精品岛国久久久久久久久红粉 | 欧美日韩精品在线 | 99久久99视频只有精品 | 8x成人在线| 黄色午夜网站 | 韩国在线一区 | 国产日韩在线观看一区 | 国产专区第一页 | 婷婷 综合 色 | 欧美日韩一区二区在线观看 | 国产免费观看高清完整版 | 色网站在线看 | 国产91免费在线 | 超碰97av在线| 99久高清在线观看视频99精品热在线观看视频 | 天天操天天玩 | 国产成人免费av电影 | 成人片在线播放 | 波多野结衣视频一区 | 99热精品在线 | 日韩免费一区二区三区 | 成人黄色小说视频 | 久久久91精品国产一区二区三区 | 国产1级视频 | 亚洲视频在线免费看 | 九九九视频精品 | 狠狠狠色丁香综合久久天下网 | 久草在线欧美 | 国产一二区免费视频 | 国产成人久久精品77777 | 精品久久毛片 | 日韩网站免费观看 | 午夜久久福利视频 | 99视频精品免费视频 | 婷婷在线视频观看 | 人人插人人舔 | 欧美亚洲国产精品久久高清浪潮 | 狠色狠色综合久久 | 亚洲乱码中文字幕综合 | 亚洲另类视频 | 免费视频99 | 欧美成人性战久久 | 日韩久久一区二区 | 在线电影日韩 | 天天干天天干天天干天天干天天干天天干 | 视频成人永久免费视频 | a级一a一级在线观看 | 国产私拍在线 | 久久系列 | 人人草人人草 | 日韩在线观看第一页 | 国产中文字幕免费 | 天天色天天操天天爽 | 亚洲美女视频在线观看 | 深夜免费福利视频 | 成人av电影在线观看 | 日韩精品久久久久久久电影99爱 | 欧美激情精品久久久久久免费印度 | 日本中文字幕在线电影 | 久久黄色免费观看 | 99热99热| 欧美激情精品久久久久 | 亚洲欧美国产日韩在线观看 | 波多野结衣视频在线 | 国产在线p | 久久99精品国产麻豆婷婷 | 中文字幕在线看视频国产 | 91av在线视频播放 | 免费在线观看日韩欧美 | 免费看特级毛片 | 色九色| 国产综合福利在线 | 99久久精品免费看国产四区 | 日韩在线中文字幕视频 | 国产精品久久久久久久久久久免费看 | 久久艹欧美 | 91丨九色丨91啦蝌蚪老版 | 欧美成人精品欧美一级乱 | 超碰在线日韩 | 欧美日韩国产一区二区三区 | 免费开视频 | 六月激情| 国产高清在线精品 | 一区二区三区在线免费观看 | 欧美日韩国产成人 | 狠狠插狠狠干 | 射综合网 | 超碰99人人 | 色视频在线看 | 久久午夜色播影院免费高清 | av免费试看 | 国产91国语对白在线 | 欧美日韩国产在线一区 | 91黄色小网站 | 999久久国精品免费观看网站 | 一区二区三区四区在线 | 91在线免费播放视频 | 免费电影一区二区三区 | 欧美日韩中文另类 | 高清在线一区二区 | 五月婷网 | 亚洲综合成人专区片 | 天天爱天天操天天射 | 99精品热 | 免费福利在线播放 | av综合站 | 黄色免费观看 | 婷婷色中文字幕 | 91av免费在线观看 | 免费高清在线观看电视网站 | 国产成人在线免费观看 | 久久夜av | 欧美a性| 在线午夜电影神马影院 | 久久66热这里只有精品 | 欧美大片aaa | 西西4444www大胆视频 | 国产人成看黄久久久久久久久 | 在线va视频 | 欧美日韩一级久久久久久免费看 | 蜜臀av夜夜澡人人爽人人 | 91在线视频免费观看 | 日日精品 | 欧美国产日韩在线视频 | 在线中文字幕播放 | 999久久国精品免费观看网站 | 国产精品久久久久久久久久久久午夜 | 久久免费激情视频 | 349k.cc看片app| 福利电影一区二区 | 手机看片中文字幕 | 中文字幕一区二区三区四区视频 | 亚洲国产日韩在线 | 欧美一区二区三区在线观看 | 香蕉久久国产 | 国产探花在线看 | 国产一二区在线观看 | 国产精品99蜜臀久久不卡二区 | 免费97视频 | 一二区av| 成人av资源站 | 激情在线网站 | 日韩av偷拍 | 国产精品美女久久久久久网站 | 欧美色图狠狠干 | 六月激情 | 欧美激情精品久久久久 | 天天插日日插 | 在线观看 国产 | 国产一级一片免费播放放a 一区二区三区国产欧美 | 九九日韩| 日韩高清激情 | 手机成人av | 国产精品自拍在线 | 国产精品免费人成网站 | 亚洲伊人天堂 | 五月天天在线 | 91插插插免费视频 | 黄色成人毛片 | 国产丝袜制服在线 | 午夜色性片 | 夜色资源站wwwcom | 欧美日韩性视频 | 亚洲欧洲日韩在线观看 | 99热这里只有精品免费 | 久久久国产一区二区三区四区小说 | 婷婷色 亚洲 | 日韩深夜在线观看 | 国产精品亚洲a | 免费国产在线视频 | 久久免费成人网 | 久久五月激情 | 一区二区三区观看 | 99热精品久久 | 中文高清av | 成人毛片在线观看视频 | 97精品国产手机 | 国产精品 9999| 精品国产成人在线影院 | 精品久久久成人 | 成人久久电影 | 国产不卡在线看 | 97精品国产97久久久久久免费 | www.久久99 | 黄色在线网站噜噜噜 | 国产一区二区三区在线免费观看 | 婷婷网在线 | 国产一级精品在线观看 | 亚洲精品国偷自产在线91正片 | 成年人免费在线观看 | 日韩欧美专区 | 六月丁香激情综合 | а天堂中文最新一区二区三区 | 99在线观看免费视频精品观看 | 国产精品一区二区三区免费视频 | 91传媒在线 | 18做爰免费视频网站 | 九色91福利| www天天操| 亚洲一区久久 | 美女网站一区 | 久久精品视频日本 | 五月天婷亚洲天综合网鲁鲁鲁 | 欧美 亚洲 另类 激情 另类 | 97网在线观看 | 免费看的国产视频网站 | 91中文在线观看 | av中文字幕网 | 欧美精品免费一区二区 | 99在线视频播放 | 欧美视频国产视频 | 国产高清视频在线观看 | 国产精品综合在线 | 激情伊人五月天久久综合 | 国偷自产视频一区二区久 | 亚洲国产资源 | 亚洲精品一区二区精华 | 91精品视频免费看 | 成人片在线播放 | 天天天插 | 国产视频一区二区在线观看 | 国产日韩精品在线观看 | 在线观看成人一级片 | 又黄又爽又无遮挡免费的网站 | www.天天色.com | 久久成人在线视频 | 一区二区三区日韩视频在线观看 | 成人小视频免费在线观看 | 国产精品18videosex性欧美 | 欧美一级日韩三级 | 日韩在线第一 | www.av小说| 欧美视频日韩 | 黄av在线| 播五月婷婷 | 西西大胆免费视频 | 黄色在线观看www | 日韩精品在线观看视频 | 午夜91在线| 91成人看片 | 97超碰中文字幕 | 国产精品一区二区免费 | 一区二区三区四区免费视频 | 亚洲一级影院 | 日韩欧美成人网 | 亚洲狠狠操 | 午夜av免费在线观看 | 婷婷久久国产 | 成片视频免费观看 | 久久久久 免费视频 | 国产精品a久久 | 天天色天天射天天综合网 | 亚洲毛片视频 | 亚洲日日射 | 免费在线中文字幕 | 狠狠久久综合 | 国产精品一区二区吃奶在线观看 | 2019免费中文字幕 | 91视频com | 日韩网站在线观看 | 丁香五月亚洲综合在线 | av中文字幕在线观看网站 | 永久av免费在线观看 | 黄色av三级在线 | 五月婷香| 99视屏| 五月天综合激情网 | 日韩二区三区在线 | 日韩精品中文字幕在线 | 天天看天天干 | 91视频高清免费 | 在线视频日韩欧美 | 国产在线永久 | 欧美成人手机版 | 不卡电影一区二区三区 | 日韩欧美综合 | 亚洲成a人片77777kkkk1在线观看 | 丁香五香天综合情 | 日本资源中文字幕在线 | 在线观看免费日韩 | 久久电影国产免费久久电影 | 国产96精品| 久久综合久色欧美综合狠狠 | 午夜精品一二区 | 最近中文字幕完整视频高清1 | 中文国产在线观看 | 中文字幕色网站 | 久久国色夜色精品国产 | 亚洲在线视频免费观看 | 久久久久久久久久网站 | 日本中文不卡 | 黄色一级大片在线观看 | 国产麻豆视频网站 | 色噜噜日韩精品一区二区三区视频 | 伊人官网| www.黄色片网站 | 欧美性大战 | 五月黄色 | 国产日产精品一区二区三区四区的观看方式 | 国产香蕉久久 | 伊人网av| 91精品啪在线观看国产线免费 | 手机在线小视频 | 久久免费黄色大片 | 国产白浆在线观看 | a亚洲视频 | 亚洲成a人片在线观看网站口工 | 亚洲国产网址 | 欧美日韩综合在线 | 欧美综合国产 | 国产精品免费在线视频 | 色综合久久88色综合天天 | 久久免费看毛片 | 日韩影视大全 | 在线播放视频一区 | 五月婷婷综合激情 | 天天综合婷婷 | 免费在线观看av网址 | 亚洲无吗视频在线 | 在线精品视频免费播放 | 欧美99热| 久久免费99精品久久久久久 | 亚洲成人软件 | 成人黄色片免费看 | 国产看片 色 | www视频在线观看 | 99国产精品 | 一区在线观看 | 欧美日韩xx | 激情校园亚洲 | 四虎成人在线 | 三级av免费观看 | 特级西西www44高清大胆图片 | 国产色在线,com | 天天弄天天操 | 国产成人久久精品一区二区三区 | 亚洲作爱 | 天天色视频| 欧美成人aa | 美女免费视频黄 | 午夜精品视频一区 | 久久99免费视频 | 一区二区三区av在线 | 一区二区三区视频网站 | 91在线播放综合 | 日韩一区二区三区免费电影 | 米奇四色影视 | 九色91av| 色五丁香 | 国产精品免费不 | 狠狠干 狠狠操 | 99精品一区 | 狠狠艹夜夜干 | 综合亚洲视频 | 国产成人精品福利 | 午夜在线国产 | 99se视频在线观看 | 国产自产在线视频 | 亚洲一级免费观看 | 免费精品视频在线观看 | 最近日本韩国中文字幕 | 欧美一进一出抽搐大尺度视频 | 久人人 | 中文日韩在线视频 | 日本三级中文字幕在线观看 | 美女在线免费观看视频 | 国产免费高清视频 | 人人爽人人插 | 成人av免费在线看 | 天天操天天爽天天干 | 国产精品大片免费观看 | 国产精品久久久久久一区二区 | 大胆欧美gogo免费视频一二区 | 91 中文字幕| 99久久婷婷国产综合精品 | 99 色 | 亚洲精品午夜久久久久久久 | 成人在线免费观看视视频 | 五月激情久久 | 国产视频日韩 | 久久99精品国产麻豆婷婷 | 久久在线电影 | 欧洲一区二区三区精品 | 中文字幕在线视频免费播放 | 四虎成人免费观看 | 国产麻豆剧传媒免费观看 | 天天干天天干天天射 | 免费婷婷| 久久精品一二三区白丝高潮 | 欧美精品三级 | 国产精品乱码一区二三区 | 在线免费观看黄网站 | 国产精品一区二区久久精品爱微奶 | 成年人免费在线观看网站 | 欧美激情综合色 | 五月婷婷av | 日韩成人精品一区二区 | 亚洲aⅴ一区二区三区 | 久久久久国产精品一区二区 | 狠狠躁日日躁狂躁夜夜躁 | 在线观看www. | 亚洲自拍偷拍色图 | 天天综合网久久综合网 | 亚洲视频h | 精选久久 | 日韩精品一区二区三区电影 | 狂野欧美激情性xxxx | 韩国av永久免费 | 中文字幕色婷婷在线视频 | 日b视频在线观看网址 | 狠狠操导航 | 精品国产乱码久久久久久1区二区 | 黄色网www| 久久99国产一区二区三区 | 国产免费久久av | 懂色av懂色av粉嫩av分享吧 | 久草视频在线资源 | 婷婷六月天综合 | 91精品啪在线观看国产 | 国产一级久久 | 精品国产一区二区三区男人吃奶 | 天天操天天干天天操天天干 | 国产精品区二区三区日本 | 九九精品毛片 | 91丨九色丨丝袜 | 久久综合九色综合97婷婷女人 | 亚洲欧美视频在线播放 | 日韩一区二区免费在线观看 | 黄色av高清 | 91亚洲影院 | 亚洲aⅴ一区二区三区 | 亚洲色图av| 在线免费观看的av网站 | 天天做天天爱天天综合网 | 欧美精品亚洲精品日韩精品 | 亚洲欧美视频在线播放 | 色五月成人| 精品视频在线看 | 婷婷av电影| 精品久久免费看 | 国产精品九色 | 九九日九九操 | 色婷婷亚洲精品 | 色婷婷丁香 | 精品国产电影一区 | 久久9999久久免费精品国产 | 麻豆av一区二区三区在线观看 | 999久久a精品合区久久久 | 日韩影视精品 | 黄色片软件网站 | 丁香花在线观看免费完整版视频 | 午夜精品久久久久久久99 | 国产精品自拍av | 人人爽人人干 | 精品视频专区 | 中文字幕日本特黄aa毛片 | 高清不卡毛片 | 91九色自拍 | 91av亚洲| 日本中文字幕久久 | 午夜精品剧场 | 日韩免费观看高清 | 激情综合色综合久久综合 | 五月天综合激情网 | 中国一级片在线播放 | 亚洲另类视频在线观看 | 51久久夜色精品国产麻豆 | 色人久久| 国产在线永久 | 成人欧美一区二区三区在线观看 | 国产视频精品久久 | 久久综合视频网 | 国产精品一区二区三区电影 | 在线久草视频 | 在线亚洲午夜片av大片 | 成人国产精品电影 | 国产在线精品一区二区 | 亚洲热视频 | 国产一级性生活视频 | 午夜视频在线观看一区 | 99色视频在线 | 中文字幕在线免费 | 婷婷久久网站 | 中文字幕日韩高清 | 日韩精品欧美一区 | 天堂在线视频中文网 | 日本久久成人中文字幕电影 | 国产偷在线 | 日韩精品一区二区免费 | 69精品| 久操视频在线播放 | 福利视频一区二区 | 91免费在线视频 | 欧美日韩午夜在线 | 天天做夜夜做 | 成人永久视频 | 91精品黄色 | 欧美日韩视频在线一区 | 久久a v视频| 天天色播| 国内精品视频在线播放 | 色黄久久久久久 | 午夜色婷婷 | 午夜精品电影 | 成人在线视频论坛 | 激情综合色综合久久综合 | 国产精品一区二区久久 | 国内精品亚洲 | 天天色天天综合 | 91精品综合在线观看 | 日韩黄色中文字幕 | 色综合中文字幕 | 人人玩人人添人人澡超碰 | 91在线区 | 手机看片 | 激情综合国产 | 久久国产品 | 日本三级不卡 | 黄色av免费电影 | 91免费观看视频在线 | 色综合天天天天做夜夜夜夜做 | 1024久久 | 成人久久久久久久久 | 欧美精品亚州精品 | 久久99久久99| 日韩在线三级 | av免费网站 | 开心激情久久 | 欧美一级电影免费观看 | 麻豆视频在线免费 | 天天艹天天 | 亚洲日日夜夜 | 日日爱网站 | 亚洲成人国产精品 | 国产精品一区二区av影院萌芽 | 国产一级在线观看视频 | 久久亚洲视频 | 97在线看 | 日本激情视频中文字幕 | 婷婷成人亚洲综合国产xv88 | 中文字幕av免费观看 | 人人爽人人爽人人爽学生一级 | 久久视频免费在线 | 国产精品欧美一区二区 | 九九免费在线视频 | 成人精品视频 | 亚洲精欧美一区二区精品 | 又黄又爽免费视频 | av成人在线看 | 亚洲黄色免费在线 | 黄色片网站免费 | 国际av在线| 最近日本韩国中文字幕 | 国产又粗又猛又爽又黄的视频免费 | 亚洲一区不卡视频 | 在线免费黄色av | 中文字幕一区二区在线播放 | 亚洲japanese制服美女 | 亚洲午夜精品一区二区三区电影院 | 欧美精品国产综合久久 | 久久精视频 | 香蕉视频在线观看免费 | 免费视频99 | 九九99 | 色综合天天综合 | 欧美日韩亚洲在线观看 | 久久久久草 | 久久久婷| 一级淫片在线观看 | 国产精品18久久久久久首页狼 | 激情av五月婷婷 | 亚洲欧洲视频 | 欧美精品久久久久久久亚洲调教 | 国产成人av一区二区三区在线观看 | 玖操| 国产美女精品视频 | 99亚洲天堂| 亚洲国产精品电影 | 国产精品一区免费在线观看 | 婷婷在线视频观看 | 国产精久久久久久妇女av | 91成人精品视频 | 五月天久久综合网 | 麻豆视频免费在线播放 | 色九九在线 | 一区二区三区福利 | 午夜aaaa| 99久久精品久久久久久清纯 | 国产成人精品一区二区三区福利 | 在线亚洲人成电影网站色www | a级国产片 | 韩国av在线| 婷婷成人亚洲综合国产xv88 | 亚洲免费在线观看视频 | 久草在线视频免费资源观看 | 欧美性生活小视频 | 久久伊99综合婷婷久久伊 | 久久精品导航 | 久久综合狠狠综合久久狠狠色综合 | 毛片久久久 | 色婷婷综合久久久久 | 欧美性生交大片免网 | 亚州人成在线播放 | 亚洲情感电影大片 | 亚洲精欧美一区二区精品 | 午夜婷婷在线观看 | 97人人视频 | 免费看黄的视频 | 婷婷伊人综合 | 一区 在线 影院 | 一区二区中文字幕在线观看 | 婷婷久久综合九色综合 | 成人a v视频 | 欧美精品久久久久a | 国产成人av综合色 | 亚洲日本欧美 | 91香蕉国产在线观看软件 | 国产99久久九九精品 | 国产精品久久伊人 | 波多野结衣精品在线 | 2022久久国产露脸精品国产 | www·22com天天操 | 99视频这里只有 | 美女网站黄免费 | 国产一区二区在线免费 | 日韩在线视频不卡 | 国产淫片免费看 | 久久久久久99精品 | 国产 日韩 中文字幕 | 欧美精品亚洲精品日韩精品 | 五月婷婷视频在线观看 | 久久污视频 | 国产精品国产毛片 | av中文字幕网址 | 日韩欧美视频一区二区三区 | 久久爽久久爽久久av东京爽 | 黄色一级大片在线免费看国产一 | 天天插天天操天天干 | 亚洲国产中文字幕在线 | 麻豆系列在线观看 | 免费欧美精品 | 精品国产乱码久久久久久浪潮 | 五月花丁香婷婷 | 九九热视频在线播放 | 国产精品18久久久久久久久 | 久久色在线播放 | 国产理论一区二区三区 | 91传媒在线看 | 日日夜操| 久久久网站 | 在线观看91网站 | 亚州激情视频 | 国产黄色大片免费看 | 中文字幕免费成人 | 97精品国产97久久久久久春色 | 欧美极度另类性三渗透 | 99国产视频 | 欧美精品乱码久久久久久 | 人人澡人人澡人人 | 国产va精品免费观看 | 麻豆影视在线播放 | 在线91视频 | 久热精品国产 | 欧洲精品一区二区 | 天天爱av导航 | 亚洲精品视 | 欧美激情第一页xxx 午夜性福利 | 久久av不卡 | 亚洲精品玖玖玖av在线看 | 91精品国产综合久久福利 | 久久婷婷色| www.五月天婷婷.com | 超碰精品在线 | 国产精品久久久久aaaa九色 | 亚洲全部视频 | 黄色av影视| 中文字幕一区二区在线观看 | 色综合久久久 | 欧美日韩中字 | 精品国产一区在线观看 | 黄色免费网战 | 国产精品第一页在线 | 成人福利在线 | 热99在线 | 国产精品免费高清 | 韩日av一区二区 | 国产精品无av码在线观看 | 免费看污网站 | 91在线免费视频观看 | 久久久久久久免费观看 | 国产精品 欧美 日韩 | 天天超碰 | 天天射天天干天天 | 亚洲国产精品久久久 | 久草在线视频网站 | 欧美日韩精品国产 | 欧美日韩一区二区三区在线免费观看 | 91欧美精品 | 国产精品原创av片国产免费 | 免费视频a| 久草在线视频中文 | 亚洲精品黄网站 | 久久香蕉国产精品麻豆粉嫩av | 亚洲国产成人在线 | 日韩手机在线 | 国产偷在线 | a√天堂资源 | 国产亚洲综合性久久久影院 | 九九综合久久 | 国产一级高清 | 国产精品麻豆99久久久久久 | av丁香| 久久看片 | 久久久受www免费人成 | 中文字幕在线播放第一页 | 天天干,狠狠干 | 成人小视频在线观看免费 | 免费男女羞羞的视频网站中文字幕 | 就要色综合| 精品电影一区二区 | 国产精品日韩久久久久 | 亚洲国产美女精品久久久久∴ | 在线看91| 亚洲欧洲国产视频 | 手机av在线免费观看 | 久久视频中文字幕 | 91在线播放视频 | 久草免费在线 | 久久久三级视频 | 色婷婷丁香 | 亚洲激情在线观看 | 亚洲精品白浆高清久久久久久 | 成人a v视频 | 久久看毛片 | 成人激情开心网 | 国内精品视频在线播放 | 色资源网在线观看 | 日韩视频在线不卡 | 五月婷色 | 国产真实精品久久二三区 | 久久精品99精品国产香蕉 | 中文字幕av在线电影 | 国产精品国产三级国产aⅴ无密码 | av一级二级 | 日韩精品1区2区 | 69精品| 国产视频69 | 97热视频| av在线一| 欧美日韩国产页 | 精品久久在线 | www.久艹 | 亚洲午夜大片 | 日韩大陆欧美高清视频区 | 美女一二三区 | 精品国产免费一区二区三区五区 | 日韩一二区在线 | 亚洲国产精品成人精品 | 久久久久久综合网天天 | 国产成人不卡 | 国产成人精品一区二三区 | 中文字幕av影院 | 美女网站在线观看 | 欧美在线观看视频免费 | 日韩在线观看一区二区三区 | 国产亚洲久一区二区 | 中文字幕电影一区 | 亚洲精品一区二区三区高潮 | 综合婷婷久久 | 在线观看免费成人av | www.大网伊人| 在线免费黄色片 | 亚洲一级性 | 亚洲视屏一区 | 久草在线中文888 | 99精品一级欧美片免费播放 | 手机色在线 | 国产视频1| 国产精品日韩在线 | 中文永久字幕 | 91精品91 | 97碰碰精品嫩模在线播放 | 亚洲一二三在线 | 91porny九色91啦中文 | 国产精品久久久久久69 | 国产在线免费 | 99欧美精品 | 日韩高清不卡在线 | av女优中文字幕在线观看 | 亚洲欧美视频一区二区三区 | a级国产乱理论片在线观看 特级毛片在线观看 | 成人免费在线观看电影 | 96av在线视频 | 欧美精品在线免费 | 欧美韩国在线 | 一区二区三区在线影院 | 天天操天天爽天天干 | 九九热精| 中文字幕一区二区三区在线播放 | 色综合久久久久综合 | 精品一区二区在线播放 | 久久久999免费视频 日韩网站在线 | 99久久99久久免费精品蜜臀 | 欧美91精品久久久久国产性生爱 | 91夜夜夜| 国产九九九九九 | 九九九热 | 天天操天天色天天射 | 四虎亚洲精品 | 视频在线观看一区 | 激情婷婷综合网 | 成人黄色在线观看视频 | 免费看污污视频的网站 | 国产性xxxx| 欧美日韩国产色综合一二三四 | 毛片1000部免费看 | 久久久国产一区二区 | 97在线视频网站 | 久久伊人精品一区二区三区 | 日韩美精品视频 | 国产精品av免费观看 | 久草在线视频中文 | www.色午夜,com | 亚洲精品视频在线播放 | 波多野结衣一区 | 97精品国产一二三产区 | 国产人成看黄久久久久久久久 | 日韩精品高清视频 | 久久不见久久见免费影院 | 免费在线色视频 | 日韩在线资源 | 97看片吧| 九九综合久久 | 91精品视频导航 | 成人黄大片 | 亚洲国产中文字幕 | 日韩免费一级a毛片在线播放一级 | 国产中文字幕在线视频 | 男女视频久久久 | 91精品视频在线观看免费 | 亚州av成人 | 亚洲午夜精品在线观看 | 欧美一级久久 | 激情视频综合网 | 婷婷久操| 久久线视频 | 国产在线成人 | 在线国产一区二区 | 免费瑟瑟网站 | av三区在线| 成片免费 | 精品一区欧美 | www免费看| 久久这里有 | 国产精品久久久久一区二区 | 在线免费视频a | 欧美日韩精品在线观看视频 | 91伊人影院| 激情久久一区二区三区 | 国产精品成人久久久久 | 9999国产精品| 中文在线字幕免费观看 | 欧美 日韩 成人 | 国产日韩欧美在线影视 | 91麻豆.com| 天天综合成人网 | 亚洲天堂精品视频 | 久久天堂网站 | 五月婷婷色综合 | 久久久久久免费毛片精品 | 国产视频一二区 | 精品在线观看一区二区 | 91超级碰碰 | 日韩视频中文字幕在线观看 | 婷婷色站| 狠狠操综合网 | 久九视频 | 天天操天天操天天操天天操天天操 | japanesexxx乱女另类| 一区二区三区在线观看免费视频 | 在线午夜| 免费黄色av片 | 国产黄色大片 | 成人黄色小说在线观看 | 亚洲国内精品在线 | 91看片在线观看 | 黄色免费大片 | 亚洲精品欧美成人 | 视频在线精品 | 五月婷婷一级片 | 亚洲精品在线播放视频 | 天天爱天天草 | 成人黄在线观看 | 1024手机看片国产 | 中文字幕在线免费观看 | 久久经典国产 | 成人亚洲网 |