溫馨提示×

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

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

RabbitMQ運(yùn)維篇之部署與用戶(hù)管理(一)

發(fā)布時(shí)間:2020-08-01 17:13:04 來(lái)源:網(wǎng)絡(luò) 閱讀:234 作者:wx5c1cfd6e22842 欄目:系統(tǒng)運(yùn)維

一、認(rèn)識(shí)RabbitMQ及用途
Message Queue(MQ)
相對(duì)于一些大點(diǎn)的公司都會(huì)使用這個(gè)MQ,比如像kafka,rabbitmq,activeMQ,rocketMQ主要用于系統(tǒng)與系統(tǒng)之間,或者程序與程序之間進(jìn)行數(shù)據(jù)的傳遞,那么作為消息中間件,我們可以將它作為消息代理服務(wù)器,最主要的就是作用就是系統(tǒng)之間的信息進(jìn)行”結(jié)藕“,MQ是數(shù)據(jù)可靠性的重要保障。

那么說(shuō)起mq的作用之前呢,比如我們以前會(huì)遇到什么問(wèn)題?
RabbitMQ運(yùn)維篇之部署與用戶(hù)管理(一)
1)比如說(shuō)現(xiàn)在我們有兩個(gè)系統(tǒng),一個(gè)系統(tǒng)A,一個(gè)系統(tǒng)B,那么這兩個(gè)系統(tǒng)可以把它理解成一個(gè)訂單系統(tǒng),一個(gè)是后臺(tái)的支付系統(tǒng),那么這兩個(gè)系統(tǒng)之間,你調(diào)用我的,我調(diào)用你的,也就是數(shù)據(jù)之間進(jìn)行一個(gè)相互的傳遞。 那么按照之前的做法來(lái)說(shuō),來(lái)回的傳遞,就出現(xiàn)問(wèn)題了,比如說(shuō),不管是a系統(tǒng)還是b系統(tǒng)中間任何一個(gè)系統(tǒng)出現(xiàn)了問(wèn)題,我們的消息就發(fā)送不出去了,那么像碰到這種情況下,我們就需要額外的去編寫(xiě)一些程序,來(lái)保證我們的消息成功送達(dá),比如說(shuō)增加緩存,增加重試次數(shù),這就需要額外的編碼,這就需要編碼的工作量也是不小的。

2)另外就是數(shù)據(jù)傳遞過(guò)程中,這兩個(gè)系統(tǒng)都是java開(kāi)發(fā)的還好,比如一個(gè)是java開(kāi)發(fā)的一個(gè)是python開(kāi)發(fā)的,那么在這兩個(gè)系統(tǒng)之間進(jìn)行數(shù)據(jù)傳遞的過(guò)程中,那么麻煩就很大了,在這里面平臺(tái)不一樣語(yǔ)言不一樣,進(jìn)行傳遞的接口也不一樣,這在我們無(wú)形中帶來(lái)了很大的問(wèn)題。

3)對(duì)于系統(tǒng)a與系統(tǒng)b之間如果系統(tǒng)出現(xiàn)了問(wèn)題,我們甚至都不知道是什么原因造成的,比如系統(tǒng)a接口變了,導(dǎo)致系統(tǒng)b接收不到哪些,系統(tǒng)b不知道出現(xiàn)哪些問(wèn)題,我們沒(méi)辦法對(duì)問(wèn)題進(jìn)行切全,那么在線上調(diào)試與運(yùn)維的過(guò)程中,這也是一個(gè)必然災(zāi)難性的后果。

綜上所述的話,直接調(diào)用的話稱(chēng)為藕嚴(yán)重的耦合,這兩個(gè)缺了哪一個(gè)都不能正常工作,那么怎么解決呢,這個(gè)時(shí)候就需要mq去解決了。

所以mq叫做消息代理服務(wù)器,可以看到上面的mq的基本架構(gòu)圖系統(tǒng)a與系統(tǒng)b不再直接通信,中間增加了一臺(tái)MQ的消息代理服務(wù)器,所有的消息都往這個(gè)消息代理服務(wù)器上去發(fā)送,那么這個(gè)消息代理服務(wù)器本身來(lái)說(shuō)它具備了一些高可用,高并發(fā)的特性,可以估且的認(rèn)為它是非常穩(wěn)定的,至少比我們開(kāi)發(fā)的系統(tǒng)來(lái)說(shuō)要穩(wěn)定的多的多,不用擔(dān)心當(dāng)機(jī),無(wú)法提供服務(wù),那么在這個(gè)基礎(chǔ)之上,所有的系統(tǒng)把這個(gè)消息放出去,再由這個(gè)消息服務(wù)器,根據(jù)數(shù)據(jù)的情況分別的轉(zhuǎn)發(fā)或者分發(fā)

那么我們數(shù)據(jù)傳遞的目的,那么這么做有這么一個(gè)好處
首先我們系統(tǒng)之間不再進(jìn)行之間的通信,那么它就完成這個(gè)節(jié)藕的工作,它完全面向一個(gè)中間人來(lái)做
其二的話MQ它是一個(gè)國(guó)際的標(biāo)準(zhǔn),它在底層遵循一個(gè)叫做amqp高級(jí)消息隊(duì)列協(xié)議,那么在這個(gè)底層的話因?yàn)樗且粋€(gè)國(guó)際標(biāo)準(zhǔn),因此系統(tǒng)a與系統(tǒng)b,我們不管是什么樣的系統(tǒng)開(kāi)發(fā)的,只要遵循了數(shù)據(jù)傳輸?shù)囊?guī)范,那么就可以在這里面完成通過(guò)mq進(jìn)行數(shù)據(jù)的傳遞,這是數(shù)據(jù)統(tǒng)一的協(xié)議,另外就是數(shù)據(jù)切全的過(guò)程,那么在切全的過(guò)程中,你會(huì)發(fā)現(xiàn),我們估且認(rèn)為mq這是一個(gè)穩(wěn)定的服務(wù)。系統(tǒng)a與系統(tǒng)b進(jìn)行數(shù)據(jù)傳輸,如果系統(tǒng)a把數(shù)據(jù),送到mq里面,那么系統(tǒng)a的任務(wù)就完成了,至于系統(tǒng)b把我們的數(shù)據(jù)拿走,那是系統(tǒng)b的事,那么系統(tǒng)a的事完成了,那么如果真的出現(xiàn)了問(wèn)題,比如運(yùn)維工程師發(fā)現(xiàn)這個(gè)程序沒(méi)有執(zhí)行,那么看著系統(tǒng)a發(fā)送成功了,那么剩下的問(wèn)題就是連帶mq,到系統(tǒng)b這一塊進(jìn)行一個(gè)處理與跟蹤,那么mq并提供強(qiáng)大的圖形化管理頁(yè)面,我們可以輕易的將之前發(fā)送的數(shù)據(jù)進(jìn)行跟蹤與管理。這也是非常的重要

那么說(shuō)到mq,它有這么一個(gè)好的特性,可以總結(jié)一句話,mq解決了在這個(gè)系統(tǒng)之間進(jìn)行數(shù)據(jù)傳遞的耦合性問(wèn)題,使用mq幾乎適用于我們所有的系統(tǒng)調(diào)用或者是分布式項(xiàng)目

二、什么是RabbitMQ?
在我們市場(chǎng)上有各種各樣的mq,但是rabbitmq是全世界最火的開(kāi)源消息代理服務(wù)器,在全世界擁有超過(guò)35000個(gè)項(xiàng)目部署在rabbitmq,用的人多,而且解決一些相關(guān)的問(wèn)題也就很快,這個(gè)rabbit英文翻譯為兔子,這個(gè)也是一個(gè)整個(gè)消息中間件的龍頭老大,也就是我們使用rabbitmq很多的方案不用自己去考慮,因?yàn)槿澜绲墓こ處煻紴檫@個(gè)rabbitmq添磚加瓦,那么這個(gè)rabbitmq的最新版本的是3.8.2
而且rabbitmq支持幾乎所有的操作系統(tǒng)與編程語(yǔ)言,提供了高并發(fā),高可用的成熟方案,支持多種消息協(xié)議,易于部署與使用
官方地址:https://www.rabbitmq.com/

RabbitMQ運(yùn)維篇之部署與用戶(hù)管理(一)
Rabbitmq與其他MQ的對(duì)比
像activemq和kafka都是apache的子成員,而rocketmq是阿里巴巴推行的消息中間件,也是作為一個(gè)apache的子項(xiàng)目
從這張表看出這個(gè)rabbitmq是用的最多的這個(gè)毋庸置疑,一般使用中遇到的問(wèn)題,在它們的論壇以及百度中都可以找到相關(guān)的解決方案,另外就是kafka由于大數(shù)據(jù)的應(yīng)用也比較多,應(yīng)用比較多,逐漸的也已經(jīng)替代了activemq,像rocketmq一般應(yīng)用的都在國(guó)內(nèi)一般比較多,另外都支持這些數(shù)據(jù)保存到磁盤(pán)上,并發(fā)吞吐量就是每秒可以處理多少數(shù)據(jù),在不同的設(shè)計(jì)與不同的背景當(dāng)中,它的結(jié)果也是完全不同的,這里最高的是kafka,因?yàn)槭谴髷?shù)據(jù)的領(lǐng)域,也是因?yàn)楦咝阅芤鹆撕芏啻髷?shù)據(jù)工程師的注意,并發(fā)量在rocketmq中也是極高的,因?yàn)橄耠p十一這么大的并發(fā)量rocket扛住了,它在底層的優(yōu)化也是做的很好的,在并發(fā)吞吐量rabbitmq就稍微遜色一些,rabbitmq在數(shù)據(jù)可靠性的問(wèn)題上做了很大的努力,它保證在這里數(shù)據(jù)是非常可靠的,也是極高的,另外就是生態(tài)完整度,在周邊做了一些相關(guān)的,比如UI或者路由分發(fā)等,用戶(hù)總量也是rabbitmq最多,其次就是kafka,應(yīng)用場(chǎng)景,由于極高的數(shù)據(jù)可靠性,rabbitmq主要用于高可靠的交易系統(tǒng)當(dāng)中,activemq用于一些比較傳統(tǒng)的消息傳遞當(dāng)中,kafka一般使用最多也是使用日志處理大數(shù)據(jù)應(yīng)用這一塊,而rocketmq一般主要用于阿里巴巴內(nèi)部比較多一點(diǎn),像雙十一就是使用的rocketmq,主要適用于互聯(lián)網(wǎng)高并發(fā),高可用這一塊,但是這一塊,在阿里也開(kāi)源了很多的比如dubbo,當(dāng)時(shí)也停止更新了,然后恢復(fù)的,像這一塊我們社區(qū)的完整性和開(kāi)源是極其不利的,像阿里有款分布式數(shù)據(jù)庫(kù)叫OceanBase,由淘寶核心系統(tǒng)研發(fā)部、運(yùn)維、DBA、廣告、應(yīng)用研發(fā)等部門(mén)共同完成。也是對(duì)mysql數(shù)據(jù)庫(kù)底層進(jìn)行了二次開(kāi)發(fā),但是用著用著就閉源了,所以擔(dān)心阿里會(huì)閉源rabbitmq,在國(guó)內(nèi)的開(kāi)源軟件來(lái)說(shuō),現(xiàn)在能做的很好的不是特別多,對(duì)于rocketmq未來(lái)是閉源商用還是繼續(xù)開(kāi)源,那么現(xiàn)在還是屬于一個(gè)觀望的態(tài)度,現(xiàn)在目前看到rocketmq在apache的star是5000多星,只能說(shuō)是中規(guī)中矩。
RabbitMQ運(yùn)維篇之部署與用戶(hù)管理(一)
RabbitMQ的應(yīng)用場(chǎng)景
異構(gòu)系統(tǒng)的數(shù)據(jù)傳遞:什么叫異構(gòu)系統(tǒng),就是現(xiàn)在有兩個(gè)系統(tǒng)彼此要傳遞數(shù)據(jù),一個(gè)用java一個(gè)用c開(kāi)發(fā)的,一¥個(gè)在天津一個(gè)在北京,像這種不在一個(gè)地區(qū)又是不同語(yǔ)言開(kāi)發(fā)的系統(tǒng)叫做異構(gòu)系統(tǒng),像這種異構(gòu)系統(tǒng)利用mq進(jìn)行數(shù)據(jù)的傳遞是不錯(cuò)的選擇,但是遇到海量的數(shù)據(jù),但是不建議使用mq進(jìn)行去傳遞,一般mq擅長(zhǎng)傳遞小規(guī)模的數(shù)據(jù)。

高并發(fā)程序的流量控制:比如像阿里的雙十一進(jìn)行秒殺的時(shí)候或者進(jìn)行系統(tǒng)最忙碌的時(shí)候,進(jìn)行流量控制的時(shí)候,削峰,平谷,像這種應(yīng)用用mq做肯定沒(méi)問(wèn)題,mq是采用對(duì)列的機(jī)制,那么只允許同一時(shí)間有多少人進(jìn)去,那么在這里是使用mq進(jìn)行控制的。

基于p2p,p2ppp的程序:mq本身支持定閱和發(fā)布的模式或者是進(jìn)行點(diǎn)對(duì)點(diǎn)消費(fèi)的模式,比如使用mq進(jìn)行點(diǎn)對(duì)點(diǎn)的開(kāi)發(fā),比如像自己寫(xiě)的qq,像微信,點(diǎn)對(duì)點(diǎn)通信,我們可以使用mq進(jìn)行分發(fā),另外就是p2ppp的程序的話,也非常適合就像我們程序底層的時(shí)候,大家看過(guò)愛(ài)奇藝什么的,那么比如喜歡一個(gè)人的頻道,直接點(diǎn)一下關(guān)注,那么到這個(gè)人節(jié)目有更新的時(shí)候,馬上訂閱的人都能收到它的最新的消息,這就是通過(guò)mq的訂閱與發(fā)布,這些都是mq的天生所在。

分布式系統(tǒng)的事務(wù)一致性TCC:分布式事務(wù)是我們開(kāi)發(fā)過(guò)程中最撓頭的問(wèn)題,比如說(shuō)什么是分布式事務(wù),現(xiàn)在有5個(gè)系統(tǒng),這5個(gè)系統(tǒng)的話要完成大的業(yè)務(wù),那么這個(gè)大的業(yè)務(wù),這5個(gè)系統(tǒng)每一個(gè)系統(tǒng)都完成了一小塊數(shù)據(jù),現(xiàn)在有需求來(lái)了,這5個(gè)系統(tǒng)要么全部都處理成功,要么中間有任何一個(gè)出現(xiàn)問(wèn)題,我要把之前的系統(tǒng)信息全部都回滾什么都沒(méi)做過(guò),那么這就是我們的說(shuō)到的分布式事務(wù),那么分布式事務(wù)底層的話我們的設(shè)計(jì)叫tcc,那么在這里面最核心的就是基于mq進(jìn)行消息的分發(fā),來(lái)通知我們的應(yīng)用,它進(jìn)行提交回滾。

高可靠的交易系統(tǒng):在高可靠的交易系統(tǒng)中,rabbitmq最值得驕傲的是高可靠性,對(duì)于應(yīng)用來(lái)說(shuō)mq本身就是高可靠性,同時(shí)對(duì)數(shù)據(jù)也進(jìn)行了高可靠的支持,幾乎不會(huì)出現(xiàn)數(shù)據(jù)mq的層面上丟失的情況,那么在這種高可靠的交易系統(tǒng)來(lái)說(shuō),rabbitmq最適合不過(guò)了,任何一個(gè)多數(shù)據(jù)進(jìn)行交互的兩個(gè)以上三個(gè)以上項(xiàng)目,進(jìn)行數(shù)據(jù)傳遞用mq作為系統(tǒng)節(jié)藕的服務(wù)器是再合適不過(guò)的。

三、Linux平臺(tái)安裝最新RabbitMQ
RabbitMQ使用Erlang開(kāi)發(fā)
Erlang(['?:l??])是一種通用的面向并發(fā)的編程語(yǔ)言, Erlang是一個(gè)結(jié)構(gòu)化,動(dòng)態(tài)類(lèi)型編程語(yǔ)言,內(nèi)建并行計(jì)算支持。
使用Erlang來(lái)編寫(xiě)分布式應(yīng)用要簡(jiǎn)單的多,Erlang運(yùn)行時(shí)環(huán)境是一個(gè)虛擬機(jī),有點(diǎn)像Java虛擬機(jī),這樣代碼一經(jīng)編譯,同樣可以隨處運(yùn)行。
下載地址:https://www.rabbitmq.com/download.html
直接下載最新的rabbitmq到本地
RabbitMQ運(yùn)維篇之部署與用戶(hù)管理(一)

rabbitmq還需要依賴(lài)erlang的運(yùn)行環(huán)境
https://www.erlang-solutions.com/resources/download.html
選擇centos,找到22.2.5最新的版本下載到本地
RabbitMQ運(yùn)維篇之部署與用戶(hù)管理(一)
[root@zhaocheng ~]# mkdir rabbitmq
[root@zhaocheng rabbitmq]# ls
esl-erlang_22.2.5-2~centos~7_amd64.rpm rabbitmq-server-3.8.2-1.el7.noarch.rpm
--nodeps不檢查依賴(lài),去除依賴(lài)關(guān)系
[root@zhaocheng rabbitmq]# rpm -ivh --nodeps esl-erlang_22.2.5-2~centos~7_amd64.rpm
[root@zhaocheng rabbitmq]# rpm -ivh --nodeps rabbitmq-server-3.8.2-1.el7.noarch.rpm
[root@zhaocheng rabbitmq]# rabbitmq-plugins enable rabbitmq_management
啟動(dòng)控制臺(tái)
[root@zhaocheng rabbitmq]# rabbitmq-server
訪問(wèn)http://ip:15672
RabbitMQ運(yùn)維篇之部署與用戶(hù)管理(一)

登錄的時(shí)候3.3以上的版本都會(huì)出現(xiàn)User can only log in via localhost,是因?yàn)榻故褂胓uest/guest權(quán)限通過(guò)除localhost外的訪問(wèn)
找到這個(gè)文件rabbit.app
vim /usr/lib/rabbitmq/lib/rabbitmq_server-3.7.7/ebin/rabbit.app

將:{loopback_users, [<<”guest”>>]},
改為:{loopback_users, []},

重啟服務(wù)
[root@zhaocheng ~]# rabbitmqctl stop
[root@zhaocheng ~]# rabbitmq-server
登錄:guest
密碼:guest
RabbitMQ運(yùn)維篇之部署與用戶(hù)管理(一)
RabbitMQ常用命令
啟動(dòng)與關(guān)閉
rabbitmq-server 前臺(tái)啟動(dòng)
rabbitmq-server -detached 后臺(tái)啟動(dòng)
rabbitmqctl stop 停止服務(wù)/kill -9 rbbitmq的pid

終止與啟動(dòng)應(yīng)用
rabbitmqctl start_app 啟動(dòng)應(yīng)用
rabbitmqctl stop_app 終止應(yīng)用
就是將我們的應(yīng)用進(jìn)行啟動(dòng)或者終止,這個(gè)不會(huì)對(duì)我們的進(jìn)程產(chǎn)生影響,只是對(duì)我們的隊(duì)列服務(wù)進(jìn)行了暫停,比如像一個(gè)電廠將這個(gè)電廠看作一個(gè)進(jìn)程,比如電廠進(jìn)行升級(jí)改造,需要拉閘,那么相當(dāng)于使用這個(gè)rabbitmqctl stop_app,恢復(fù)的話,使用start_app

用戶(hù)管理
創(chuàng)建一個(gè)用戶(hù),比如叫kubernetes
格式:rabbitmqctl add_user {username} {password}
[root@zhaocheng ~]# rabbitmqctl add_user kubernetes 123456
Adding user "kubernetes" ...
RabbitMQ運(yùn)維篇之部署與用戶(hù)管理(一)
刪除用戶(hù)
rabbitmqctl delete_user {username}

重置密碼,一般的話在部署rabbitmq的時(shí)候進(jìn)行對(duì)guest用戶(hù)進(jìn)行修改密碼,因?yàn)檫@個(gè)權(quán)限是非常大的
[root@zhaocheng ~]# rabbitmqctl change_password guest 123456789
Changing password for user "guest" ...
格式:rabbitmqctl change_password {username} {newpassword}

授予用戶(hù)角色(Tag),在rabbitmq中有四種基本的角色,對(duì)mq有不同的操作權(quán)限,這4種角色統(tǒng)一叫tag,可以針對(duì)我們創(chuàng)建的用戶(hù)給它一定的權(quán)限,這個(gè)tag也就是包含了一定相關(guān)的策略信息。
格式:rabbitmqctl set_user_tags {username} {tag}
[root@zhaocheng ~]# rabbitmqctl set_user_tags kubernetes administrator
Setting tags for user "kubernetes" to [administrator] ...
查看對(duì)我們的kubernetes用戶(hù)設(shè)置了權(quán)限為超級(jí)管理員
RabbitMQ運(yùn)維篇之部署與用戶(hù)管理(一)
設(shè)置用戶(hù)允許訪問(wèn)的vhost:訪問(wèn)的虛擬主機(jī),相當(dāng)于對(duì)應(yīng)mysql中對(duì)應(yīng)的數(shù)據(jù)庫(kù),mysql可以把數(shù)據(jù)放在不同對(duì)應(yīng)的數(shù)據(jù)中,對(duì)數(shù)據(jù)進(jìn)行分類(lèi),那么vhost也是一樣,可以對(duì)不同的系統(tǒng)進(jìn)行設(shè)置不同的虛擬主機(jī),通過(guò)set_permissions規(guī)定哪個(gè)用戶(hù),可以訪問(wèn)哪些虛擬主機(jī),后面的星是能夠執(zhí)行所有的權(quán)限,第一個(gè)是配置權(quán)限,讀權(quán)限,寫(xiě)權(quán)限,-p是虛擬主機(jī)的路徑
格式:rabbitmqctl set_permissions -p / user_admin '.' '.' '.'
給kubernetes用戶(hù)一個(gè)默認(rèn)的虛擬主機(jī)的操作權(quán)限,一般生產(chǎn)環(huán)境中會(huì)創(chuàng)建多個(gè)虛擬主機(jī),進(jìn)行一些相關(guān)的權(quán)限
[root@zhaocheng ~]# rabbitmqctl set_permissions -p / kubernetes '.
' '.' '.'
Setting permissions for user "kubernetes" in vhost "/" ...
可以使用頁(yè)面上直接添加用戶(hù)

RabbitMQ運(yùn)維篇之部署與用戶(hù)管理(一)
rabbitmq用戶(hù)四種tag
超級(jí)管理員(administrator):也就是進(jìn)行對(duì)所有的用戶(hù)進(jìn)行管理
可登陸管理控制臺(tái)(啟用management plugin的情況下),可查看所有 的信息,并且可以對(duì)用戶(hù),策略(policy)進(jìn)行操作。

監(jiān)控者(monitoring):可以查看rabbitmq節(jié)點(diǎn)的相關(guān)信息,是管理我們運(yùn)行節(jié)點(diǎn)的運(yùn)行狀態(tài)的
登陸管理控制臺(tái)(啟用management plugin的情況下),同時(shí)可以查看
rabbitmq節(jié)點(diǎn)的相關(guān)信息(進(jìn)程數(shù),內(nèi)存使用情況,磁盤(pán)使用情況等)

策略制定者(policymaker):這個(gè)就無(wú)法查看我們節(jié)點(diǎn)的相關(guān)信息,但是可以進(jìn)行一些策略的定制,比如在管理集群的時(shí)候,哪些隊(duì)列可以進(jìn)行復(fù)制,或者運(yùn)行的規(guī)則,規(guī)定了我們的節(jié)點(diǎn)是怎么運(yùn)行的
可登陸管理控制臺(tái)(啟用management plugin的情況下), 同時(shí)可以對(duì)
policy進(jìn)行管理。但無(wú)法查看節(jié)點(diǎn)的相關(guān)信息(上圖紅框標(biāo)識(shí)的部分)。

普通管理者(management)
僅可登陸管理控制臺(tái)(啟用management plugin的情況下),無(wú)法看到 節(jié)點(diǎn)信息,也無(wú)法對(duì)策略進(jìn)行管理。

還有一個(gè)就是什么都沒(méi)寫(xiě)的時(shí)候,沒(méi)有角色,連控制臺(tái)都無(wú)法登錄

向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