溫馨提示×

您好,登錄后才能下訂單哦!

密碼登錄×
登錄注冊(cè)×
其他方式登錄
點(diǎn)擊 登錄注冊(cè) 即表示同意《億速云用戶服務(wù)條款》

低代碼應(yīng)用在TSF實(shí)現(xiàn)服務(wù)治理的解決方案是什么

發(fā)布時(shí)間:2021-12-06 15:06:54 來(lái)源:億速云 閱讀:139 作者:柒染 欄目:云計(jì)算

低代碼應(yīng)用在TSF實(shí)現(xiàn)服務(wù)治理的解決方案是什么,針對(duì)這個(gè)問(wèn)題,這篇文章詳細(xì)介紹了相對(duì)應(yīng)的分析和解答,希望可以幫助更多想解決這個(gè)問(wèn)題的小伙伴找到更簡(jiǎn)單易行的方法。

01
業(yè)務(wù)場(chǎng)景

當(dāng)企業(yè)有大型應(yīng)用需要拆分成多個(gè)微服務(wù)的需求時(shí),Mendix在不依賴任何云平臺(tái),如Mendix Cloud、Openshift、K8S等情況下,無(wú)法滿足服務(wù)治理所有的功能,對(duì)于Private Cloud環(huán)境的運(yùn)行更是如此。即便是在開源的上如K8S、Openshift、Mesos、Rancher、Docker-swarm容器平臺(tái)等也不具備較強(qiáng)的服務(wù)治理能力。對(duì)于代碼侵入式較高的服務(wù)治理框架,SpringCloud、Dubbo等對(duì)于Mendix應(yīng)用的開發(fā)難度較高(對(duì)于Mendix應(yīng)用目前可以通過(guò)javaAction方式自定義代碼,對(duì)于Springcloud,自定義代碼的權(quán)限遠(yuǎn)遠(yuǎn)不夠),固不適用;而對(duì)于專業(yè)的無(wú)代碼侵入式Service Mesh服務(wù)治理框架,如Istio,Linkerd、Nginmesh、Maistra等卻需要有專業(yè)的團(tuán)隊(duì)去維護(hù), 時(shí)間成本,運(yùn)維成本都大大增加項(xiàng)目預(yù)算,因此在Private Cloud環(huán)境下需要一套快速實(shí)現(xiàn)服務(wù)治理的一套解決方案。


擁有可以用低代碼的方式創(chuàng)建一個(gè)基于微服務(wù)集群的大型企業(yè)級(jí)應(yīng)用,幫助企業(yè)快速應(yīng)用最新的互聯(lián)網(wǎng)技術(shù),加速企業(yè)創(chuàng)新更好的支持敏捷快速迭代開發(fā),提升整體IT管理能力。

02      
  應(yīng)用范圍

使用騰訊云微服務(wù)平臺(tái)TSF來(lái)實(shí)現(xiàn)Mendix應(yīng)用之間的服務(wù)治理。


如服務(wù)路由、服務(wù)限流、服務(wù)鑒權(quán)規(guī)則。用戶可以通過(guò)配置、權(quán)重標(biāo)簽的形式進(jìn)行細(xì)粒度的流量控制,實(shí)現(xiàn)灰度發(fā)布、就近路由、流量限制、訪問(wèn)權(quán)限控制等功能 。



03      
  TSF服務(wù)治理能力

Mesh 微服務(wù)平臺(tái)(Tencent Service Mesh Framework,簡(jiǎn)稱 TSF Mesh),基于 Service Mesh 的理念,為應(yīng)用提供服務(wù)自動(dòng)注冊(cè)與發(fā)現(xiàn)、服務(wù)路由、鑒權(quán)、限流、熔斷等服務(wù)治理能力,且應(yīng)用無(wú)需對(duì)源代碼進(jìn)行侵入式改造,即可與該服務(wù)框架進(jìn)行集成。了解TSF Mesh更多信息點(diǎn)擊此處請(qǐng)查看《騰訊云中間件團(tuán)隊(duì)在Service Mesh中的實(shí)踐與探索》。


通過(guò)騰訊云的TSF微服務(wù)平臺(tái),提供Mendix開發(fā)的微服務(wù)之間治理的解決方案。  
  • 服務(wù)      線上管理      ,實(shí)現(xiàn)      服務(wù)可視化全生命周期管理。
  • 業(yè)務(wù)自定義標(biāo)簽,應(yīng)用于用戶自定義服務(wù)鑒權(quán)與服務(wù)路由規(guī)則。
  • API列表與調(diào)試,方便用戶API接口信息查看及遠(yuǎn)程調(diào)試。
  •  服務(wù)統(tǒng)計(jì),提供服務(wù)運(yùn)營(yíng)監(jiān)控?cái)?shù)據(jù),用于快速定位服務(wù)異常,發(fā)現(xiàn)系統(tǒng)瓶頸。
  • 服務(wù)鑒權(quán),防止服務(wù)非法調(diào)用。
  • 服務(wù)限流 ,保護(hù)自身服務(wù),防止流量擊穿導(dǎo)致系統(tǒng)異常。
  • 服務(wù)路由,灰度發(fā)布,金絲雀發(fā)布,藍(lán)綠發(fā)布。
  • 服務(wù)熔斷,當(dāng)下游的服務(wù)因?yàn)槟撤N原因?qū)е路?wù)不可用或響應(yīng)過(guò)慢時(shí),上游服務(wù)為了保證自己整體服務(wù)的可用性,不再      繼續(xù)調(diào)用目標(biāo)服務(wù),直接返回。      當(dāng)下游服務(wù)恢復(fù)后,上游服務(wù)會(huì)恢復(fù)調(diào)用。
  • 日志告警,快速發(fā)現(xiàn)系統(tǒng)異      常。
  • 實(shí)時(shí)日志,檢測(cè)服務(wù)啟動(dòng)日志。
  • 日志檢索,快速發(fā)現(xiàn)系統(tǒng)異常。
  • 服務(wù)依賴拓?fù)?,展示?yīng)用服務(wù)全景圖,用于快速定位服務(wù)異常,發(fā)現(xiàn)系統(tǒng)瓶頸。
  •      調(diào)用鏈查詢及詳情,以接口維度      快速定位服務(wù)異常,發(fā)現(xiàn)系統(tǒng)瓶頸。      彈性伸縮,保障服務(wù)高可用,減少人工操作,節(jié)約系統(tǒng)資源。
  • 全鏈路灰度發(fā)布。
  • 分布式事務(wù),跨多個(gè)庫(kù)數(shù)據(jù)一致性保障。
  •      微服務(wù)網(wǎng)關(guān),全局服務(wù)的鑒權(quán),服務(wù)路由,服務(wù)管理。

 
04    
準(zhǔn)備工作
 
為了順利完成本次實(shí)踐,您需要提前做好 以 下TSF的相關(guān) 準(zhǔn) 備工作 :  
  • 登錄騰訊云控制臺(tái),注冊(cè)并實(shí)名認(rèn)證后,登錄騰訊云賬號(hào):
    https://cloud.tencent.com。
  • 確認(rèn)騰訊云賬戶余額大于100元。
  • 若使用主賬號(hào)進(jìn)行登錄,則默認(rèn)已有所有資源的訪問(wèn)權(quán)限;若使用子賬號(hào)進(jìn)行登錄,則需要提前授予相關(guān)權(quán)限,可前往下面鏈接查看如何使用CAM策略進(jìn)行授權(quán):
    https://cloud.tencent.com/document/product/598/10600。
  •  一臺(tái)可以訪問(wèn)公網(wǎng)的機(jī)器(可在騰訊云CVM頁(yè)面進(jìn)行購(gòu)買),用于上傳Mendix應(yīng)用鏡像。
  •  容器服務(wù)TKE。

 
05    
Mendix鏡像構(gòu)建      

1. 通過(guò)Mendix Studio Pro 開發(fā)的多個(gè)微服務(wù)  

如ilink.mpk、native.mpk項(xiàng)目包,兩者相互調(diào)用彼此提供的服務(wù)。

傳統(tǒng)的Rest API調(diào)用:http://ip:port


低代碼應(yīng)用在TSF實(shí)現(xiàn)服務(wù)治理的解決方案是什么  


改造后的Rest API調(diào)用, http://service-name/,使用服務(wù)名字實(shí)現(xiàn)服務(wù)之間的相互調(diào)用。


低代碼應(yīng)用在TSF實(shí)現(xiàn)服務(wù)治理的解決方案是什么  

 2. 構(gòu)建鏡像

(1)下載相關(guān)的腳本文件


git clone https://github.com/mendix/docker-mendix-buildpack.git
 


(2)文件目錄結(jié)構(gòu)


├── Dockerfile

├── Dockerfile.rootfs.bionic

├── Dockerfile.rootfs.trusty

├── LICENSE

├── Makefile

├── README.md

├── scripts

│ ├── cleanupjdk

│ ├── compilation

│ ├── git

│ ├── startup

│ └── vcap_application.json

└── tests

    ├── docker-compose-azuresql.yml

    ├── docker-compose-k8s.yml

    ├── docker-compose-mysql.yml

    ├── docker-compose-postgres.yml

    ├── docker-compose-sqlserver.yml

    ├── stop.sh

└── test-generic.sh
 


(3)將開發(fā)好的MPK包放到與docker-mendix-buildpack同級(jí)目錄

低代碼應(yīng)用在TSF實(shí)現(xiàn)服務(wù)治理的解決方案是什么  

ilink.mpk和native.mpk為Mendix所開發(fā)的兩個(gè)微服務(wù)。docker-mendix-buildpack-ilink和docker-mendix-buildpack-native是這兩個(gè)app鏡像構(gòu)建,容器部署相關(guān)的腳本,主要文件包括Dockerfile、Makefile、startup啟動(dòng)文件。


(4)Makefile文件修改

修改前:  
低代碼應(yīng)用在TSF實(shí)現(xiàn)服務(wù)治理的解決方案是什么  
修改后:    
低代碼應(yīng)用在TSF實(shí)現(xiàn)服務(wù)治理的解決方案是什么  
(5)創(chuàng)建nativeService.tar.gz文件,內(nèi)容如下:    
文件目錄:
 
├── apis

│ └── native.yaml

├── logs

└── spec.yaml
 


##Spec.yaml文件主要是定義服務(wù)及健康檢查相關(guān)的內(nèi)容:
apiVersion: v1
kind: Application
spec:
  services:
    - name: native
      ports:
        - targetPort: 8080
          protocol: http
      healthCheck:
        path: /
##native.yaml主要定義相關(guān)的api,不做強(qiáng)求,內(nèi)容如下:

openapi: 3.0.0
info:
  version: "1.0.0"
  title: native service
paths:
  /api/v6/user/create:
    get:
      responses:
        '200':
           description: OK
        '401':
           description: Unauthorized
        '402':
           description: Forbidden
        '403':
           description: Not Found
  /api/v6/user/account/query:
    get:
      responses:
        '200':
           description: OK
        '401':
           description: Unauthorized
        '402':
           description: Forbidden
        '403':
           description: Not Found
  /health:
    get:
      responses:
        '200':
           description: OK
        '401':
           description: Unauthorized
        '402':
           description: Forbidden
        '403':
           description: Not Found
 


nativeService.tar.gz文件所處的位置如下所示:

低代碼應(yīng)用在TSF實(shí)現(xiàn)服務(wù)治理的解決方案是什么  
(6)同理創(chuàng)建ilinkService.tar.gz文件,內(nèi)容如下  

文件目錄:

├── apis

│ └── native.yaml

├── logs

└── spec.yaml
 


##Spec.yaml文件主要是定義服務(wù)及健康檢查相關(guān)的內(nèi)容:
apiVersion: v1
kind: Application
spec:
  services:
    - name: ilink
      ports:
        - targetPort: 8080
          protocol: http
      healthCheck:
        path: /
 

(7)修改Dockerfile文件

修改后的內(nèi)容如下:

低代碼應(yīng)用在TSF實(shí)現(xiàn)服務(wù)治理的解決方案是什么  
低代碼應(yīng)用在TSF實(shí)現(xiàn)服務(wù)治理的解決方案是什么  

(8)修改script目錄下的startup文件

在末尾添加內(nèi)容:    
os.system('mkdir -p /opt/tsf/app_config/apis')
os.system('cp /opt/app/nativeService/spec.yaml /opt/tsf/app_config/')
os.system('cp -r /opt/app/nativeService/apis /opt/tsf/app_config/')
 
低代碼應(yīng)用在TSF實(shí)現(xiàn)服務(wù)治理的解決方案是什么  

(9)鏡像構(gòu)建

##make get-sample 相當(dāng)于解壓文件到build文件夾
##make build-image 構(gòu)建鏡像并指定相應(yīng)的鏡像的tag
 
低代碼應(yīng)用在TSF實(shí)現(xiàn)服務(wù)治理的解決方案是什么  
需要關(guān)注dockerfile修改的文件內(nèi)容  
低代碼應(yīng)用在TSF實(shí)現(xiàn)服務(wù)治理的解決方案是什么  

當(dāng)出現(xiàn)以下內(nèi)容則構(gòu)建成功

低代碼應(yīng)用在TSF實(shí)現(xiàn)服務(wù)治理的解決方案是什么  

3. 騰訊云鏡像倉(cāng)庫(kù)功能存儲(chǔ)構(gòu)建的鏡像

使用說(shuō)明: 
https://cloud.tencent.com/document/product/457/9118

 

低代碼應(yīng)用在TSF實(shí)現(xiàn)服務(wù)治理的解決方案是什么  
低代碼應(yīng)用在TSF實(shí)現(xiàn)服務(wù)治理的解決方案是什么  


將本地構(gòu)建的鏡像包上傳到鏡像倉(cāng)庫(kù):  
低代碼應(yīng)用在TSF實(shí)現(xiàn)服務(wù)治理的解決方案是什么  


06      
騰訊微服務(wù)平臺(tái)      



 
1. 創(chuàng)建2臺(tái)微服務(wù)云服務(wù)器
 

(1)具體的創(chuàng)建過(guò)程請(qǐng)參考:https://cloud.tencent.com/document/product/213/2936

低代碼應(yīng)用在TSF實(shí)現(xiàn)服務(wù)治理的解決方案是什么  
(2)設(shè)置安全組    
低代碼應(yīng)用在TSF實(shí)現(xiàn)服務(wù)治理的解決方案是什么  

(3)添加相應(yīng)的安全規(guī)則

低代碼應(yīng)用在TSF實(shí)現(xiàn)服務(wù)治理的解決方案是什么  


參考:

https://cloud.tencent.com/document/product/213/12452  
2. 登陸微服務(wù)平臺(tái)    

(1)打開控制面板,搜索TSF

低代碼應(yīng)用在TSF實(shí)現(xiàn)服務(wù)治理的解決方案是什么  

(2)進(jìn)入騰訊微服務(wù)平臺(tái)TSF

低代碼應(yīng)用在TSF實(shí)現(xiàn)服務(wù)治理的解決方案是什么  
3. 新建集群  
(1)新建集群, 該 容器集 群 是利用了騰訊云的容器服務(wù)TKE平臺(tái)。  


低代碼應(yīng)用在TSF實(shí)現(xiàn)服務(wù)治理的解決方案是什么  

(2)導(dǎo)入云主機(jī),以下是已經(jīng)綁定過(guò)的,選擇之間創(chuàng)建好的2臺(tái)云服務(wù)器即可。

低代碼應(yīng)用在TSF實(shí)現(xiàn)服務(wù)治理的解決方案是什么  

(3)集群信息如下圖所示,包括兩臺(tái)云主機(jī):

低代碼應(yīng)用在TSF實(shí)現(xiàn)服務(wù)治理的解決方案是什么  



 
4. 新建應(yīng)用  

 
低代碼應(yīng)用在TSF實(shí)現(xiàn)服務(wù)治理的解決方案是什么  
低代碼應(yīng)用在TSF實(shí)現(xiàn)服務(wù)治理的解決方案是什么  

同理

低代碼應(yīng)用在TSF實(shí)現(xiàn)服務(wù)治理的解決方案是什么  

 
5. 新建日志配置項(xiàng)  
低代碼應(yīng)用在TSF實(shí)現(xiàn)服務(wù)治理的解決方案是什么  
6. 配置

 
(1)編輯配置信息。  

 
低代碼應(yīng)用在TSF實(shí)現(xiàn)服務(wù)治理的解決方案是什么  

(2)添加發(fā)布規(guī)則

低代碼應(yīng)用在TSF實(shí)現(xiàn)服務(wù)治理的解決方案是什么  

 
7. 新建部署組  
低代碼應(yīng)用在TSF實(shí)現(xiàn)服務(wù)治理的解決方案是什么  

(1)新建部署,編輯相關(guān)信息:

低代碼應(yīng)用在TSF實(shí)現(xiàn)服務(wù)治理的解決方案是什么  
低代碼應(yīng)用在TSF實(shí)現(xiàn)服務(wù)治理的解決方案是什么  
(2)在保存下一步之前需要檢測(cè)是否有足夠的資源。 同理創(chuàng)建另外一個(gè)mendix-ilink。 創(chuàng)建完成,如下圖所示:  
低代碼應(yīng)用在TSF實(shí)現(xiàn)服務(wù)治理的解決方案是什么  

8. 創(chuàng)建后端數(shù)據(jù)庫(kù)服務(wù)

(1)打開容器服務(wù)平臺(tái)

低代碼應(yīng)用在TSF實(shí)現(xiàn)服務(wù)治理的解決方案是什么  

(2)可以看到剛才在微服務(wù)平臺(tái)創(chuàng)建好的集群,點(diǎn)擊集群id

低代碼應(yīng)用在TSF實(shí)現(xiàn)服務(wù)治理的解決方案是什么  
(3)新建Deployment  
低代碼應(yīng)用在TSF實(shí)現(xiàn)服務(wù)治理的解決方案是什么  
MYSQL_USER=mendix
MYSQL_PASSWORD=mendix
MYSQL_DATABASE=mendix
MYSQL_ROOT_PASSWORD=root
 


低代碼應(yīng)用在TSF實(shí)現(xiàn)服務(wù)治理的解決方案是什么  
 
低代碼應(yīng)用在TSF實(shí)現(xiàn)服務(wù)治理的解決方案是什么  
低代碼應(yīng)用在TSF實(shí)現(xiàn)服務(wù)治理的解決方案是什么  
(4)創(chuàng)建好的mysql數(shù)據(jù)庫(kù)服務(wù)  
低代碼應(yīng)用在TSF實(shí)現(xiàn)服務(wù)治理的解決方案是什么  

(5)Pod管理

低代碼應(yīng)用在TSF實(shí)現(xiàn)服務(wù)治理的解決方案是什么  

(6)為mysql再創(chuàng)建一個(gè)數(shù)據(jù)庫(kù)實(shí)例

低代碼應(yīng)用在TSF實(shí)現(xiàn)服務(wù)治理的解決方案是什么  
低代碼應(yīng)用在TSF實(shí)現(xiàn)服務(wù)治理的解決方案是什么  
低代碼應(yīng)用在TSF實(shí)現(xiàn)服務(wù)治理的解決方案是什么  


create  database  mxIlink;
GRANT ALL ON *.* TO 'mendix'@'%';
flush privileges ;
 

9. 為微服務(wù)應(yīng)用添加環(huán)境變量

(1)編輯yaml文件

低代碼應(yīng)用在TSF實(shí)現(xiàn)服務(wù)治理的解決方案是什么  

為其中一個(gè)添加內(nèi)容:

低代碼應(yīng)用在TSF實(shí)現(xiàn)服務(wù)治理的解決方案是什么  


- name: ADMIN_PASSWORD
   value: Password1!
 - name: DATABASE_URL
    value: mysql://mendix:mendix@ilink-mysql:3306/mendix
##另外一個(gè)添加內(nèi)容:
- name: ADMIN_PASSWORD
   value: Password1!
 - name: DATABASE_URL
    value: mysql://mendix:mendix@ilink-mysql:3306/mxIlink
##兩者數(shù)據(jù)庫(kù)實(shí)例不同即可
 

(2)當(dāng)pod的數(shù)量和期望一致時(shí),則應(yīng)用部署完成

低代碼應(yīng)用在TSF實(shí)現(xiàn)服務(wù)治理的解決方案是什么  

 
07    
服務(wù)驗(yàn)證
     

     

     

 
由于之前我們?cè)O(shè)置主機(jī)端口的形式訪問(wèn)應(yīng)用,兩個(gè)應(yīng)用的端口對(duì)外分別為   30080、30089,通過(guò)任一臺(tái)云服務(wù)器即可訪問(wèn)。  
將新建的Task通過(guò)Rest 形式POST到另外一個(gè)微服務(wù),GET會(huì)從另外一個(gè)微服務(wù)獲取發(fā)送的數(shù)據(jù),如下所示:  
低代碼應(yīng)用在TSF實(shí)現(xiàn)服務(wù)治理的解決方案是什么  


另外一個(gè)微服務(wù)平臺(tái)接收到的Task數(shù)據(jù)

低代碼應(yīng)用在TSF實(shí)現(xiàn)服務(wù)治理的解決方案是什么  

在構(gòu)建鏡像的時(shí)候提到了Rest API,傳統(tǒng)的方式是ip+port,現(xiàn)在可以直接使用service-name的方式調(diào)用。傳統(tǒng)方式:

低代碼應(yīng)用在TSF實(shí)現(xiàn)服務(wù)治理的解決方案是什么  

現(xiàn)在的方式:

低代碼應(yīng)用在TSF實(shí)現(xiàn)服務(wù)治理的解決方案是什么  

同理相互調(diào)用。TSF提供服務(wù)注冊(cè)、服務(wù)發(fā)現(xiàn)等服務(wù)治理相關(guān)的功能。

低代碼應(yīng)用在TSF實(shí)現(xiàn)服務(wù)治理的解決方案是什么  

 
08    
微服務(wù)服務(wù)治理
     

     

     

 

 
1. 服務(wù)治理查詢  

 
低代碼應(yīng)用在TSF實(shí)現(xiàn)服務(wù)治理的解決方案是什么  

目前我們部署的服務(wù)都是一個(gè)實(shí)例,可通過(guò)容器服務(wù)平臺(tái)進(jìn)行彈性伸縮。

低代碼應(yīng)用在TSF實(shí)現(xiàn)服務(wù)治理的解決方案是什么  

 
2. 服務(wù)依賴拓?fù)?/strong>
低代碼應(yīng)用在TSF實(shí)現(xiàn)服務(wù)治理的解決方案是什么  


兩個(gè)服務(wù)之間相互調(diào)用相關(guān)的依賴關(guān)系如上圖所示。 調(diào) 用概覽圖如下圖所示:  
低代碼應(yīng)用在TSF實(shí)現(xiàn)服務(wù)治理的解決方案是什么  
低代碼應(yīng)用在TSF實(shí)現(xiàn)服務(wù)治理的解決方案是什么  
低代碼應(yīng)用在TSF實(shí)現(xiàn)服務(wù)治理的解決方案是什么  
3.     
調(diào)用鏈查詢    
低代碼應(yīng)用在TSF實(shí)現(xiàn)服務(wù)治理的解決方案是什么  

TraceId追蹤

低代碼應(yīng)用在TSF實(shí)現(xiàn)服務(wù)治理的解決方案是什么  
低代碼應(yīng)用在TSF實(shí)現(xiàn)服務(wù)治理的解決方案是什么  

   
4. 服務(wù)監(jiān)控
低代碼應(yīng)用在TSF實(shí)現(xiàn)服務(wù)治理的解決方案是什么  

服務(wù)健康狀況:

低代碼應(yīng)用在TSF實(shí)現(xiàn)服務(wù)治理的解決方案是什么  

 延時(shí)狀態(tài)碼統(tǒng)計(jì):

低代碼應(yīng)用在TSF實(shí)現(xiàn)服務(wù)治理的解決方案是什么  
5. 日志服務(wù)


由于之前已經(jīng)創(chuàng)建了日志配置項(xiàng),因此可以通過(guò)TSF的日志服務(wù)可以對(duì)日志進(jìn)行檢索。

低代碼應(yīng)用在TSF實(shí)現(xiàn)服務(wù)治理的解決方案是什么  


通過(guò)通過(guò)多種查詢方式如基本查詢、Lucene語(yǔ)法、正則表達(dá)式。如下所示:

低代碼應(yīng)用在TSF實(shí)現(xiàn)服務(wù)治理的解決方案是什么  
低代碼應(yīng)用在TSF實(shí)現(xiàn)服務(wù)治理的解決方案是什么

關(guān)于低代碼應(yīng)用在TSF實(shí)現(xiàn)服務(wù)治理的解決方案是什么問(wèn)題的解答就分享到這里了,希望以上內(nèi)容可以對(duì)大家有一定的幫助,如果你還有很多疑惑沒(méi)有解開,可以關(guān)注億速云行業(yè)資訊頻道了解更多相關(guān)知識(shí)。

向AI問(wèn)一下細(xì)節(jié)

免責(zé)聲明:本站發(fā)布的內(nèi)容(圖片、視頻和文字)以原創(chuàng)、轉(zhuǎn)載和分享為主,文章觀點(diǎn)不代表本網(wǎng)站立場(chǎng),如果涉及侵權(quán)請(qǐng)聯(lián)系站長(zhǎng)郵箱:is@yisu.com進(jìn)行舉報(bào),并提供相關(guān)證據(jù),一經(jīng)查實(shí),將立刻刪除涉嫌侵權(quán)內(nèi)容。

AI